作业帮 > 综合 > 作业

Matlab数据拟合已知一组数据(t,y)且知y=c(1)+c(2)*exp(-1*t);,如何拟合出c1、c2呢?

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/05/03 12:20:04
Matlab数据拟合
已知一组数据(t,y)且知y=c(1)+c(2)*exp(-1*t);,如何拟合出c1、c2呢?
指数拟合如下:
-----------------------------------------------------------------
先定义函数:
function Y=nhfun(b,x)
Y=b(1)*exp(b(2)*x)+b(3);
在运行程序:
x=[0 20 40 60 100 130 160 190];
y=[18 17.586 17.136 16.704 15.84 15.129 14.544 13.896];
x0=[0,1,0] %设置初始值
b=lsqcurvefit(@nhfun,x0,x,y);
Xi=0:0.001:200;
Yi=b(1)*exp(b(3)*Xi)+b(2);
plot(x,y,'cp','MarkerEdgeColor','k','MarkerFaceColor','g','MarkerSize',6)
hold on
plot(Xi,Yi,'linewidth',2,'markersize',16)
legend('原始数据点','拟合曲线')
sprintf('曲线方程:Y=%0.5g+e^(%0.5gxX)+(%0.5g)',b(1),b(2),b(3))
--------------------------------------------------------------
!曲线方程程序运行时会报错,是因为你的X数据中有一个为0,这个不影响结果的
曲线方程:Y=3.1461e-020+e^(1xX)+(7.8423e-041)
你的参数是不是少了一个?