Curve fitting to data using fit

1 次查看(过去 30 天)
I have data x sampled at times t. I would like to fit my function to this data. Below is a code.
clear; close all
x=[100; 85.4019292604501; 77.9310344827586; 79.3365583966828; 70.3524533;
13.213644524237; 24.5654917953199; 12.6526340272125;
9.71822886716503; 9.99113213124446; 10.525];
t=[0; 24; 24; 24; 24; 48; 48; 48; 72; 72; 72;];
mdl=fittype('A*exp((-C.*(1-exp(-lambda.*t))/lambda)-(D*(exp(-lambda.*t)-1+lambda.*t)/lambda^2))','indep','t');
fittedmdl = fit(t,x,mdl,'start',[0.1 0.1 0.1 0.1])
fittedmdl =
General model: fittedmdl(t) = A*exp((-C.*(1-exp(-lambda.*t))/lambda)-(D*(exp(-lambda.*t) -1+lambda.*t)/lambda^2)) Coefficients (with 95% confidence bounds): A = 100 (84.3, 115.7) C = -120.9 (-9.45e+09, 9.45e+09) D = 6.135 (-4.793e+08, 4.793e+08) lambda = 105.9 (-8.273e+09, 8.273e+09)
plot(fittedmdl,'k.')
hold on
plot(t,x,'.m', MarkerSize=20)
And I obtain the following figure:
I am not impressed with the fitting. Can someone please check where I could be going wrong. Thanks in anticipation.
  9 个评论
Editor
Editor 2022-10-11
Thank you all for your constructive comments. I can tell that one of the problem could be the poor choice of initial conditions for this complex model. I will try though to play around with the initial condtions to see whether anything good can come out.
Thank you once again
Cris LaPierre
Cris LaPierre 2022-10-11
Just responding about the missing negative sign. The negative sign before C has been applied to the contents inside parentheses. So it is there.
-C(1-exp(t)) is the same as C(exp(t)-1)

请先登录,再进行评论。

采纳的回答

Matt J
Matt J 2022-10-11
编辑:Matt J 2022-10-11
x=[100; 85.4019292604501; 77.9310344827586; 79.3365583966828; 70.3524533;
13.213644524237; 24.5654917953199; 12.6526340272125;
9.71822886716503; 9.99113213124446; 10.525];
t=[0; 24; 24; 24; 24; 48; 48; 48; 72; 72; 72;];
mdl=fittype('A*exp((-C.*(1-exp(-lambda.*t))/lambda)-(D*(exp(-lambda.*t)-1+lambda.*t)/lambda^2))','indep','t');
fittedmdl = fit(t,x,mdl,'start',[100 0.1 0.1 0.1],'Lower',[0 0 0 0])
fittedmdl =
General model: fittedmdl(t) = A*exp((-C.*(1-exp(-lambda.*t))/lambda)-(D*(exp(-lambda.*t) -1+lambda.*t)/lambda^2)) Coefficients (with 95% confidence bounds): A = 108.1 (88.32, 128) C = 4.114e-14 (fixed at bound) D = 0.001322 (0.0002522, 0.002393) lambda = 8.823e-07 (-0.0381, 0.0381)
H=plot(fittedmdl,t,x);
H(1).MarkerSize=20; H(1).Color='m';
H(2).Color='k';H(2).LineWidth=2;

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Interpolation 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by