Matlab中插值函数汇总(下)

      Matlab中插值函数汇总分上下两个部分,主要整合自matlabsky论坛dynamic发表于2009-2-21 21:53:26 的主题帖,以及豆丁网rickoon上传的教材第8章《插值,拟合与查表》;实际上,它很多内容都可以从Matlab-help有关插值函数部分找到对应的部分。博文在整合这两个部分时,对其中的某些细节做了注解(【标以红色的文字】),并对行文方式做了重新编排,去掉了一些不必要的运行结果(这些结果只要将代码复制到Matlab窗口即可得到)。 

      命令5——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 进行计算

       命令6—— 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 算法。

       命令7—— meshgrid
       功能:生成用于画三维图形的矩阵数据。
       格式: [X,Y] = meshgrid(x,y)

       将由向量x,y(可以是不同方向的)指定的区域[min(x),max(x) , min(y) , max(y)] 用直线x=x(i),y=y(j) ( i=1,2,…,length(x) ,j=1,2,…,length(y))进行划分。这样,得到了length(x)*length(y)个点,这些点的横坐标用矩阵X 表示,X 的每个行向量与向量x 相同;这些点的纵坐标用矩阵Y 表示,Y 的每个列向量与向量y 相同。其中X,Y可用于计算二元函数z=f(x,y)与三维图形中xy 平面矩形定义域的划分或曲面作图。
       [X,Y] = meshgrid(x) %等价于[X,Y]=meshgrid(x,x)。
       [X,Y,Z] = meshgrid(x,y,z) %生成三维阵列X,Y,Z,用于计算三元函数v=f(x,y,z)或三维容积图。
       例7   
[X,Y] = meshgrid(1:3,10:14)

       命令8—— ndgrid

       功能:生成用于多维函数计算或多维插值用的阵列
       格式 [X1,X2,…,Xn] = ndgrid(x1,x2,…,xn) %把通过向量x1,x2,x3…,xn 指定的区域转换为数组x1,x2,x3,…,xn 。这样, 得到了 length(x1)*length(x2)*…*length(xn)个点,这些点的第一维坐标用矩阵X1 表示,X1 的每个第一维向量与向量x1 相同;这些点的第二维坐标用矩阵X2 表示,X2 的每个第二维向量与向量x2 相同;如此等等。
       其中X1,X2,…,Xn 可用于计算多元函数y=f(x1,x2,…,xn)以及多维插值命令用到的阵列。
       [X1,X2,…,Xn] = ndgrid(x) %等价于[X1,X2,…,Xn] = ndgrid(x,x,…,x)

       

     【注,整合过程中去掉了spline这个命令,因为会在另外的博文中详细阐述,另外还去掉了tabel1和tabel2,因为它们在运行时均出现了: ??? Undefined function or method 'table1' for input arguments of type 'double'.原因尚不清楚】

 

原文网址:

[1] http://www.matlabsky.com/forum.php?mod=viewthread&tid=690&extra=&ordertype=1&page=1   

[2] http://www.docin.com/p-736209256.html  http://blog.sina.com.cn/s/blog_6fd9615d01012ecz.html

 

 

 

 

posted on 2016-09-12 22:29  Paulcnblogs  阅读(976)  评论(0编辑  收藏  举报

导航