加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

关于MATLAB中lsqcurvefit、polyfit用法的探讨

(2008-10-31 17:40:00)
标签:

杂谈

xdata=[1500 2000 2500 3000 3500 4000 4500 5000 5500];
ydata=[78.59 83.04 84.11 86.63 87.61 84.87 84.67 82.50 80.54];
x0=[1 2 1 1];
x=lsqcurvefit(@myfun,x0,xdata,ydata);
plot(xdata,ydata,'*');
holdon;
a=polyfit(xdata,ydata,3);
forc=1500:1:5500;
b=polyval(a,c);
plot(c,b,'k');
holdon;
end;

运行结果
a =

0.0000  -0.0000   0.0214  55.7953
x =

0.0694  -0.0000   0.0000   5.8728
x有可能是错误,因为可能发生奇异。
polyfit函数拟合出来的就是一个多项式,而多项式的系数都是用最小二乘法得出的。
可以用help polyfit来看帮助,会发现有这么一句话:
P = POLYFIT(X,Y,N) finds the coefficients of a polynomial P(X) of
degree N that fits the data Y best in a least-squares sense.
既然Polyfit是用最小二乘法拟合多项式曲线,按说应该两个函数求出的系数矩阵相同,可是总是会存在偏差。
当数据点较多时,如何确定拟合多项式的次数,常用方法是逐次增加拟合多项式的次数,并计算平方误差,以寻求效果较好的拟合多项式。



此日志来自QQ邮箱!方便快捷写Qzone的新方式,详情请进>>

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有