Fitting an exponential using nlinfit

조회 수: 5 (최근 30일)
Matthew
Matthew 2015년 11월 13일
댓글: Star Strider 2015년 11월 17일
I am trying to fit an exponential fit to some data... I have tried using Nlinfit but don't seem to be getting anywhere
nlmodel=@(b,time_bbdom)b(1)+b(2)*exp(-b(3)*time_bbdom(:,1));
beta0=[0;1;0.1];
mdl=nlinfit(time_bbdom,lum_bbdom,nlmodel,beta0);
I think the problem is my starting conditions beta0... How do I choose these variables? the error i get is Error using nlinfit>checkFunVals (line 612) The function you provided as the MODELFUN input has returned Inf or NaN values.
Error in nlinfit>LMfit (line 559) if funValCheck && ~isfinite(sse), checkFunVals(r); end
Error in nlinfit (line 276) [beta,J,~,cause,fullr] = LMfit(X,yw, modelw,beta,options,verbose,maxiter); Can anyone point me in the right direction? I would have thought its quite easy but i am not finding the documentation particularly helpful....

채택된 답변

Star Strider
Star Strider 2015년 11월 13일
If the values of ‘time_bbdom(:,1)’ are large enough, the ‘exp(-b(3)*time_bbdom(:,1))’ term will be zero, causing the Inf error. Without knowing more, one way to avoid this could be to set the initial value of ‘b(3)’ to ‘max(time_bbdom(:,1))/10’ or some such. You may have to experiment to get the result you want.
  댓글 수: 7
Matthew
Matthew 2015년 11월 17일
Ok so i am still struggling... I essentially want to fit an exponential decay with a variable constant added (like above) which will all be done in a loop over many files... so I can't really input the initial values manually.. The x values range from 0 to about 1...
What is the best way to go about doing this? I initially tried taking the log and fitting with polyfit (it worked well) but I need to include this free variable that adds to exponential (the b(1)) mentioned above...is there a way i can do this with polyfit for example?
Star Strider
Star Strider 2015년 11월 17일
The easiest way I can think of to estimate ‘b(1)’ is to take the mean or max of your data. Experiment with both and use the one that works best.
I don’t have your data or the code you used to implement polyfit, so I can’t comment on them.

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

추가 답변 (0개)

Community Treasure Hunt

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

Start Hunting!

Translated by