TroubleShoot FMinSearch with subscript assignment mismatch
1 回表示 (過去 30 日間)
古いコメントを表示
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 件のコメント
採用された回答
Torsten
2016 年 1 月 15 日
A scalar must be returned to fminsearch from "objective" ; you return a vector.
Best wishes
Torsten.
3 件のコメント
Torsten
2016 年 1 月 15 日
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.
その他の回答 (1 件)
John D'Errico
2016 年 1 月 15 日
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.
参考
カテゴリ
Help Center および File Exchange で Surrogate Optimization についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!