插值就是已知一组离散的数据点集,在集合内部某两个点之间预测函数值的方法。
一、一维插值
插值运算是根据数据的分布规律,找到一个函数表达式可以连接已知的各点,并用此函数表达式预测两点之间任意位置上的函数值。
插值运算在信号处理和图像处理领域应用十分广泛。
1.一维插值函数的使用
若已知的数据集是平面上的一组离散点集(x,y),则其相应的插值就是一维插值。MATLAB中一维插值函数是interp1。
y=interp([x,]y,xi,[method],['extrap'],[extrapval]),[]代表可选。
method:'nearest','linear','spline','pchip','cubic','v5cubic'。
2.内插运算与外插运算
(1)只对已知数据点集内部的点进行的插值运算称为内插,可比较准确的估测插值点上的函数值。
(2)当插值点落在已知数据集的外部时的插值称为外插,要估计外插函数值很难。
MATLAB对已知数据集外部点上函数值的预测都返回NaN,但可通过为interp1函数添加'extrap'参数指明也用于外插。
MATLAB的外插结果偏差较大。
二、二维插值 已知点集在三维空间中的点的插值就二维插值问题,在图像处理中有广泛的应用。
二维插值函数是interp2,用法与一维插值函数interp1类似。
ZI=interp2(X, Y, Z, XI, YI, method, extrapval):在已知的(X,Y,Z)三维栅格点数据上,在(XI, YI)这些点上用method指定的方法估计函数值,外插使用'extrapval'。
二维插值中已知数据点集(X, Y)必须是栅格格式,一般用meshgrid函数产生。interp2要求(X, Y)必须是严格单调的并且是等间距的,如果(X, Y)不是等间距的,会将其变换为等间距形式,如果已知是等间距的,可在method参数前加星号,如:'*cubic'。
三、多维插值1.interp3 三维插值,VI=interp3(X,Y, Z, V, XI, YI, ZI, method),用法同二维插值interp2。
2.n维插值VI=interpn(X1, X2, X3…, V, Y1, Y2, Y3,…, method),用法同二维插值interp2。
3.ndgrid
产生n维空间上的栅格。
[X1, X2, X3, …]=ndgrid(x1, x2, x3, …)