(一)插值
在应用领域中,由有限个已知数据点,构造一个函数,由此计算数据点之间的函数值,称为插值。
一维插值
1.拉格朗日插值法
基本原理
构造一组基函数
Lagrange插值函数
因为matlab没有提供Lagrange插值函数,故需要自己构造。
x0,y0为原始坐标点,维度必须相同。
x为待插值的点。
y是返回值,是最终插值结果。
function y=lagrange(x0,y0,x) %x0,y0为初始坐标,x为需要插值的点,返回的y为插值结果
n=length(x0);m=length(x);
for i=1:m
z=x(i);
s=0;
for j=1:n
p=1;
for k=1:n
if k~=j
p=p*((z-x0(j))/(x0(k)-x0(j)));
end
end
s=p*y0(k)+s;
end
y(i)=s;
end
2.分段线性插值法
基本原理
将每两个相邻的节点用直线连起来,如此形成的一条折线就是分段线性插值函数。计算x点的插值时,只用到x左右的两个节点,计算量与节点个数n(初始值x0,y0的长度,n=length(x0))无关,而拉格朗日插值与n值有关。分段线性插值中n越大,分段越多,插值误差越小。
分段线性插值函数
matlab有提供现成的函数:interp1
y = interp1(x,y,cx,'method')
x,y分别表示数据点的横、纵向量
cx表示需要插值的横坐标数据或数组
method为可选参数,从以下四个值中任选一个:
'linear'——线性插值(默认)
'nearest'——最近邻近插值
'cubic'——三次插值
'spline'——三次样条插值(下面接着讲)
三次样条