Matlab进行多项式曲线拟合以及自定义系数的拟合

 时间:2024-09-24 06:25:53

通常,我们做实验或者一些其他手段得到的数据并不是连续的、大量的,当我们需要从有限的数据中得到其中的关系时,经常用到的手段是将其进行拟合。在Matlab中,有polyfit()函数可以方便我们对数据进行多项式拟合,还有lsqcurvefit()函数进行最小二乘多项式进行拟合。我们以两个实例进行说明。

工具/原料

Matlab软件

数据准备

1、我们利用一个函数来y=5*x.^2+7*cos(x)-15*x;来生成一组数据键入以下代码clearclcx=linspace(1,8,20);y=5*x.^2+7*cos(x)-15*x;plot(x,y,'o')生成的数据图如图

Matlab进行多项式曲线拟合以及自定义系数的拟合

Matlab进行多项式曲线拟合以及自定义系数的拟合

2、首先,我们使用圬桦孰礅polyfit()函数进行数据拟合,其使用格式为P=polyfit(x,y,5);上面的代码中,P是拟合之后的多项式浠于居柘各项系数,x是待拟合数据的X轴数据,y是待拟合数据的Y轴数据,5是我们想要拟合的几阶的多项式,如果是4的话就是说我们拟合出来的多项式是四阶的。如图所示,就是5阶的多项式系数,一个6个数据

Matlab进行多项式曲线拟合以及自定义系数的拟合

3、得到拟合的多项式系数之后,我们想要绘制图像的话就需要得到(X,Y)的数据,使用polyval()函数可以得到想要的数据。如Y1=polyval(P,x);P就是上面拟合得到的多项式系数,x就是X轴上的数据值,所得到的函数值为Y1。绘制图像如下

Matlab进行多项式曲线拟合以及自定义系数的拟合

Matlab进行多项式曲线拟合以及自定义系数的拟合

4、由上图可见,拟合精度是挺高的。如果拟合精度不够的话,我们可以将5改成6或7或更高,同时需要注意的是过拟合的问题,阶数越高并一定就越好。

5、以上的拟合是在我们不知道函数形式的情况下做的多项式拟合,如果我们已知函数形式水貔藻疽,只是函数系数不知道的话,就可以使用lsqcu鸡堕樱陨rvefit()函数进行拟合。对于本例中的函数拟合来说,简单的用法如下func=@(a,x)a(1)*x.^2+a(2)*cos(x)-a(3)*x;%定义待拟合函数,a为系数,x为变量a=[000];%定义系数初始点b=lsqcurvefit(func,a,x,y);%得到拟合系数代码运行结果如下。如图可知,拟合出的系数与我们实际设置的系数是一样的,当然,这也是因为我们的数据没有误差,但是也可以验证可以方法的正确性。

Matlab进行多项式曲线拟合以及自定义系数的拟合

6、将拟合出来的结果绘制图像,使用如下代码holdonplot(x,func(b,x));运行结果如图

Matlab进行多项式曲线拟合以及自定义系数的拟合

matlab如何做散点图 matlab怎么求相关系数 Matlab输出数据如何到excel文件中 matlab画散点图并连线 matlab读取excel数据
热门搜索
地榆图片 快新漫画 哈弗汽车报价及图片 丰子恺漫画 苹果6s图片