MATLAB中不仅提供了一维插值、二维插值和三维插值方法,还提供了样条插值的方法。其主要思想是:假定有一组已知的数据点,希望找到该组数据的拟合多项式。在多项式的拟合过程中,对于每组相邻的样本数据点,存在一条曲线,该曲线都需要用一个三次多项式拟合样本数据点。为了保证拟合结果的唯一性,在三次多项式样本数据点处的一阶、二阶导数需要进行约束,保证样本数据点之间的数据和区间两端的数据是连续的一阶、二阶导数。
在MATLAB中,spline、 ppval 函数用于样条插值,pchip 函数则用于三次多项式的插值,
其调用格式如下。
yi=spline(x,y,xi) %与 yi=interpl(x,y ,xi, 'spline ')的功能一致
yi =spline(x,y) %返回分段样条插值函数
yi =ppval( method ,xi) %使用method为插值函数计算x上的函数插值结果
yi= pchip(x,y,xi) %与 yi= interpl(x,y,xi, cubic ')的功能一致
yi=pchip (x, y) %返 回分段三次hermite多项式插值函数
例:样条插值示例。
1)创建M文件,输人以下代码。
x=-5:5;
y=[-1-1-1-1-1011 111];
t=-5:.1:5;
p=pchip(x,y,t);
s= spline(x,y,t);
plot(x,y,'*',t,p,'o',t,s,'-');
legend( '原始数据',' pchip样条插值',' spline样条插值',4);
ppol= spline(x,y);
2)运行程序,输出结果如下,得到的样条插值图如图所示。
ppol=
form: ' PP
breaks:[-5 -4-3-2-101 2345]
coefs:[ 10x4 double]
pieces: 10
order:4
dim:1
