我的命令是这样的
x=[0 1.50E-02 3.00E-02 4.50E-02 6.00E-02 7.50E-02 9.00E-02 0.105 0.12 0.135 0.15 0.165 0.18 0.195 0.21 0.225 0.24 0.255 0.27 0.285 0.3];
y=[50.15 48.235 46.32 44.406 42.761 41.252 39.743 38.372 37.278 36.184 35.089 34.368 33.646 32.924 32.414 32.009 31.605 31.292 31.162 31.033 30.903];
myfunc=inline('beta(1)*exp(beta(2)*x)','beta','x');
beta=nlinfit(x,y,myfunc,[20 -8]);
a=beta(1),b=beta(2)
xx=linspace(min(x),max(x));
yy=a*exp(b*xx);
plot(x,y,'o',xx,yy,'r')
模拟的曲线与所给数据相差很多 最好帮我改一下 谢谢哦
这个问题我先给你分析一下,数据拟合首先需要给定你要拟合的公式的结构,像你的程序使用了指数函数,给定函数类型后,就可以进行拟合了,你的程序没有任何问题。
那么问题在哪里呢,是你选定的函数不好,就是说你使用指数函数拟合这个数据肯定就是这个样了。
如果没有特殊的要求,我建议一般使用多项式函数进行拟合!
下面的拟合可以看出结果很好的
x=[0 1.50E-02 3.00E-02 4.50E-02 6.00E-02 7.50E-02 9.00E-02 0.105 0.12 0.135 0.15 0.165 0.18 0.195 0.21 0.225 0.24 0.255 0.27 0.285 0.3];
y=[50.15 48.235 46.32 44.406 42.761 41.252 39.743 38.372 37.278 36.184 35.089 34.368 33.646 32.924 32.414 32.009 31.605 31.292 31.162 31.033 30.903];
p=polyfit(x,y,2);
yy=polyval(p,x);
figure;plot(x,y,'-r*',x,yy,'-b+')
General model Exp1:
f(x) = a*exp(b*x)
Coefficients (with 95% confidence bounds):
a = 47.81 (46.4, 49.23)
b = -1.762 (-1.959, -1.565)
Goodness of fit:
SSE: 38.87
R-square: 0.9485
Adjusted R-square: 0.9458
RMSE: 1.43
General model Exp2:
f(x) = a*exp(b*x) + c*exp(d*x)
Coefficients (with 95% confidence bounds):
a = 44.24 (42.5, 45.98)
b = -3.749 (-4.014, -3.485)
c = 6.04 (4.238, 7.841)
d = 3.376 (2.707, 4.045)
Goodness of fit:
SSE: 0.08654
R-square: 0.9999
Adjusted R-square: 0.9999
RMSE: 0.07135