用matlab拟合下面一组数据的曲线

x=[-2.30259,-1.60944,-1.20397,-0.91629,-0.69315,-0.51083,-0.35667,-0.22314,-0.10536,0.00000,0.40546,0.69315,0.91629,1.09861,1.25276,1.38629,1.50408,1.60944,1.70475,1.79176];

y=[2.48491,3.06805,3.21888,3.31419,3.41773,3.44681,3.50556,3.52636,3.57235,3.61092,3.87950,3.92395,4.03247,4.13517,4.20916,4.28496,4.34898,4.41158,4.45898,4.60116];
a=polyfit(x,y,6);
yi=polyval(a,x);
plot(x,y,'o',x,yi,'r')
这是我写的程序,可是曲线的效果不是太好,对拟合的阶数作了变化,还是不行,图形如下,哪位高手,能使的那条曲线更加光滑一点。

第1个回答  2009-12-11
x=[-2.30259,-1.60944,-1.20397,-0.91629,-0.69315,-0.51083,-0.35667,-0.22314,-0.10536,0.00000,0.40546,0.69315,0.91629,1.09861,1.25276,1.38629,1.50408,1.60944,1.70475,1.79176];

y=[2.48491,3.06805,3.21888,3.31419,3.41773,3.44681,3.50556,3.52636,3.57235,3.61092,3.87950,3.92395,4.03247,4.13517,4.20916,4.28496,4.34898,4.41158,4.45898,4.60116];
>> p=polyfit(x,y,6);
>> xx=-2.5:0.01:2.0;
>> yy=polyval(p,xx);
>> plot(x,y,'x',xx,yy);

你画的那个不光滑是因为你的x不连续,不是拟合效果不好。我就不附图了,你自己运行一下吧。
第2个回答  2009-12-11
%xi重新取值
clear
x=[-2.30259,-1.60944,-1.20397,-0.91629,-0.69315,...
-0.51083,-0.35667,-0.22314,-0.10536,0.00000,...
0.40546,0.69315,0.91629,1.09861,1.25276,1.38629,...
1.50408,1.60944,1.70475,1.79176];

y=[2.48491,3.06805,3.21888,3.31419,3.41773,3.44681,...
3.50556,3.52636,3.57235,3.61092,3.87950,3.92395,...
4.03247,4.13517,4.20916,4.28496,4.34898,4.41158,...
4.45898,4.60116];
a=polyfit(x,y,6);
xi=linspace(min(x),max(x),length(x));
yi=polyval(a,xi);
plot(x,y,'o',xi,yi,'r')本回答被提问者采纳
第3个回答  2009-12-11
cftool 工具箱
相似回答