I want to minimize a cost function using Fmincon. My goal is to minimize "obj" such that my model has the best fit to the experimental data.
C = importdata('Experiment6.txt')S = C(:,1); % Column 84x1; experimental data
L = C(:,2); % Column 84x1; experimental dataF = C(:,3); % Column 84x1; experimental dataMEdp = 0; % Fixed
MEp = 196; % FixedE = ones(1,11); % Initial guess (Xo)
t = logspace(-4, 1,11); % Fixed vector
Eoptimized = fmincon(@objective, E, [],[])function obj = objective(E, MEdp, t, MEp, F, L, S) % Calculate model, returns 84x1 columns
for i = 1:length(t) MEp = MEp + ( E(i) * t(i).^2 * F.^2) ./ ( 1 + ( t(i)^2 * F.^2) ); MEdp = MEdp + ( E(i) * t(i)* F) ./ ( 1 + ( t(i)^2 * F.^2) ); end % Cost function
obj = sum ( ( ( (L - MEdp) -1 ).^2 ) + ( ( (S - MEp) -1 ) .^2 ) ); end
Objection returns a single value. I want to have E returned as an optimized vector. However, when I try to run the the code it states that it does not have enough input arguments.
% Without this code the function works propely:
Eoptimized = fmincon(@objective, E, [],[])
The following error message appears:
Not enough input arguments.Error in DiscreteSpectrum>objective(line 264) for i = 1:length(t)Error in fmincon (line 552) initVals.f = feval(funfcn{3},X,varargin{:});Error in DiscreteSpectrum (line 244)Eoptimized = fmincon(@objective, E, [], []);Caused by: Failure in initial objective function evaluation. FMINCON cannot continue.
Best Answer