meshgrid 订阅
meshgrid是MATLAB(一款应用软件)中用于生成网格采样点的函数。在使用MATLAB进行3D图形绘制方面有着广泛的应用。 展开全文
meshgrid是MATLAB(一款应用软件)中用于生成网格采样点的函数。在使用MATLAB进行3D图形绘制方面有着广泛的应用。
信息
应    用
3D图形绘制
外文名
meshgrid
实    质
网格采样点的函数
软    件
MATLAB
meshgrid函数简介
生成绘制3D图形所需的网格数据。在计算机中进行绘图操作时, 往往需要一些采样点,然后根据这些采样点来绘制出整个图形。在进行3D绘图操作时,涉及到x、y、z三组数据,而x、y这两组数据可以看做是在Oxy平面内对坐标进行采样得到的坐标对(x, y)例如, 要在“3<=x<=5,6<=y<=9,z不限制区间” 这个区域内绘制一个3D图形,如果只需要整数坐标为采样点的话。我们可能需要下面这样一个坐标构成的矩阵:(3,9),(4,9),(5,9);(3,8),(4,8),(5,8);(3,7),(4,7),(5,7);(3,6),(4,6),(5,6);在matlab中我们可以这样描述这个坐标矩阵:把各个点的x坐标独立出来,得:3,4,5;3,4,5;3,4,5;3,4,5;再把各个点的y坐标也独立出来:9,9,9;8,8,8;7,7,7;6,6,6;这样对应的x、y结合,便表示了上面的坐标矩阵。meshgrid就是产生这样两个矩阵,来简化我们的操作。然后根据(x, y)计算获得z,并绘制出三维图形。在Matlab命令窗口中键入type meshgrid可以查看该函数的源代码(由此可以理解meshgrid的算法思想), 键入doc meshgrid或者help meshgrid可以获得帮助文档。[X,Y] = meshgrid(x,y)解释:输出X的每一行的数值都是复制的x的值;输出Y的每一列的数值都是复制的y的值。[X,Y]=meshgrid(x)与[X,Y]=meshgrid(x,x)是等同的[X,Y,Z]=meshgrid(x,y,z)生成三维数组,可用来计算三变量的函数和绘制三维立体图相关函数: plot3、mesh、surf、automesh、ndgridfunction [xx,yy,zz] = meshgrid(x,y,z)  %MESHGRID Cartesian grid in 2-D/3-D space  % [X,Y] = MESHGRID(xgv,ygv) replicates the grid vectors xgv and ygv to   % produce the coordinates of a rectangular grid (X, Y). The grid vector  % xgv is replicated numel(ygv) times to form the columns of X. The grid   % vector ygv is replicated numel(xgv) times to form the rows of Y.  %  % [X,Y,Z] = MESHGRID(xgv,ygv,zgv) replicates the grid vectors xgv, ygv, zgv   % to produce the coordinates of a 3D rectangular grid (X, Y, Z). The grid   % vectors xgv,ygv,zgv form the columns of X, rows of Y, and pages of Z   % respectively. (X,Y,Z) are of size numel(ygv)-by-numel(xgv)-by(numel(zgv).  %  % [X,Y] = MESHGRID(gv) is equivalent to [X,Y] = MESHGRID(gv,gv).  % [X,Y,Z] = MESHGRID(gv) is equivalent to [X,Y,Z] = MESHGRID(gv,gv,gv).  %  % The coordinate arrays are typically used for the evaluation of functions   % of two or three variables and for surface and volumetric plots.  %  % MESHGRID and NDGRID are similar, though MESHGRID is restricted to 2-D   % and 3-D while NDGRID supports 1-D to N-D. In 2-D and 3-D the coordinates   % output by each function are the same, the difference is the shape of the   % output arrays. For grid vectors xgv, ygv and zgv of length M, N and P   % respectively, NDGRID(xgv, ygv) will output arrays of size M-by-N while   % MESHGRID(xgv, ygv) outputs arrays of size N-by-M. Similarly,   % NDGRID(xgv, ygv, zgv) will output arrays of size M-by-N-by-P while   % MESHGRID(xgv, ygv, zgv) outputs arrays of size N-by-M-by-P.   %  % Example: Evaluate the function x*exp(-x^2-y^2)   % over the range -2 < x < 2, -4 < y < 4,  %  % [X,Y] = meshgrid(-2:.2:2, -4:.4:4);  % Z = X .* exp(-X.^2 - Y.^2);  % surf(X,Y,Z)  %  %  % Class support for inputs xgv,ygv,zgv:  % float: double, single  % integer: uint8, int8, uint16, int16, uint32, int32, uint64, int64  %  % See also SURF, SLICE, NDGRID.% Copyright 1984-2013 The MathWorks, Inc.if nargin==0 || (nargin > 1 && nargout > nargin)  error(message('MATLAB:meshgrid:NotEnoughInputs'));  endif nargin == 2 || (nargin == 1 && nargout < 3) % 2-D array case  if nargin == 1  y = x;  end  if isempty(x) || isempty(y)  xx = zeros(0,class(x));  yy = zeros(0,class(y));  else  xrow = full(x(:)).'; % Make sure x is a full row vector.  ycol = full(y(:)); % Make sure y is a full column vector.  xx = repmat(xrow,size(ycol));  yy = repmat(ycol,size(xrow));  end  else % 3-D array case  if nargin == 1  y = x;  z = x;  end  if isempty(x) || isempty(y) || isempty(z)  xx = zeros(0,class(x));  yy = zeros(0,class(y));  zz = zeros(0,class(z));  else  nx = numel(x);  ny = numel(y);  nz = numel(z);  xx = reshape(full(x),[1 nx 1]); % Make sure x is a full row vector.  yy = reshape(full(y),[ny 1 1]); % Make sure y is a full column vector.  zz = reshape(full(z),[1 1 nz]); % Make sure z is a full page vector.  xx = repmat(xx, ny, 1, nz);  yy = repmat(yy, 1, nx, nz);  zz = repmat(zz, ny, nx, 1);  end  end
收起全文
精华内容
下载资源
问答
  • meshgrid

    2020-01-05 09:56:01
    meshgrid :二维和三维网格 语法 [X,Y] = meshgrid(x,y) [X,Y] = meshgrid(x) [X,Y,Z] = meshgrid(x,y,z) [X,Y,Z] = meshgrid(x) 说明 [X,Y] = meshgrid(x,y) 基于向量 x 和 y 中包含的坐标返回二维网格坐标。X 是一...

    文章目录


    meshgrid :二维和三维网格

    语法

    [X,Y] = meshgrid(x,y)
    [X,Y] = meshgrid(x)
    [X,Y,Z] = meshgrid(x,y,z)
    [X,Y,Z] = meshgrid(x)
    

    说明

    [X,Y] = meshgrid(x,y) 基于向量 x 和 y 中包含的坐标返回二维网格坐标。X 是一个矩阵,每一行是 x 的一个副本;Y 也是一个矩阵,每一列是 y 的一个副本。坐标 X 和 Y 表示的网格有 length(y) 个行和 length(x) 个列。

    [X,Y] = meshgrid(x) 与 [X,Y] = meshgrid(x,x) 相同,并返回网格大小为 length(x)×length(x) 的方形网格坐标。

    [X,Y,Z] = meshgrid(x,y,z) 返回由向量 x、y 和 z 定义的三维网格坐标。X、Y 和 Z 表示的网格的大小为 length(y)×length(x)×length(z)。

    [X,Y,Z] = meshgrid(x) 与 [X,Y,Z] = meshgrid(x,x,x) 相同,并返回网格大小为 length(x)×length(x)×length(x) 的三维网格坐标。

    x = 1:3;
    y = 1:5;
    [X,Y] = meshgrid(x,y)
    
    X = 5×3
    
         1     2     3
         1     2     3
         1     2     3
         1     2     3
         1     2     3
    
    Y = 5×3
    
         1     1     1
         2     2     2
         3     3     3
         4     4     4
         5     5     5
    
    展开全文
  • numpy.meshgrid()理解

    万次阅读 多人点赞 2018-08-09 14:18:51
    一句话解释numpy.meshgrid()——生成网格点坐标矩阵。 关键词:网格点,坐标矩阵 网格点是什么?坐标矩阵又是什么鬼? 我先问个问题:这张图你会生成吗? ...

    一句话解释numpy.meshgrid()——生成网格点坐标矩阵
    关键词:网格点坐标矩阵

    网格点是什么?坐标矩阵又是什么鬼?
    看个图就明白了:
    这里写图片描述
    图中,每个交叉点都是网格点,描述这些网格点的坐标的矩阵,就是坐标矩阵
    再看个简单例子
    这里写图片描述
    A,B,C,D,E,F是6个网格点,坐标如图,如何用矩阵形式(坐标矩阵)来批量描述这些点的坐标呢?
    答案如下:
    X=[012012] X= \left[ \begin{matrix} 0 &amp; 1 &amp; 2 \\ 0 &amp; 1 &amp; 2 \end{matrix} \right]
    Y=[111000] Y= \left[ \begin{matrix} 1 &amp; 1 &amp; 1 \\ 0 &amp; 0 &amp; 0 \end{matrix} \right]
    这就是坐标矩阵——横坐标矩阵XX中的每个元素,与纵坐标矩阵YY中对应位置元素,共同构成一个点的完整坐标。如B点坐标(X12,Y12)=(1,1)(X_{12},Y_{12})=(1,1)

    下面可以自己用matplotlib来试一试,输出就是上边的图

    import numpy as np
    import matplotlib.pyplot as plt
    
    x = np.array([[0, 1, 2], [0, 1, 2]])
    y = np.array([[0, 0, 0], [1, 1, 1]])
    
    
    plt.plot(x, y,
             color='red',  # 全部点设置为红色
             marker='.',  # 点的形状为圆点
             linestyle='')  # 线型为空,也即点与点之间不用线连接
    plt.grid(True)
    plt.show()
    

    如果对matplotlib不熟悉,可能只知道用一列横坐标(线性代数中的1维列向量),一列纵坐标生成(两者元素个数相等)一些点。但是实际上,给matplotlib的坐标信息是矩阵也是可以的,只要横纵坐标的尺寸一样。都会按照对应关系生成点。
    但是有需要注意的地方,按照矩阵给坐标点信息,matplotlib会把横坐标矩阵中每一列对应的点当做同一条线
    举个例子,把上面的代码plotlinestyle=''删掉,或者变成linestyle='-'(这个操作把图的线型改为默认状态),就会发现A-D是连接的,B-E是连接的,C-F是连接的,也即,会认为你输入的是3条线,如图
    这里写图片描述

    作为练习,自己试着生成如下结果
    提示:线型等关键字参数设置可用如下代码

    plt.plot(x, y,
             marker='.',  # 点的形状为圆点
             markersize=10,  # 点设置大一点,看着清楚
             linestyle='-.')  # 线型为点划线
    

    这里写图片描述

    答案

    import numpy as np
    import matplotlib.pyplot as plt
    
    x = np.array([[0, 1, 2, 3],
                  [0, 1, 2, 3],
                  [0, 1, 2, 3],
                  [0, 1, 2, 3]])
    y = np.array([[0, 0, 0, 0],
                  [1, 1, 1, 1],
                  [2, 2, 2, 2],
                  [3, 3, 3, 3]])
    
    
    plt.plot(x, y,
             marker='.',  # 点的形状为圆点
             markersize=10,  # 点设置大一点,看着清楚
             linestyle='-.')  # 线型为点划线
    plt.grid(True)
    plt.show()
    

    到这里,网格点坐标矩阵的概念就解释清楚了。
    那么问题来了,如果需要的图比较大,需要大量的网格点该怎么办呢?比如下面的这种
    这里写图片描述
    最直接但是最笨的方法,就是按照上面的方法把横纵坐标矩阵XXYY写出来,就像上面练习题中的
    这里写图片描述
    很明显,对于网格点很多的情况根本没法用。有啥好的办法吗?
    有的,注意到我们练习题中的坐标矩阵,其实有大量的重复——XX的每一行都一样,YY的每一列都一样。基于这种强烈的规律性,numpy提供的numpy.meshgrid()函数可以让我们快速生成坐标矩阵XXYY

    语法:X,Y = numpy.meshgrid(x, y)
    输入的xy,就是网格点的横纵坐标列向量(非矩阵)
    输出的XY,就是坐标矩阵

    我们来试验一下:改写第一个例子中的代码,用numpy.meshgrid来实现。

    import numpy as np
    import matplotlib.pyplot as plt
    
    x = np.array([0, 1, 2])
    y = np.array([0, 1])
    
    X, Y = np.meshgrid(x, y)
    print(X)
    print(Y)
    
    
    plt.plot(X, Y,
             color='red',  # 全部点设置为红色
             marker='.',  # 点的形状为圆点
             linestyle='')  # 线型为空,也即点与点之间不用线连接
    plt.grid(True)
    plt.show()
    
    # 从输出的结果来看,两种方法生成的坐标矩阵一毛一样。
    [[0 1 2]
     [0 1 2]]
    [[0 0 0]
     [1 1 1]]
    

    这里写图片描述

    最后给出上面这个图的代码
    这里写图片描述

    import numpy as np
    import matplotlib.pyplot as plt
    
    x = np.linspace(0,1000,20)
    y = np.linspace(0,500,20)
    
    X,Y = np.meshgrid(x, y)
    
    plt.plot(X, Y,
             color='limegreen',  # 设置颜色为limegreen
             marker='.',  # 设置点类型为圆点
             linestyle='')  # 设置线型为空,也即没有线连接点
    plt.grid(True)
    plt.show()
    

    参考文献
    https://www.cnblogs.com/black-mamba/p/9186965.html


    留下您的评论,我可以做得更好!
    Self-Discipline  and  Social  CommitmentSelf\text{-}Discipline \ \ and \ \ Social \ \ Commitment

    展开全文
  • meshgrid方法

    2020-04-08 20:29:00
    目录meshgrid绘制曲面图三维网络 meshgrid meshgrid 和 mesh 方法的差别在于是否会画出栅格线 绘制曲面图 生成绘制3D图形所需的网格数据。因为在计算机中进行绘图操作时,往往需要一些采样点,然后根据这些采样点...

    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。
    展开全文
  • meshgrid函数

    2018-08-05 11:40:47
    1、meshgrid函数用两个坐标轴上的点在平面上画格。 用法:  [X,Y]=meshgrid(x,y)   [X,Y]=meshgrid(x)与[X,Y]=meshgrid(x,x)是等同的   [X,Y,Z]=meshgrid(x,y,z)生成三维数组,可用来计算三变量的函数和绘制三...

    1、meshgrid函数用两个坐标轴上的点在平面上画格。

    用法:
      [X,Y]=meshgrid(x,y) 
      [X,Y]=meshgrid(x)与[X,Y]=meshgrid(x,x)是等同的 
      [X,Y,Z]=meshgrid(x,y,z)生成三维数组,可用来计算三变量的函数和绘制三维立体图 

     

    meshgrid是MATLAB中用于生成网格采样点的函数。在使用MATLAB进行3-D图形绘制方面有着广泛的应用,可用来生成绘制3-D图形所需的网格数据。

    meshgrid返回的两个矩阵X、Y必定是行数、列数相等的.矩阵X的行向量由x中的元素决定,Y的列向量由y中的元素决定.

    且X、Y的行数都等于输入参数y中元素的总个数,X、Y的列数都等于输入参数x中元素总个数.

      例如例题1: 
      x=-3:1:3;y=-2:1:2; 
      [X,Y]= meshgrid(x,y); 
      这里meshigrid(x,y)的作用是产生一个以向量x为行,向量y为列的矩阵,而x是从-3开始到3,每间隔1记下一个数据,并把这些数据集成矩阵X;同理y则是从-2到2,每间隔1记下一个数据,并集成矩阵Y。即 
      X= 
      -3 -2 -1 0 1 2 3 
      -3 -2 -1 0 1 2 3 
      -3 -2 -1 0 1 2 3 
      -3 -2 -1 0 1 2 3 
      -3 -2 -1 0 1 2 3 
      Y = 
      -2 -2 -2 -2 -2 -2 -2 
      -1 -1 -1 -1 -1 -1 -1 
      0 0 0 0 0 0 0 
      1 1 1 1 1 1 1 
      2 2 2 2 2 2 2

    附注:例题中meshgrid(-3:1:3,-2:1:2);因为-3:1:3产生的是含有7个数字的行向量;-2:1:2产生的是含有5个数字的行向量。所以该命令的结果是产生5*7的矩阵(X,Y都是5*7的矩阵;其中X是由第一个含7个元素的行向量产生,Y是由第二个行向量产生)

    2.

      [X,Y]=meshgrid(x)与[X,Y]=meshgrid(x,x)是等同的

      [X,Y,Z]=meshgrid(x,y,z)生成三维数组,可用来计算三变量的函数和绘制三维立体图

      相关函数: plot3、mesh、surf、automesh、ndgrid

    例如:axis off;
    x=-2:.2:2;
    y=-1:.2:3;
    [xx,yy]=meshgrid(x,y);
    zz=100*(yy-xx.^2).^2+(1-xx).^2;
    surfc(xx,yy,zz);(三维图)

    展开全文
  • Meshgrid函数

    千次阅读 2018-05-08 17:47:21
    用法: [X,Y]=meshgrid(x,y) [X,Y]=meshgrid(x)与[X,Y]=meshgrid(x,x)是等同的 [X,Y,Z]=meshgrid(x,y,z)生成三维数组,可用来计算三变量的函数和绘制三维立体图这里,主要以[X,Y]=meshgrid(x,y)为例,来对该函数...
  • Matlab中meshgrid的用法简介

    万次阅读 多人点赞 2019-04-26 18:40:47
    meshgrid:网格 1、主要使用的函数为[X,Y]=meshgrid(xgv,ygv); meshgrid函数生成的X,Y是大小相等的矩阵,xgv,ygv是两个网格矢量,xgv,ygv都是行向量。 X:通过将xgv复制length(ygv)行(严格意义上是length(ygv...
  • meshgrid用法

    千次阅读 2017-05-05 14:11:54
    1、meshgrid函数用两个坐标轴上的点在平面上画格。 用法:  [X,Y]=meshgrid(x,y)  [X,Y]=meshgrid(x)与[X,Y]=meshgrid(x,x)是等同的  [X,Y,Z]=meshgrid(x,y,z)生成三维数组,可用来计算三变量的函数和绘制三...
  • numpy meshgrid

    2019-11-26 10:39:30
    numpy.meshgrid() X,Y = numpy.meshgrid(x, y) 输入: x,网格点的横坐标点组成的向量;y,网格点的纵坐标点组成的向量。 输出: X,Y为横纵坐标矩阵。 import numpy as np import matplotlib.pyplot as plt x = np...
  • meshgrid函数说明

    2021-05-17 21:08:11
    meshgrid 语法 用法1 用法二 结论: 产生维数的大小 meshgrid 语法 [X,Y] = meshgrid(x,y) [X,Y] = meshgrid(x) [X,Y,Z] = meshgrid(x,y,z) [X,Y,Z] = meshgrid(x) 用法1 [X,Y] = meshgrid(x,y)基于...
  • np.meshgrid

    2021-04-14 19:06:50
    在Numpy的官方文章里,meshgrid函数的英文描述也显得文绉绉的,理解起来有些难度。 可以这么理解,meshgrid函数用两个坐标轴上的点在平面上画网格。 用法:  [X,Y]=meshgrid(x,y)  [X,Y]=meshgrid(x)与[X,Y]=...
  • matlab meshgrid

    2017-10-23 10:43:40
    meshgrid用于从数组a和b产生网格。生成的网格矩阵A和B大小是相同的。它也可以是更高维的。 用法:  [A,B]=Meshgrid(a,b) 生成size(b)Xsize(a)大小的矩阵A和B。它相当于a从一行重复增加到size(b)行,把b转置成一列...
  • 动机来自于 meshgrid 矩阵与以列向量矩阵作为参数的向量函数的不兼容。 有以下三种表现形式: 1) 域(即一个 N 维矩形域), 2)meshgrid矩阵(例如,冲浪需要的X,Y)和3) 列向量矩阵(即 [v1, v2, ..., vM] 其中...
  • numpy中的meshgrid函数

    万次阅读 多人点赞 2017-12-17 20:50:46
    numpy官方文档meshgrid函数帮助文档https://docs.scipy.org/doc/numpy/reference/generated/numpy.meshgrid.html   meshgrid(*xi, **kwargs) 功能:从一个坐标向量中返回一个坐标矩阵   参数: x1,x2...,xn...
  • numpy.meshgrid

    2017-12-19 11:38:42
    numpy.meshgrid
  • numpy meshgrid函数

    2018-05-25 15:22:00
    1、meshgrid函数用两个坐标轴上的点在平面上画格。 用法: [X,Y]=meshgrid(x,y) [X,Y]=meshgrid(x)与[X,Y]=meshgrid(x,x)是等同的 [X,Y,Z]=meshgrid(x,y,z)生成三维数组,可用来计算三变量的函数和绘制三维立体...
  • tf.meshgrid

    千次阅读 2019-06-24 15:59:27
    tf.meshgrid( *args, **kwargs ) 在N-D网格上广播用于评估的参数。给定N个一维坐标数组*args,返回一个N- d坐标数组的列表输出,用于计算N- d网格上的表达式。 注意: meshgrid支持笛卡尔('xy')和矩阵('ij')...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,889
精华内容 755
关键字:

meshgrid