MATLAB中是支持三维及三维以上的高维插值的。三维插值的基本原理与一维插值和二维插值是一样的,但三维插值是对三维函数进行的插值。在MATLAB中,使用interp3函数实现插值,其调用格式如下。
vi= interp3(x,y,z,v,xi,yi,zi) %返回值 vi是三维插值网格(xi,yi,zi)上的函数值估计,其中xi,yi,
%zi, vi具有相同的维数
vi=interp3 (x, y, z, v,xi, yi, zi, method) % 采用不同的插值方法进行插值
vi=interp3 (x, y, z, v, xi, yi, zi, method, extrapval) % 若数据超过原始数据的范围时,则输人
%“extrapval"来指定一一种外推方法
在三维插值中,“mtethod”为选取插值的方法。插值的方法有以下4种:邻近插值、双线性插值、样条插值和立方插值。
例:三维插值示例。
1)创建M文件,输人以下代码,得到的原始数据图如图所示
[x,y,z,v]=flow(20); [xi,yi,zi]=meshgrid(1:2:5,[0 1],[1 2]);
vi1=interp3(x,y,z,v,xi,yi,zi, ' nearest ');
vi2= interp3(x,y,z,v,xi,yi,zi, 'linear ');
vi3= interp3(x,y,z,v,xi,yi,zi, 'spline ');
vi4= interp3(x,y,z,v,xi,yi,zi, 'cubic ');
figure
slice(x,y,z,v,2.5,[0.2 0.5],[1 1.52]);
title( '原始数据');
2)接着输人以下代码,显示4种插值方法的结果,如图所示。
>>figure
hold on;
subplot(2,2,1);
slice(xi,yi,zi,vi1 ,2.5,[0.2 0.5],[11.5 2]); title( '邻近插值');
subplot(2,2,2);
slice(xi ,yi,zi,vi2,2.5,[0.2 0.5],[1 1.5 2]); title( '双线性插值');
subplot(2,2,3);
slice(xi,yi,zi,vi3,2.5,[0.2 0.5],[1 1.52]); title( '样条插值');
subplot(2,2,4);
slice(xi,yi,zi,vi4,2.5,[0.2 0.5],[1 1.52]); title( '立方插值');
colormap hsv