![MATLAB/Simulink权威指南:开发环境、程序设计、系统仿真与案例实战](https://wfqqreader-1252317822.image.myqcloud.com/cover/629/27111629/b_27111629.jpg)
上QQ阅读APP看书,第一时间看更新
4.3 数据拟合
与数据插值类似,数据拟合的目的也是用一个较为简单的函数g(x)去逼近一个未知的函数f(x)。利用已知测量的数据(xi,yi)(i=1,2,…,n),构造函数y=g(x),使得误差δi=g(xi)﹣f(xi)(i=1,2,…,n)在某种意义上达到最小。
一般用得比较多的是多项式拟合,所谓多项式拟合是利用已知测量的数据(xi,yi)(i=1,2,…,n),构造一个m(m<n)次多项式p(x):
![](https://epubservercos.yuewen.com/59B7C6/15477655505633306/epubprivate/OEBPS/Images/Figure-P170_29139.jpg?sign=1738956755-YLyWErH2wA1kqeae2KGNc6RgPiGE2kc3-0-964fdb833560e2285b93302ccf445a7d)
使得拟合多项式在各采样点处的偏差的平方和最小。
在MATLAB中,用polyfit函数可以实现最小二乘意义的多项式拟合。polyfit拟合函数求的是多项式的系数向量。该函数的调用格式为
![](https://epubservercos.yuewen.com/59B7C6/15477655505633306/epubprivate/OEBPS/Images/Figure-P170_29142.jpg?sign=1738956755-YF2D9R4aeY6qYWbHu1BZqNkJLRRlL64L-0-6491fe833eebc32939aa219dff7e3cc5)
其中,p为最小二乘意义上的n阶多项式系数向量,长度为n+1;x和y为数据点向量,要求是等长的向量;S为采样点的误差结构体,包括R、df和normr分量,分别表示对x进行QR分解为三角元素、自由度和残差。
【例4-14】 在MATLAB中,用polyfit函数实现一个4阶和5阶多项式,在区间[0,3π]内逼近函数f(x)=e﹣0.5xsinx,利用绘图的方法,比较拟合的4阶多项式、5阶多项式和f(x)的区别。
程序代码如下:
![](https://epubservercos.yuewen.com/59B7C6/15477655505633306/epubprivate/OEBPS/Images/Figure-P171_29144.jpg?sign=1738956755-A3v77p3eRcyCzd2tXLVOa8RLGDej6bqY-0-ef5cf7b16ec6231b6cf8e71c21412eac)
程序运行结果如下,图4-6是4阶多项式和5阶多项式拟合f(x)函数的比较结果。
![](https://epubservercos.yuewen.com/59B7C6/15477655505633306/epubprivate/OEBPS/Images/Figure-P171_29145.jpg?sign=1738956755-fKF4aJ67S5wROaQZjWCJOtvLcimAEQXm-0-2b138e93683e53eb0f24f9000d7c3f4e)
![](https://epubservercos.yuewen.com/59B7C6/15477655505633306/epubprivate/OEBPS/Images/Figure-P171_10787.jpg?sign=1738956755-bMhKbeou7M8MeuPvO26PJcCCVHR3Ceoi-0-a60bdc5bf27b2e696b320970645e6bec)
图4-6 4阶多项式和5阶多项式拟合f(x)函数
由上述例题结果可知,用高阶多项式拟合f(x)函数的效果更好,误差小,更加逼近实际函数f(x)。