matlab函数meshgrid的用法详解(生成网格矩阵)和ndgrid的区别及用法

Posted Treysure

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab函数meshgrid的用法详解(生成网格矩阵)和ndgrid的区别及用法相关的知识,希望对你有一定的参考价值。

------------------------------------------------------------------

 meshgrid 函数用来生成网格矩阵,可以是二维网格矩阵。

  • exp1_1:生成二维网格,用法为:[x y]=meshgrid(a b);  % a 和b是一维数组,如a=[1 2 3]; b= [2 3 4]; 则生成的 X 和 Y 都是为 3X3 维的矩阵,

>> [x y]=meshgrid(a,b)
x =
    1     2     3
    1     2     3
    1     2     3
y =
  2     2     2
  3     3     3
  4     4     4
    

  • exp1_2:生成二维网格,用法为:[x y]=meshgrid(a b);  % a 和b是一维数组,如a=[1 2 3]; b= [2 3]; 则生成的 X 和 Y 都是为 3X2 维的矩阵,

>> [x y]=meshgrid(a,b)
x =
     1     2     3
   
 1     2     3
y =
     2     2     2
     3     3     3

  • exp1_3:生成二维网格,用法为:[x y]=meshgrid(a b);  % a 和b是一维数组,如a=[1 2]; b= [2 3 4]; 则生成的 X 和 Y 都是为 2X3 维的矩阵,

>> [x y]=meshgrid(a,b)
x =
     1     2
     1     2
     1     2
y =
      2     2
      3     3
      4     4

------------------------------------------------------------------
 meshgrid 函数用来生成网格矩阵,可以是三维网格矩阵。
  • exp2_1:生成三维网格,

x 的每行都是 1 2 3,共三行,y 每列都是2 3 4,共三列。

举个实例:估计函数:x*exp(-x^2-y^2),取值范围 -2 < x < 2, -2 < y < 2,

                [X,Y] = meshgrid(-2:.2:2, -2:.2:2);

                 Z = Y .* exp(-X.^2 - Y.^2);

                 mesh(X,Y,Z)

对于三维网格,生成方式与二维一样 :[x y z]=meshgrid(a b c) ; %算出的结果根据二维的类推

附件:二维网格例子的结果图。

 

------------------------------------------------------------------

meshgrid和ndgrid的区别及用法

实例:z=(x.^2-2*x).*exp(-x.^2-y.^2-x.*y), 用三次样条插值方法得到三维数据网格的样条插值拟合,并绘制曲面
  x0=-3:.6:3;
  y0=-2:.4:2;
  [x,y]=ndgrid(x0,y0);
% >> x0=-3:.6:3;y0=-2:.4:2;
  [x,y]=ndgrid(x0,y0)
x =
  Columns 1 through 6
   -3.0000   -3.0000   -3.0000   -3.0000   -3.0000   -3.0000
   -2.4000   -2.4000   -2.4000   -2.4000   -2.4000   -2.4000
   -1.8000   -1.8000   -1.8000   -1.8000   -1.8000   -1.8000
   -1.2000   -1.2000   -1.2000   -1.2000   -1.2000   -1.2000
   -0.6000   -0.6000   -0.6000   -0.6000   -0.6000   -0.6000
    0       0       0       0       0       0
    0.6000   0.6000   0.6000   0.6000   0.6000    0.6000
    1.2000   1.2000   1.2000   1.2000   1.2000    1.2000
    1.8000   1.8000   1.8000   1.8000   1.8000    1.8000
    2.4000   2.4000   2.4000   2.4000   2.4000    2.4000
    3.0000   3.0000   3.0000   3.0000   3.0000    3.0000
  Columns 7 through 11
   -3.0000   -3.0000   -3.0000   -3.0000   -3.0000
   -2.4000   -2.4000   -2.4000   -2.4000   -2.4000
   -1.8000   -1.8000   -1.8000   -1.8000   -1.8000
   -1.2000   -1.2000   -1.2000   -1.2000   -1.2000
   -0.6000   -0.6000   -0.6000   -0.6000   -0.6000
    0       0       0       0       0
    0.6000    0.6000    0.6000    0.6000    0.6000
    1.2000    1.2000    1.2000    1.2000    1.2000
    1.8000    1.8000    1.8000    1.8000    1.8000
    2.4000    2.4000    2.4000    2.4000    2.4000
    3.0000    3.0000    3.0000    3.0000    3.0000
y =
  Columns 1 through 6
   -2.0000   -1.6000   -1.2000   -0.8000   -0.4000         0
   -2.0000   -1.6000   -1.2000   -0.8000   -0.4000         0
   -2.0000   -1.6000   -1.2000   -0.8000   -0.4000         0
   -2.0000   -1.6000   -1.2000   -0.8000   -0.4000         0
   -2.0000   -1.6000   -1.2000   -0.8000   -0.4000         0
   -2.0000   -1.6000   -1.2000   -0.8000   -0.4000         0
   -2.0000   -1.6000   -1.2000   -0.8000   -0.4000         0
   -2.0000   -1.6000   -1.2000   -0.8000   -0.4000         0
   -2.0000   -1.6000   -1.2000   -0.8000   -0.4000         0
   -2.0000   -1.6000   -1.2000   -0.8000   -0.4000         0
   -2.0000   -1.6000   -1.2000   -0.8000   -0.4000         0
  Columns 7 through 11
    0.4000    0.8000    1.2000    1.6000    2.0000
    0.4000    0.8000    1.2000    1.6000    2.0000
    0.4000    0.8000    1.2000    1.6000    2.0000
    0.4000    0.8000    1.2000    1.6000    2.0000
    0.4000    0.8000    1.2000    1.6000    2.0000
    0.4000    0.8000    1.2000    1.6000    2.0000
    0.4000    0.8000    1.2000    1.6000    2.0000
    0.4000    0.8000    1.2000    1.6000    2.0000
    0.4000    0.8000    1.2000    1.6000    2.0000
    0.4000    0.8000    1.2000    1.6000    2.0000
    0.4000    0.8000    1.2000    1.6000    2.0000
%
  z=(x.^2-2*x).*exp(-x.^2-y.^2-x.*y);
  sp=csapi(x0,y0,z);
  fnplt(sp);
附件:san维网格例子的结果图。

    
  • 其实,对于2D,3D使用meshgrid和ndgrid都可以,但要注意:
  • [X1,X2,X3] = NDGRID(x1,x2,x3)<=>[X2,X1,X3] = MESHGRID(x2,x1,x3)
  • x和y轴要反向
    
  • 为何呢?帮助说的很清楚:因为NDGRID适用于n维空间,而meshgrid适用于笛卡尔空间。
  • meshgrid和ndgrid的用法不同之处在于:2D、3D都可以使用(区别是x轴,y轴的转换),但对于4D、5D...只能使用ndgrid.
  • 为什么要使用meshgrid?
  • matlab使用矩阵的方式进行运算,对于2D而言,如果采样10个点(指x,y轴),那么对于x=第一个采样点,反映到矩阵就是10个,即不管y是哪个值,x的第一采样点保持不变;对y是同理。因此,2D产生的x和y都是两维矩阵。
  • 最后给一个实例,说明两者在这里是通用的:
x0=-3:.6:3; y0=-2:.4:2; [x,y]=ndgrid(x0,y0); [Y,X]=meshgrid(y0,x0); z=(x.^2-2*x).*exp(-x.^2-y.^2-x.*y); Z=(X.^2-2*X).*exp(-X.^2-Y.^2-X.*Y); SP1=csapi(x0,y0,z); SP2=csapi(x0,y0,Z); subplot(121),fnplt(SP1); subplot(122),fnplt(SP2);
附件:meshgrid和ndgrid网格例子的结果比较图


以上是关于matlab函数meshgrid的用法详解(生成网格矩阵)和ndgrid的区别及用法的主要内容,如果未能解决你的问题,请参考以下文章

matlab mashgrid 函数

matlab里面mesh绘图,如何改变指定区域的颜色

MATLAB中用mesh函数画出三维图后,怎么添加一个Z=0的平面?

MATLAB学习——三维曲面图像绘制

MATLAB学习——三维曲面图像绘制

Surf的MATLAB函数名