6

例如我有5个这样的点,

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

现在,

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

我怎样才能做到这一点??

4

3 回答 3

8

要将多项式拟合到给定的数据点,您可以使用polyfit(x,y,n)wherex是带有点的向量xy是带有点的向量 y 并且n是多项式的次数。请参阅Mathworks polyfit 文档中的示例

在你的情况下:

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,'-')

或者,制作一个更漂亮的多项式图(而不是上面的图)

xx=0:0.1:5;
yy = erf(xx);
f = polyval(p,xx);
plot(x,y,'o',xx,f,'-')
于 2012-11-29T19:11:57.543 回答
3

如果您不确定什么是合适的拟合并想尝试不同的拟合,请使用曲线拟合工具箱cftool。您需要使用xy坐标创建两个向量,然后您可以使用cftool.

另一种选择是使用interp1函数进行插值。有关详细信息,请参阅matlab 文档。

于 2012-11-29T19:19:40.973 回答
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]
于 2012-11-29T19:10:14.653 回答