MATLAB/Simulink权威指南:开发环境、程序设计、系统仿真与案例实战
上QQ阅读APP看书,第一时间看更新

4.3 数据拟合

与数据插值类似,数据拟合的目的也是用一个较为简单的函数gx)去逼近一个未知的函数fx)。利用已知测量的数据(xiyi)(i=1,2,…,n),构造函数y=gx),使得误差δi=gxi)﹣fxi)(i=1,2,…,n)在某种意义上达到最小。

一般用得比较多的是多项式拟合,所谓多项式拟合是利用已知测量的数据(xiyi)(i=1,2,…,n),构造一个mmn)次多项式px):

使得拟合多项式在各采样点处的偏差的平方和最小。

在MATLAB中,用polyfit函数可以实现最小二乘意义的多项式拟合。polyfit拟合函数求的是多项式的系数向量。该函数的调用格式为

其中,p为最小二乘意义上的n阶多项式系数向量,长度为n+1;x和y为数据点向量,要求是等长的向量;S为采样点的误差结构体,包括R、df和normr分量,分别表示对x进行QR分解为三角元素、自由度和残差。

【例4-14】 在MATLAB中,用polyfit函数实现一个4阶和5阶多项式,在区间[0,3π]内逼近函数fx)=e﹣0.5xsinx,利用绘图的方法,比较拟合的4阶多项式、5阶多项式和fx)的区别。

程序代码如下:

程序运行结果如下,图4-6是4阶多项式和5阶多项式拟合fx)函数的比较结果。

图4-6 4阶多项式和5阶多项式拟合f(x)函数

由上述例题结果可知,用高阶多项式拟合fx)函数的效果更好,误差小,更加逼近实际函数fx)。