今天利用MATLAB实现了数据分析中几种常用的插值算法,包括插值函数、拉格朗日插值和牛顿插值。
插值函数(一维):
yi=interp1(x,Y,xi,method)
对数据向量x和Y根据选用的方法构造插值函数,并计算xi处的函数值,返回yi。
method指定插值方法,有五种:
‘nearnest’——最邻近插值。
‘linear’——线性插值(默认)。
‘cubic’——三次插值。
‘spline’——三次样条插值。
‘v5cubic’——三次多项式插值。
这几种方法的对比图如图1:
图 1 插值函数不同算法对比图
如图1所示,利用4种插值算法对sin函数进行插值,各种插值算法效果一目了然。如若不惜运算成本(这里指运算速度以及内存占用情况),显然三次样条插值算法效果最好。
下面介绍样条插值函数,在MATLAB中提供了spline、ppval函数用于样条插值,用法与一维插值函数相同。样条插值效果如图2所示。
图 2 样条插值函数示例
图2是对一组简单的数据以及圆形数据进行插值,可以看出样条插值对光滑曲线插值效果较好。
除了MATLAB自带的插值函数外,在工程上经常用到拉格朗日插值和牛顿插值。根据拉格朗日插值多项式以及牛顿插值的基本原理,可以分别编写出拉格朗日插值函数和牛顿插值函数。由于拉格朗日插值算法容易理解,只对牛顿插值进行讨论。
为了研究牛顿插值不同阶数对结果的影响,下面结合实例进行讨论:以函数 f(x)=1/(1+10*x^2)为基准函数,分别采用4阶、8阶、10阶进行牛顿插值运算,比较不同阶数的插值误差,结果如图3.1、图3.2 所示。
图 3.1 不同阶数牛顿插值图
图 3.2 不同阶数牛顿插值误差图
版权声明:本站内容全部来自于腾讯微信公众号,属第三方自助推荐收录。《MATLAB数据分析(上)》的版权归原作者「ZCLOGS」所有,文章言论观点不代表Lambda在线的观点, Lambda在线不承担任何法律责任。如需删除可联系QQ:516101458
文章来源: 阅读原文
ZCLOGS微信公众号:ZCLOGS
手机扫描上方二维码即可关注ZCLOGS微信公众号