Fit an exponential curve

5 次查看(过去 30 天)
Hi, I have a data set like this
x=[6.5 2.45 2.7 1.85 2.25 1.35 1.4 1 0.7 .475 .66 .475];
y=[0.40 0.80 1 1.40 1.80 2.50 3.00 4.00 6.00 7.00 8.00 9.00];
and I want to fit an exponential curve like this: y=6.5*e^(-a*x) to my data set. Since, the value 6.5 is constant I do not get my desired reslut from cftool. Does anybody know how can I solve this?

采纳的回答

Star Strider
Star Strider 2021-7-7
Try this —
x=[6.5 2.45 2.7 1.85 2.25 1.35 1.4 1 0.7 .475 .66 .475];
y=[0.40 0.80 1 1.40 1.80 2.50 3.00 4.00 6.00 7.00 8.00 9.00];
[fitobject,gof,output] = fit(x(:),y(:),'6.5*exp(-a*x)')
Warning: Start point not provided, choosing random start point.
fitobject =
General model: fitobject(x) = 6.5*exp(-a*x) Coefficients (with 95% confidence bounds): a = 0.4585 (0.1848, 0.7323)
gof = struct with fields:
sse: 35.1246 rsquare: 0.6496 dfe: 11 adjrsquare: 0.6496 rmse: 1.7869
output = struct with fields:
numobs: 12 numparam: 1 residuals: [12×1 double] Jacobian: [12×1 double] exitflag: 3 firstorderopt: 0.0109 iterations: 7 funcCount: 16 cgiterations: 0 algorithm: 'trust-region-reflective' stepsize: 2.6832e-04 message: 'Success, but fitting stopped because change in residuals less than tolerance (TolFun).'
figure
plot(fitobject, x, y, 'p')
grid
.

更多回答(1 个)

Sulaymon Eshkabilov
1st of all, your data's good fit is not 6.5*exp(a*x) that is why cftool is giving you the best fit that differs from your expected 6.5*exp(-a*x).
If you're aiming to get a fit for 6.5*exp(-a*x) then use "custom equation" option and set it to 6.5*exp(-a*x).

类别

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