例如,我有5点这样,
(1,1) (2,-1) (3,2) (4,-2) (5,2)
现在,
我该怎么做?
答案 0 :(得分:7)
要将多项式拟合到给定的数据点,您可以使用polyfit(x,y,n)
其中x
是一个带有x
点的向量,y
是一个带y和{的点的向量{1}}是多项式的次数。请参阅Mathworks polyfit documentation
在你的情况下:
n
然后绘制,取自示例
x=[1,2,3,4,5];
y=[1,-1,-2,-2,2];
n=3;
p = polyfit(x,y,n)
或者,制作一个更漂亮的多项式图(而不是上图)
f = polyval(p,x);
plot(x,y,'o',x,f,'-')
答案 1 :(得分:3)
如果您不确定哪种方式合适,并想尝试不同的拟合,请使用曲线拟合工具箱cftool
。您需要创建两个带有x
和y
坐标的向量,然后您可以使用cftool
。
另一种选择是使用interp1
函数进行插值。有关详细信息,请参阅matlab documentation。
答案 2 :(得分:1)
如果要进行多项式插值,请查看polyfit
函数。它通常用于最小二乘多项式近似,但如果您选择度+ 1与您拟合的点数相同,它仍然适用于您。对于您可能知道的插值,插值的程度等于-1的点数。因此,对于上面的示例点,您需要4次多项式。这是mathworks文档的链接
http://www.mathworks.co.uk/help/matlab/ref/polyfit.html
如果将点分割为相应x和y坐标的2个向量,则只需在向量b
中获取插值多项式系数
b = polyfit(x,y,4)
根据您上面的数据,您的x和y向量是
x = [1 2 3 4 5];
y = [1 -1 2 -2 2]