5.2.3 样条插值
在MATLAB中,三次样条插值可以采用函数spline(),该函数的调用格式如下。
yi=spline(x, y, xi):通过初始数据 产生插值函数 ,然后对数据xi进 行插值,返回值 。采用这种调用方式时,其相当于yi=interp1(x, y, xi, 'spline')。
pp=spline(x, y):该函数通过对初始数据x和y产生插值函数,并进行返回。然后利用函数ppval()对数据xi进行插值计算,其调用方式为yi=ppval(pp, xi),其中pp为插值函数。
【例5-15】 对正弦函数 进行三次样条插值,代码如下:
clear all;
x=0:10; %原始数据
y=sin(x);
xi=0:.25:10; %插值数据
yi=spline(x,y,xi); %三次样条插值
pp=spline(x,y) %产生插值函数
y1=ppval(pp,xi); %结果相同y1=yi
y2=interp1(x,y,xi,'spline'); %结果相同y2=yi
figure; %画图显示
plot(x,y,'o',xi,yi);
legend('原始数据','三次样条插值');
运行程序后,得到的三次样条函数如下:
pp =
form: 'pp'
breaks: [0 1 2 3 4 5 6 7 8 9 10]
coefs: [10x4 double]
pieces: 10
order: 4
dim: 1
原始数据和三次样条插值后的结果,如图5.9所示。在该程序中,分别采用3种方法进行三次样条插值,输出结果分别是yi、y1和y2,其输出结果都相等。