meshgrid方法

meshgrid

meshgrid 和 mesh 方法的差别在于是否会画出栅格线

绘制曲面图

  • 生成绘制3D图形所需的网格数据。因为在计算机中进行绘图操作时,往往需要一些采样点,然后根据这些采样点来绘制出整个图形。

  • 涉及到x、y这两组数据可以看做是在 Oxy 平面内对坐标进行采样得到的坐标对(x, y)。

  • [X,Y] = meshgrid(x,y)

    • 解释:输出 X 的每一行的数值都是复制的x的值;输出 Y 的每一列的数值都是复制的y的值。
    • 所以,若x-1xm维, y-1xn维,则[X,Y]为 mxn 维
    • 也就是说,在 XOY 平面上,用m个x和n个y,通过不断做垂线,产生交点从而生成小的矩形网格的方法,生成网格图。
  • [X,Y]=meshgrid(x)[X,Y]=meshgrid(x,x) 是等同的

    % meshgrid--draw 2D figure.
    >> a=[1 2 3]; b= [2 3];
    >> [x y]=meshgrid(a,b)
    x =
         1     2     3
         1     2     3
    y =
         2     2     2
         3     3     3
    % shape(x)=shape(y)=2x3
    
    % Draw 3D figure
    [X,Y] = meshgrid(-2:.2:2, -2:.2:2);
    Z = Y .* exp(-X.^2 - Y.^2);
    mesh(X,Y,Z)
    
    • 结果图片:Meshgrid-1.jpgMeshgrid-1.jpg
  • 从 R2016b 开始,操作网格之前并不总是需要先创建网格,可以直接使用 surf 语句 surf(x, y, z)

三维网络

  • [X,Y,Z]=meshgrid(x,y,z) 生成三维数组

  • 在区间 [0,6] 内使用定义的 x、y 和 z 坐标创建三维网格坐标,并计算表达式 \(x^2+y^2+z^2\)

    x = 0:2:6;
    y = 0:1:6;
    z = 0:3:6;
    [X,Y,Z] = meshgrid(x,y,z);
    F = X.^2 + Y.^2 + Z.^2;
    
  • 确定网格的大小。三个坐标向量具有不同的长度,构成一个网格点矩形框。

    gridsize = size(F)
    
    % 结果
    gridsize = 1×3
    
     7     4     3
    
    • 输出的 gridsize 是 x-y-z 的三个维度。
    • 也就是说,X,Y,Z都是 7x4。每个都是3层,即X[:,:,1-3]
      • X 的每行都是0,2,4,6;
      • Y 的每列都是0-6;
      • Z 的所有元素都是0,3,6;
    • 可以理解成 z 层 x-y 平面。比如本题 3层7x4 平面。
  • 使用单输入语法,基于 x 中定义的坐标生成均匀分布的三维网格。新网格构成一个网格点正方体。

    [X,Y,Z] = meshgrid(x);
    G = X.^2 + Y.^2 + Z.^2;
    gridsize = size(G)
    
    % 结果
    gridsize = 1×3
    
     4     4     4
    
    • 此时只输入 x,因为 x 只有4个元素,则 X-Y-Z 皆是 4x4维矩阵,共有4层。X的每行都是0,2,4,6; Y的每列都是0,2,4,6; Z的所有元素都是0,2,4,6。
posted @ 2020-04-08 20:29  rongyupan  阅读(1011)  评论(0编辑  收藏  举报