MATLAB: код lsqnonlin из 2010b не работает в 2008a - PullRequest
1 голос
/ 08 ноября 2011

Я написал скрипт в MATLAB 2010, в котором я вызвал функцию lqnonlin, и он работал нормально.

options = optimset('TolFun',0.001,...
                   'Display','off',...
                   'Algorithm','levenberg-marquardt');
[X,R2,r] = lsqnonlin(@FCN,XO,[],[],options);

Затем я запустил код в MATLAB 2008a следующим образом (после прочтения MATLAB: изменения LSQNONLIN в R2011a? )

options = optimset('TolFun',0.01,...
                   'Display','off',...
                   'LargeScale','off',...
                   'LevenbergMarquardt','on')
[X,R2,r] = lsqnonlin(@FCN,XO,[],[],options);

Он дает вывод, но не дает правильного ответа - фактически он остается неизменным по сравнению с исходными данными

Думая / надеясь, что это связано с моими настройками параметров

решаемые

Пришлось настроить TolFun на гораздо более низкую настройку. понятия не имею, почему.

1 Ответ

1 голос
/ 09 ноября 2011

Была проблема с TolFun. Пришлось установить его намного ниже (1е-9). Хотя я понятия не имею, почему это так. Остальная часть кода идентична.

...