meshgrid

 

说明

示例

[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) 返回由向量 xy 和 z 定义的三维网格坐标。XY 和 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 定义的 x 坐标和向量 y 定义的 y 坐标创建二维网格坐标。

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

在二维网格上计算表达式 x2+y2。

X.^2 + Y.^2
ans = 5×3

     2     5    10
     5     8    13
    10    13    18
    17    20    25
    26    29    34

 
 

绘制曲面图

使用均匀分布的 x 坐标和 y 坐标在区间 [-2,2] 内创建二维网格。

x = -2:0.25:2;
y = x;
[X,Y] = meshgrid(x);

在二维网格上计算并绘制函数 f(x,y)=xex2y2。

F = X.*exp(-X.^2-Y.^2);
surf(X,Y,F)

从 R2016b 开始,操作网格之前并不总是需要先创建网格。例如,计算表达式 xex2y2 将隐式扩展向量 x 和 y。有关隐式扩展的详细信息,请参阅数组与矩阵运算

surf(x,y,x.*exp(-x.^2-(y').^2))

 
 

三维网格

在区间 [0,6] 内使用定义的 xy 和 z 坐标创建三维网格坐标,并计算表达式 x2+y2+z2。

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

使用单输入语法,基于 x 中定义的坐标生成均匀分布的三维网格。新网格构成一个网格点正方体。

[X,Y,Z] = meshgrid(x);
G = X.^2 + Y.^2 + Z.^2;
gridsize = size(G)
gridsize = 1×3

     4     4     4

 
 

输入参数

全部折叠

x - 点的 x 坐标
向量

点的 x 坐标,指定为向量。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

y - 点的 y 坐标
向量

点的 y 坐标,指定为向量。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

z - 点的 z 坐标
向量

点的 z 坐标,指定为向量。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

输出参数

全部折叠

X - 网格上的 x 坐标
二维或三维数组

网格上的 x 坐标,以二维数组(两个输入)或三维数组(三个输入)的形式返回。

Y - 网格上的 y 坐标
二维或三维数组

网格上的 y 坐标,以二维数组(两个输入)或三维数组(三个输入)的形式返回。

Z - 网格上的 z 坐标
三维数组

网格上的 z 坐标,以三维数组形式返回。

 

****************************************************************************************************************************************************************************************************************

  • 函数功能

    生成绘制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、meshsurf、automesh、ndgrid

 

 
posted @ 2020-09-19 11:05  yongbin-H  阅读(1109)  评论(0编辑  收藏  举报