Matlab三次样条法插值
以N方向为例:
1、将N方向数据导入Matlab,将十进制年转化为年积日
2、重新排序,将缺失数据的天数以NaN补齐
3、寻找出NaN所在的天数
nxx = find( isnan(n) );
4、直接进行三次样条插值,2192代表了6年的数据
x = 1:2192; nyy = spline(x,n,nxx);
5、nyy向量里即是需要插补的值,将其值插入到n中
j = 1; for i = 1 : 2192 if ( isnan(n(i)) == 1 ) n(i) = nyy(j); j = j + 1; end end
问题:
数据连续缺失多于5个的时候,采用此方法插值可能会出现插入的数据失真的情况,要考虑使用所谓的多点三次样条法插值。
详见参考文献: