曲线拟合在matlab中

时间:2012-11-29 19:00:02

标签: matlab octave curve-fitting

例如,我有5点这样,

(1,1) (2,-1) (3,2) (4,-2) (5,2)

现在,

  • 1)我想要一个函数在Matlab中插入这些点。
  • 2)我想绘制此功能。
  • 3)从输入读取一个数字并将F(x)写入输出。

我该怎么做?

3 个答案:

答案 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。您需要创建两个带有xy坐标的向量,然后您可以使用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]