注册 登录
编程论坛 Matlab

[求助]最小二乘曲线拟合

shuanglinzmh 发布于 2006-04-26 12:36, 1511 次点击
我最近在作毕业设计,遇到了一点问题,用polyfit函数拟合一系列数据时,
x=[0,2.27,3.66,4.47,5.62,6.44,6.92,7.69,8.18,9.27,9.77,11.45];
y=[35.10,35.88,35.39,34.80,33.80,32.67,31.96,30.56,29.70,26.55,24.37,16.35];
f2=polyfit(x,y,2)
f4=polyfit(x,y,4)
y2=polyval(f2,x);
y4=polyval(f4,x);
plot(x,y,'o',x,y2,':*',x,y4,':p')

这个简单的程序,结果拟合出来的 曲线 前半段 为折线
怎么回事?有什么改进的吗?
3 回复
#2
abingchem2006-04-26 18:27
不是曲线的问题,你是数据的问题:)
如果你把x的范围中的数据取在0:1:12,这样绘图会比较好看
另,4阶的符合很好了
#3
shuanglinzmh2006-04-27 09:52

谢谢楼上的大侠。

#4
ydgsl2006-09-21 09:33

以上数据用多项试拟合不是很恰当的,若用模型:
y=b(1)+b(2)*x+b(3)*(exp(b(4)*(x-b(5)))-exp(-b(4)*(x-b(5))))./(exp(b(4)*(x-b(5)))+exp(-b(4)*(x-b(5))));
则 b=[1531.77075, -2412.69643, 542632.921, .444651267e-2, .620232947] 能较好地反映Y与X的关系。
R^2=0.9982

1