Моя цель - подогнать гауссово-эрмит-полиномы к сложным данным измерений (состоящим из абсолютной и фазовой частей).Существует семь независимых параметров (p) для генерации такого гауссовского режима Эрмита.Я реализую все в Matlab, поэтому вычисление такого режима не проблема.Проблема заключается в примерке.На данный момент я реализую две версии.Первый с fminsearch
, второй с lsqnonlin
:
fun=@(p) CalcCoeff(c1,...
p(1)*CalcGaussHermite(...
CalcCoor([p(2),p(3),alphaZ],[p(4),p(5)],[centerX,centerY],labcoor),...
[l,m,lambda,p(6),p(7)]));
p=[scale,alphaX,alphaY,z_fX,z_fY,w_0X,w_0Y];
%optimset('Display','iter','PlotFcns',@optimplotfval);
% [fpar,fval,exitflag,output] = fminsearch(fun,p,options);
options = optimoptions('lsqnonlin','Display','iter');
res=lsqnonlin(fun,p,[],[],options);
Функция CalcCoeff вычисляет разницу в случае lsqnonlin, в случае fminsearch вычисляет интеграл перекрытия (точечный продукт),В качестве теста я рассчитал простой гауссовский режим и попытался восстановить используемые параметры.Но мой алгоритм не удался в обоих случаях.Он работает без каких-либо сообщений об ошибках, но параметры не могут быть восстановлены.Поэтому я задаю себе вопрос: слишком много параметров для оптимизации, поэтому алгоритм не может сходиться?Или это даже глобальная проблема?Я был бы очень рад, если бы какой-нибудь специалист по оптимизации дал бы мне подсказку, что может пойти не так.Если я задал вопрос неправильно, просто дайте мне знать.С уважением, Андре