フィルターのクリア

using fminsearch with matrices

12 ビュー (過去 30 日間)
alex
alex 2012 年 4 月 17 日
hi. I am trying to find a minimum value for the next argument-
sum(Y1-x(1)*exp(-((m_mat-x(2))^2+(n_mat-x(3))^2)/(2*sigmasq)))
when Y1,m_mat,n_mat,sigmasq are all known matrices in size of 11*11
how should I write it so it woulfd work? because for now the matlab writes an error of "Subscripted assignment dimension mismatch." ?
  1 件のコメント
Sean de Wolski
Sean de Wolski 2012 年 4 月 17 日
This isn't really clear. You have to formulate the above to take an input argument and return a scalar while will be this value. FMINSEARCH will then minimize this scalar by changing the input. Please clarify the question and post the code.

サインインしてコメントする。

採用された回答

Sargondjani
Sargondjani 2012 年 4 月 17 日
yep sean is right: your objective function should return a scaler if you want to use fminsearch. anyway, this is how you would do it, IF you have function that returns a scalar and x(1),x(2) and x(3) are the choice variables:
%give value for parameters Y1, ... etc.
Y1=...
%give objective function
scalar_function = @(x)sum(Y1-x(1)*exp(-((m_mat-x(2))^2 +...
(n_mat-x(3))^2)/(2*sigmasq)))
%solve
x0=[...,...,...];
[x,value]=fminsearch(scalar_function,x0);
i want to note that 'fminunc' might be a better option, because it seems you can easily supply the gradient as well. that might speed things up...
  1 件のコメント
Sean de Wolski
Sean de Wolski 2012 年 4 月 17 日
FMINUNC is usually faster, but it requires the Optimization Toolbox. FMINSEARCH is in base MATLAB

サインインしてコメントする。

その他の回答 (0 件)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by