关于MATLAB 拟合曲线的问题

x=[-1 -1.096910013 -1.22184875 -1.397940009 -1.698970004 -2 -2.096910013 -2.22184875 -2.397940009 -2.698970004 -3 -3.096910013 -3.22184875 -3.397940009 -3.698970004 -4 -4.096910013 -4.22184875 -4.397940009 -4.698970004 -5 -5.301029996 -6 -6.301029996 -7
];
y1=[0.19722 0.17862421 0.15608793 0.13293769 0.1262108 0.12085 0.1184635 0.116076995 0.113690493 0.11130399 0.0982 0.09403087 0.08873442 0.08153087 0.07016301 0.0625 0.05738433 0.05392818 0.04949164 0.04303786 0.03787 0.03376065 0.02725677 0.02546905 0.02186244
];
p1=polyfit(x,y1,3);
h=-1:-0.01:-7;
z1=polyval(p1,h);

y2=[0.2815 0.27974245 0.27635973 0.26820598 0.2460479 0.20732 0.17869929 0.15616055 0.1329555 0.13102242 0.13076 0.13018517 0.12809778 0.12306309 0.11125676 0.09817 0.09400649 0.08871889 0.08152006 0.07016167 0.0602538 0.05187606 0.03787023 0.03375421 0.02725338
];
p2=polyfit(x,y2,3);
h=-1:-0.01:-7;
z2=polyval(p2,h);

y3=[0.28583 0.28575487 0.28562528 0.28534304 0.28421633 0.2815 0.27974598 0.27636409 0.26820945 0.24605527 0.19733 0.17870843 0.15616779 0.13995745 0.131648725 0.13034 0.130117 0.12809132 0.12305629 0.11125212 0.0981659 0.085437 0.0625454 0.05187651 0.03786978
];
p3=polyfit(x,y3,3);
h=-1:-0.01:-7;
z3=polyval(p3,h);

y4=[0.28607 0.28606594 0.28605545 0.28603422 0.28596864 0.28583 0.28575498 0.28562539 0.28534318 0.28431653 0.2815 0.27974633 0.27636453 0.26820983 0.24605601 0.19733 0.17870934 0.15616849 0.13295766 0.12611316 0.12010505 0.10609243 0.09816557 0.08543691 0.06025461
];
p4=polyfit(x,y4,3);
h=-1:-0.01:-7;
z4=polyval(p4,h);

y5=[0.28609 0.28609389 0.28609287 0.28609082 0.28608464 0.28607 0.28606594 0.28605546 0.28603423 0.28596886 0.2818 0.28575498 0.2856254 0.28534319 0.28431655 0.2815 0.27974636 0.27636456 0.26820985 0.24605607 0.1973317 0.14411221 0.12367008 0.10609236 0.08916554
];
p5=polyfit(x,y5,3);
h=-1:-0.01:-7;
z5=polyval(p5,h);

y6=[0.2862 0.28609666 0.28609655 0.2860635 0.28609574 0.286094 0.28609389 0.28609286 0.28609082 0.28608465 0.28603 0.28606594 0.28605546 0.28603423 0.285968685 0.28583 0.28575499 0.2855491 0.28534319 0.28431656 0.281502 0.27329758 0.19733173 0.14411222 0.13075043
];
p6=polyfit(x,y6,3);
h=-1:-0.01:-7;
z6=polyval(p6,h);

hold on,plot(x,y1,'*',h,z1),plot(x,y2,'o',h,z2),plot(x,y3,'.',h,z3),plot(x,y4,'o',h,z4),plot(x,y5,'o',h,z5),hold off
这个是我自己做的,但是感觉偏差太大,请各位高手指点。顺便再给出任意一条曲线的拟合公式吧~~~~

楼主你的数据来源是什么,有物理或数学背景吗,通过分析你的数据我发现这几组数据前两组用多项式拟合效果还可以,后面几组的多项式拟合效果实在是不怎么样。
我用曲线拟合工具箱cftool拟合,从里面挑了好几种拟合方式来拟合,最终发现用fourier(傅里叶级数)这种方式来拟合的效果还是很理想的,你可以试一下。
实际上拟合前都是对拟合函数有一个预估的,不一定说非要越精确越好,那样很容易发生过拟合,过拟合虽然说从表面上精度很高,但可能没有任何意义,可能会失去你所关心的信息。
一般拟合也是在一定的物理或数学背景下进行的,所以拟合要综合考虑合理性与精确性,现在的疑问是你的数据到底有没有什么背景或条件。追问

谢谢你的解答,这些数据是我通过计算得到的散点,然后想拟合出一条曲线,我试试用傅立叶级数。谢谢你的解答。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-06-09
拟合的次数再高一些
第2个回答  2011-06-09
偏差是蛮大的。