您的位置:

用matlab polyfit实现数据拟合

一、什么是polyfit

polyfit是matlab中的一个函数,它可以用来对给定的一组数据进行拟合,拟合出一个多项式函数。

二、polyfit的用法

polyfit的基本语法如下:

p=polyfit(x,y,n)

x和y分别为要拟合的数据的横坐标和纵坐标,n为拟合多项式的次数,为一个正整数。函数返回的是一个多项式的系数向量p。

三、拟合一元多项式

下面以一个实际的例子来说明如何使用polyfit函数进行一元多项式的拟合。

假设有如下的一组数据:

x y
1 3.1
2 6.5
3 9.2
4 13.1
5 16.5

现在需要用一个一次多项式对这组数据进行拟合。首先可以用plot函数将数据的散点图画出来:

x=[1,2,3,4,5];
y=[3.1,6.5,9.2,13.1,16.5];
plot(x,y,'o');

得到的图形如下:

数据散点图

接下来就可以用polyfit函数进行拟合。由于需要拟合一次多项式,所以n的值为1:

p=polyfit(x,y,1);

得到的p为:

p =

    3.2400    2.6800

可以看到,p为一个长度为2的向量。此时拟合出来的一次多项式为:

y=3.24x+2.68

如果要将这个一次多项式画出来,可以使用以下代码:

x_fit=0:0.1:6;
y_fit=polyval(p,x_fit);
hold on;
plot(x_fit,y_fit);
hold off;

得到的图形如下:

一次多项式拟合

四、拟合二元多项式

除了对一元多项式进行拟合,polyfit函数还可以用来对二元多项式进行拟合。下面以一个实际的例子来说明。

假设有如下的一组数据:

x y z
1 1 2.5
2 2 3.5
3 3 4.5
1 2 3.5
2 3 4.5
3 4 5.5

现在需要用一个二次多项式对这组数据进行拟合。与之前一元多项式的拟合相似,可以用plot3函数将数据的散点图画出来:

x=[1,2,3,1,2,3];
y=[1,2,3,2,3,4];
z=[2.5,3.5,4.5,3.5,4.5,5.5];
plot3(x,y,z,'o');

得到的图形如下:

数据散点图

接下来就可以用polyfit函数进行拟合。由于需要拟合二次多项式,所以n的值为2:

p=polyfitn([x', y'],z,2);

得到的p为:

p =

    0.5000   -0.7500    2.5000   -0.7500    3.5000
   -0.7500    1.5000    3.5000    1.5000    4.5000
    2.5000    3.5000   14.1667    3.5000   16.5000
   -0.7500    1.5000    3.5000    1.5000    4.5000
    3.5000    4.5000   16.5000    4.5000   20.5000

可以看到,p为一个3x3的矩阵。此时拟合出来的二次多项式为:

z=0.5x^2-0.75xy+2.5x-0.75y^2+3.5y

如果要将这个二次多项式画出来,可以使用以下代码:

[x_fit,y_fit]=meshgrid(0:0.1:3);
z_fit=polyvaln(p,[x_fit(:),y_fit(:)]);
z_fit=reshape(z_fit,size(x_fit));
hold on;
surf(x_fit,y_fit,z_fit);
hold off;

得到的图形如下:

二次多项式拟合

五、polyfit的应用场景

polyfit函数可以用来对各种类型的数据进行拟合,因此在实际的科学研究和工程应用中,具有广泛的应用场景。例如:

  • 在物理学中,polyfit函数可以用来对实验数据进行拟合,从而得出实验结果中的规律和趋势。
  • 在地质学中,polyfit函数可以用来对地壳运动的趋势进行拟合,从而了解地质学领域的动态变化。
  • 在工程领域中,polyfit函数可以用来对任何类型的数据进行拟合,从而得到预期的结果和规律。

六、总结

本文详细介绍了matlab polyfit函数的用法,包括一元多项式和二元多项式的拟合。同时还介绍了polyfit函数的应用场景,在实际的科学研究和工程应用中有着广泛的应用。