Exponential Fitting function not plotting the same information as the data points?

조회 수: 8 (최근 30일)
Hi, my brain is pickled with this one. Below are the two graphs I have plotted with exp2 function. The points do not match the curve, and this is ultimately changing my entire answer, as it is giving the wrong values out, and I cannot understand why?
Here is the code I am using, both graphs plot a concentration against time, but yet give different results:
CH4_fit = fit(Res_time, CH4_exp, 'exp2');
CH4_coeff = coeffvalues(CH4_fit); %Co-efficient values for exponential fitting
CH4_pred =(CH4_coeff(1)*exp(CH4_coeff(2)*Res_time)) + ...
(CH4_coeff(3)*exp(CH4_coeff(4)*Res_time));
plot(Res_time,CH4_exp, Res_time, CH4_pred);
Can I just added that the exact same data was run on different computers, and it gave the same equation co-efficients exactly (to 4.dp) and the same times, but yet still outputs different concentrations on my version? I have the R2018b, and I have just used default settings (don't know how to change anything, so I definitely haven't).
  댓글 수: 7
John D'Errico
John D'Errico 2019년 2월 14일
편집: John D'Errico 2019년 2월 14일
We don't have your data. That makes it impossible to really help you. Please attach the data points as a .mat file to a comment.
It may be true that a picture is worth a thousand words, but then real data? More like 10 thousand words. ;-)
Lewis Brammeld
Lewis Brammeld 2019년 2월 14일
Attached is the excel file that I am drawing my information off. Apologies for not attaching this earlier, was thinking that it was a simple fix without the requirement of the data.

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

채택된 답변

John D'Errico
John D'Errico 2019년 2월 14일
편집: John D'Errico 2019년 2월 14일
Where should I start? :-)
A terribly important feature of ANY exponential model is you absolutely, positively need good start points.
Asecond important thing is you need good data. Here, you have crappy data. (Sorry, but that is a tough model to fit well, because sums of exponentials are difficult to fit.) So better data would really help.
mdl = fit(x,y,ft,'start',[.05 350 .05 30])
mdl =
General model:
mdl(x) = a*exp(-b*x) + c*exp(-d*x)
Coefficients (with 95% confidence bounds):
a = 0.05937 (0.04962, 0.06911)
b = 368.4 (279.8, 457)
c = 0.01068 (0.0009941, 0.02036)
d = 61.21 (12.76, 109.7)
plot(mdl)
hold on
plot(x,y,'bo')
As exponential fits go, not terrible. I had to spend a few minutes to find good starting values for the parameters. If you did not do that, letting fit choose starting values for you? You would then expect complete crap for a result.
Again, the most important thing is to remember that exponential models NEED good starting values, especially for the rate parameters.
  댓글 수: 2
Lewis Brammeld
Lewis Brammeld 2019년 2월 14일
Hi John, yes the data was given to me, so apologies for that, I understand that it wasn't great! Thanks for looking into this for me, appreciate it!!
John D'Errico
John D'Errico 2019년 2월 14일
편집: John D'Errico 2019년 2월 14일
In my 29 year career of being a consultant on these topics, I may never have had a client who was able to give me data that was as good as I really wanted. (Well, ONCE, a client was willing to get absolutely anything I asked for. They were desperate.)

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

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Measurements and Feature Extraction에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by