用于处理数据缺失,基本思想是根据周围点建立联系,以补充缺失数据,或者预测未来的数据。
插值与拟合的应用方向区别
每隔一个小时测一次温度,测12小时
- 如果第6个小时忘记测了,根据规律补上一个—–> 插值
- 如果想要得知12小时以后的 ——> 拟合
插值问题
归结为已知函数在某区间内若干点处的值,求函数在该区间内其他点处的值。
已知函数$x_0,x_1,x_2\cdots x_n$处的值为$y_0,y_1,y_2\cdots y_n$求简单函数$p(x)$,使得$p(x_i)=y_i$.
拉格朗日插值法
具体可参考知乎-如何直观地理解拉格朗日插值法?
牛顿插值
高次插值的Runge现象
warning
插值多项式并不是次数越高越好
Runge现象
:使用高次插值的时候在边缘产生的震荡现象
所以再实际中不应该使用七次以上的插值
避免Runge现象
将插值区间分为若干小区间,在每个小区间呗用地刺插值,分段低次插值。
Matlab插值
一维
yi=interp1(x,y,xi,'method');
x,y为插值点(已知),xi,yi为被插值点和插值结果(可以试单一点,也可以是向量)method为插值方法可以选用:
- nearest 最邻近插值
- linear 线性插值(默认方法)
- spline 三次样条插值(效果相对好)
- cubic 立方插值
matlab拉格朗日插值需要手写。代码如下
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
二维
可以将三维图变得更加平缓圆润
zi=interp2(x,y,z,xi,yi,’method’)
method:
- nearest 最邻近插值
- linear 双线性插值
- spline 双上次样条插值
- cubic 双立方插值
散乱插值
二维插值插值点都在网格点上,但是有时可能需要在格子内部插入散乱点,此时使用 散乱插值