MATLAB interp2()函数的用法(附带实例)
插值法是一种古老的数学方法。插值问题的数学定义如下:
1) 先由实验或测量的方法得到函数 y=f(x) 在互异点 x0,x1,…,xn 处的数值 y0,y1,…,yn,见下图:

图 1 一维插值示意图
2) 然后构造一个函数 ϕ(x) 作为 y=f(x) 的近似表达式,即:
插值的任务是由已知的观测点为物理量建立一个简单、连续的解析模型,以便能根据该模型推测该物理量在非观测点处的特性。
插值包括多项式插值、埃尔米特插值、分段插值与样条插值、三角函数插值、辛克插值等。插值在数据分析、信号处理、图像处理等诸多领域有着十分重要的应用。
当被插值函数 y=f(x) 为二元函数时,为二维插值。MATLAB 使用 interp2() 函数来实现二维插值。
interp2() 函数的调用格式如下:
MATLAB 共提供了 5 种插值方法:
【实例】二维插值示例。在编辑器窗口中编写如下代码:

图 2 二维插值结果
1) 先由实验或测量的方法得到函数 y=f(x) 在互异点 x0,x1,…,xn 处的数值 y0,y1,…,yn,见下图:

图 1 一维插值示意图
2) 然后构造一个函数 ϕ(x) 作为 y=f(x) 的近似表达式,即:
y=f(x)≈ϕ(x)使得 ϕ(x0)=y0,ϕ(x1)=y1,…,ϕ(xn)=yn。这类问题称为插值问题,y=f(x) 称为被插值函数,ϕ(x) 称为插值函数,x0,x1,…,xn 称为插值节点。
插值的任务是由已知的观测点为物理量建立一个简单、连续的解析模型,以便能根据该模型推测该物理量在非观测点处的特性。
插值包括多项式插值、埃尔米特插值、分段插值与样条插值、三角函数插值、辛克插值等。插值在数据分析、信号处理、图像处理等诸多领域有着十分重要的应用。
当被插值函数 y=f(x) 为二元函数时,为二维插值。MATLAB 使用 interp2() 函数来实现二维插值。
interp2() 函数的调用格式如下:
Vq=interp2(X,Y,V,Xq,Yq,method).
- X、Y、V 是具有相同大小的矩阵;
- V(i, j) 是数据点 [X(i,j), Y(i,j)] 上的函数值;
- Xq、Yq 为待插值数据网格;
- method 是一个字符串变量,表示不同的插值方法。
MATLAB 共提供了 5 种插值方法:
- 'nearest':邻近点插值,将插值点周围 4 个数据点中距离该插值点最近的数据点的函数值作为该插值点函数值的估计值。
- 'linear':双线性插值,是 MATLAB 的 interp2() 函数默认使用的插值方法。该方法将插值点周围4个数据点的函数值的线性组合作为插值点函数值的估计值。
- 'spline':三次样条插值。该方法的计算效率高,得到的曲面光滑,是用户经常使用的插值方法。
- 'cubic':双立方插值。该方法利用插值点周围的 16 个数据点,相对于邻近点插值方法和双线性插值方法,其需要消耗较多的内存和计算时间,故计算效率不高,但是得到的曲面更加光滑。
- 'makima':修正 Akima 三次埃尔米特插值。查询点的插入值使用次数最大为 3 的分段多项式函数基于各维中邻近网格点的值进行计算而得。为防过冲,已修正 Akima 公式。
【实例】二维插值示例。在编辑器窗口中编写如下代码:
clear all; [X,Y] = meshgrid(-3:.25:3); % 产生已知的数据栅格点 Z = peaks(X,Y); % 计算已知点的函数值 [XI,YI] = meshgrid(-3:.125:3); % 产生更精密的插值点 ZI = interp2(X,Y,Z,XI,YI); % 插值 mesh(X,Y,Z), hold, mesh(XI,YI,ZI+15) hold off axis([-3 3 -3 3 -5 20])二维插值结果如下图所示:

图 2 二维插值结果