码迷,mamicode.com
首页 > 其他好文 > 详细

meshgrid方法

时间:2020-04-08 20:46:10      阅读:108      评论:0      收藏:0      [点我收藏+]

标签:一个   matlab   方法   输出   draw   shape   语法   lang   containe   

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.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。

meshgrid方法

标签:一个   matlab   方法   输出   draw   shape   语法   lang   containe   

原文地址:https://www.cnblogs.com/rongyupan/p/12662534.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!