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

MATLAB数据拟合多项式及三次样条比较

(2009-04-21 14:33:00)
标签:

杂谈

polyfit命令是多项式拟合,其拟合精度相对来说不是很好,尤其是在样本点稀疏和图像有尖点的地方,可以从以下语句与图形中看出这一点,举例波动性较强的正弦函数绘图。顺便说一句,三次样条还不是最好的拟合函数,但一般情况下也够了,本例题里只是选择了6个样本点,已经达到了这样的拟合效果。
function fit_tulun
%多项式拟合方式
x=linspace(0,4*pi,6);
y_jingque=sin(x); %决定稀疏样本点数据
p_poly=polyfit(x,y_jingque,5);
x_poly_fit=linspace(0,4*pi,100);
y_poly_fit=polyval(p_poly,x_poly_fit);
%三次样条拟合方式
sp=csapi(x,y_jingque);
%求三次样条函数的导数.
s_diff=fnder(sp,1);
plot(x_poly_fit,y_poly_fit,'ko',x_poly_fit,y_poly_fit,'b:')
%plot(x_poly_fit,y_poly_fit,'b:')
hold on
fnplt(sp,'r')
fnplt(s_diff,'c')
x1=linspace(0,4*pi,200);
plot(x1,sin(x1),'m','linewidth',1.8)
legend('多项式拟合样本点','多项式拟合曲线','三次样条拟合曲线','三次样条导数曲线','正弦曲线精确图形')


0

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

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

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

新浪公司 版权所有