命令3 interp3
功能 三维数据插值(查表)
格式
(1)VI = interp3(X,Y,Z,V,XI,YI,ZI)
找出由参量X,Y,Z决定的三元函数V=V(X,Y,Z)在点(XI,YI,ZI)的值。参量XI,YI,ZI 是同型阵列或向量。若向量参量XI,YI,ZI 是不同长度,不同方向(行或列)的向量,这时输出参量VI 与Y1,Y2,Y3 为同型矩阵。其中Y1,Y2,Y3 为用命令meshgrid(XI,YI,ZI)生成的同型阵列。若插值点(XI,YI,ZI)中有位于点(X,Y,Z)之外的点,则相应地返回特殊变量值NaN。
(2)VI = interp3(V,XI,YI,ZI)
缺省地, X=1:N ,Y=1:M, Z=1:P ,其中,[M,N,P]=size(V),再按上面的情形计算。
(3)VI = interp3(V,n)
作n 次递归计算,在V 的每两个元素之间插入它们的三维插值。这样,V 的阶数将不断增加。interp3(V)等价于interp3(V,1)。
(4)VI = interp3(......,method) %用指定的算法method 作插值计算:
‘linear’:线性插值(缺省算法);
‘cubic’:三次插值;
‘spline’:三次样条插值;
‘nearest’:最邻近插值。
说明 在所有的算法中,都要求X,Y,Z 是单调且有相同的格点形式。当X,Y,Z 是等距且单调时,用算法’*linear’,’*cubic’,’*nearest’,可得到快速插值。
例5
>>[x,y,z,v] = flow(20);
>>[xx,yy,zz] = meshgrid(.1:.25:10, -3:.25:3, -3:.25:3);
>>vv = interp3(x,y,z,v,xx,yy,zz);
>>slice(xx,yy,zz,vv,[6 9.5],[1 2],[-2 .2]); shading interp;colormap cool
命令4 interpft
功能 用快速Fourier 算法作一维插值
格式
(1)y = interpft(x,n)
返回包含周期函数x 在重采样的n 个等距的点的插值y。若length(x)=m,且x 有采样间隔dx,则新的y 的采样间隔dy=dx*m/n。注意的是必须n≥m。若x 为一矩阵,则按x 的列进行计算。返回的矩阵y 有与x 相同的列数,但有n 行。
(2)y = interpft(x,n,dim)
沿着指定的方向dim 进行计算
命令5 griddata
功能 数据格点
格式
(1)ZI = griddata(x,y,z,XI,YI)
用二元函数z=f(x,y)的曲面拟合有不规则的数据向量x,y,z。griddata 将返回曲面z 在点(XI,YI)处的插值。曲面总是经过这些数据点(x,y,z)的。输入参量(XI,YI)通常是规则的格点(像用命令meshgrid 生成的一样)。XI 可以是一行向量,这时XI 指定一有常数列向量的矩阵。类似地,YI 可以是一列向量,它指定一有常数行向量的矩阵。
(2)[XI,YI,ZI] = griddata(x,y,z,xi,yi)
返回的矩阵ZI 含义同上,同时,返回的矩阵XI,YI 是由行向量xi 与列向量yi 用命令meshgrid 生成的。
(3)[XI,YI,ZI] = griddata(.......,method)
用指定的算法method 计算:
‘linear’:基于三角形的线性插值(缺省算法);
‘cubic’: 基于三角形的三次插值;
‘nearest’:最邻近插值法;
‘v4’:MATLAB 4 中的griddata 算法。
命令6 spline
功能 三次样条数据插值
格式
(1)yy = spline(x,y,xx)
对于给定的离散的测量数据x,y(称为断点),要寻找一个三项多项式y = p(x) ,以逼近每对数据(x,y)点间的曲线。过两点(xi, yi) 和(xi+1, yi+1) 只能确定一条直线,而通过一点的三次多项式曲线有无穷多条。为使通过中间断点的三次多项式曲线具有唯一性,要增加两个条件(因为三次多项式有4 个系数):
a.三次多项式在点(xi, yi) 处有: p¢i(xi) = p¢i(xi) ;
b.三次多项式在点(xi+1, yi+1) 处有: p¢i(xi+1) = pi¢(xi+1) ;
c.p(x)在点(xi, yi) 处的斜率是连续的(为了使三次多项式具有良好的解析性,加上的条件);
d.p(x)在点(xi, yi) 处的曲率是连续的;
对于第一个和最后一个多项式,人为地规定如下条件:
①. p¢1¢(x) = p¢2¢(x)
②. p¢n¢(x) = p¢n¢-1(x)
上述两个条件称为非结点(not-a-knot)条件。