fitting function with many parameters (fminsearch)

Hi guys,
I am fitting diffraction data using a custom-made function. The solver I am using is fminsearch, which searches the zero of the funcion sse = sum( (log(fitted_curve) - log(data))^2 ).
There are 14 parameters,and the function is made of a summation. The starting parameters are very close to a good solution. I don't understand why fminsearch only varies some parameters, leaving others unchanged even if they aren't optimal.
Are there too many parameters?
Any ideas?
Regards,
Gianluca

 採用された回答

Miroslav Balda
Miroslav Balda 2013 年 2 月 27 日

0 投票

This may happen, if there are order differences among values of unknown parametres. Let's assume those parameters are gathered in a vector p and an initial guess is in p0. The situation may dramatically change, if we work with normalized parameters starting with a normalized vector of unknowns p=ones(n,1), however working with p=p.*p0 inside a user's function, that is called from fminsearch. After the optimum (normalized) parameters p be returned, the real optimum parameters p_opt=p.*p0.

1 件のコメント

gianluca messina
gianluca messina 2013 年 2 月 27 日
It's working now!
Thanks a lot for your help

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

その他の回答 (1 件)

Matt J
Matt J 2013 年 2 月 27 日
編集済み: Matt J 2013 年 2 月 27 日

0 投票

14 parameters is a lot for FMINSEARCH. You also need to be careful of quantization operations like ROUND, CEIL, etc... in your "fitted_curve". They can make the function locally flat, so that perturbing some/all parameters doesn't improve the function. You could plot your objective as a function of the parameters that are giving you problems (keeping the other parameters fixed). This would show you whether the parameters are sitting on a flat shelf.

カテゴリ

ヘルプ センター および File ExchangeInterpolation についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by