TroubleShoot FMinSearch with subscript assignment mismatch
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
Eric Diaz
el 15 de En. de 2016
Comentada: Eric Diaz
el 15 de En. de 2016
I keep getting the following error:
Subscripted assignment dimension mismatch.
Error in fminsearch (line 190)
fv(:,1) = funfcn(x,varargin{:})
when I try to run the following optimization
objective = @(p) log(besseli(0,(((p(1)*exp(-xData/p(2))).*yData)./Variance),1)) - (((p(1)*exp(-xData/p(2))).^2) ./ (2.*Variance));
% unconstrained nonlinear optimization
parEst = fminsearch(objective,p0);
p0 is [1,2]. Variance is a predefined scalar. xData and yData are both [1,8].
Please help me as I have tried reading the help documents for fminsearch and for anonymous functions, but can't figure it out.
0 comentarios
Respuesta aceptada
Torsten
el 15 de En. de 2016
A scalar must be returned to fminsearch from "objective" ; you return a vector.
Best wishes
Torsten.
3 comentarios
Torsten
el 15 de En. de 2016
You will have to supply the sum of squared differences of your model expression and your experimental data. But I must admit, since your function involves both xtata and ydata, I don't know what is yi_model and what is yi_experiment.
Best wishes
Torsten.
Más respuestas (1)
John D'Errico
el 15 de En. de 2016
This happens over and over again. fminsearch is an OPTIMIZER. It does not do nonlinear regression. There is a difference.
An optimizer finds the minimum value of a general function of multiple parameters. So a SCALAR valued function of one or more variables.
A nonlinear regression can be turned into an optimization by forming the sum of squares of residuals, and minimizing that as an objective.
But if you just throw a vector into a tool like fminsearch, expect it to fail. fminsearch has no idea what you want to do. Computers cannot read your mind.
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!