Errors when using lsqnonlin in new Matlab version

조회 수: 9 (최근 30일)
Seppe
Seppe 2015년 3월 5일
댓글: Matt J 2015년 3월 5일
Hello,
A while ago someone gave me some code to solve my statistics problems (including nonlinear data-fitting). I recently upgraded from Matlab R2010b to R2014b, and now I get error messages like the one below. Does anyone know if something important changed to 'lsqnonlin'? I noticed the errors occur when to most irregular datadistributions are fitted.
Thanks in advance, Seppe
Error using levenbergMarquardt (line 16)
Objective function is returning undefined values at initial point. lsqnonlin
cannot continue.
Error in lsqncommon (line 156)
[xC,FVAL,JACOB,EXITFLAG,OUTPUT,msgData] = ...
Error in lsqnonlin (line 237)
[xCurrent,Resnorm,FVAL,EXITFLAG,OUTPUT,LAMBDA,JACOB] = ...
Error in SKNrandgen (line 95)
distr_param=lsqnonlin(@SKNfit,distr_param,[],[],OPTIONS,CurrentBootData,n_obs);

채택된 답변

Matt J
Matt J 2015년 3월 5일
편집: Matt J 2015년 3월 5일
The errors you've posted are not originating from lsqnonlin. They are originating from the objective function, SKNfit. It is returning NaNs, or Infs, or something not legal at the initial point. You should forget about lsqnonlin for now and just focus on SKNfit. Check what it is returning at the initial point.
  댓글 수: 2
Seppe
Seppe 2015년 3월 5일
Indeed! There was an ill-working interpolation in SKNfit. I changed the line below into the one beneath it and the problem was solved. Strange that this problem did not occur in the old Matlab version though.
Thank you very much!
SKNdata=interp1(cumm_modelfreq(array_temp),class_model(array_temp),cumm_fitdata);
SKNdata=interp1(cumm_modelfreq(array_temp),class_model(array_temp),cumm_fitdata,'linear','extrap');
Matt J
Matt J 2015년 3월 5일
It's probably because some of your cumm_fitdata is close to the boundary of your interpolated region cumm_modelfreq(array_temp). Small changes in the order of floating point operations between MATLAB versions can put it outside the interpolated region where it will get assigned NaN by default.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Mathematics and Optimization에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by