二维和三维网格
[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 , y )
X
Y
x
y
length(y)
length(x)
[ X , Y ] = meshgrid( x ) 与 [X,Y] = meshgrid(x,x) 相同,并返回网格大小为 length(x) × length(x) 的方形网格坐标。
[ X , Y ] = meshgrid( x )
[X,Y] = meshgrid(x,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 , y , z )
Z
z
length(z)
[ X , Y , Z ] = meshgrid( x ) 与 [X,Y,Z] = meshgrid(x,x,x) 相同,并返回网格大小为 length(x) × length(x) × length(x) 的三维网格坐标。
[ X , Y , Z ] = meshgrid( x )
[X,Y,Z] = meshgrid(x,x,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
在二维网格上计算表达式 x 2 + y 2 。
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 ) = x e - x 2 - y 2 。
F = X.*exp(-X.^2-Y.^2); surf(X,Y,F)
从 R2016b 开始,操作网格之前并不总是需要先创建网格。例如,计算表达式 x e - x 2 - y 2 将隐式扩展向量 x 和 y 。有关隐式扩展的详细信息,请参阅 数组与矩阵运算 。
surf(x,y,x.*exp(-x.^2-(y').^2))
在区间 [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
使用单输入语法,基于 x 中定义的坐标生成均匀间隔的三维网格。新网格构成一个网格点正方体。
[X,Y,Z] = meshgrid(x); G = X.^2 + Y.^2 + Z.^2; gridsize = size(G)
gridsize = 1×3 4 4 4
点的 x 坐标,指定为向量。
数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
single
double
int8
int16
int32
int64
uint8
uint16
uint32
uint64
点的 y 坐标,指定为向量。
点的 z 坐标,指定为向量。
网格上的 x 坐标,以二维数组(两个输入)或三维数组(三个输入)的形式返回。
网格上的 y 坐标,以二维数组(两个输入)或三维数组(三个输入)的形式返回。
网格上的 z 坐标,以三维数组形式返回。
meshgrid
ndgrid
meshgrid 和 ndgrid 使用不同的输出格式创建网格。具体来说,使用这些函数之一创建的网格的前两个维度在与另一种网格格式进行比较时会发生交换。一些 MATLAB ® 函数使用 meshgrid 格式的网格,而另一些函数使用 ndgrid 格式,因此在这两种格式之间转换网格是很常见的。
您可以使用 pagetranspose ( 从 R2020b 开始 )或 permute 在这些网格格式之间进行转换,以交换网格数组的前两个维度。例如,用 meshgrid 创建一个三维网格。
pagetranspose
permute
[X,Y,Z] = meshgrid(1:4,1:3,1:2);
现在转置每个网格数组的前两个维度以将网格转换为 ndgrid 格式,并将结果与 ndgrid 的输出进行比较。
Xt = pagetranspose(X); Yt = pagetranspose(Y); Zt = pagetranspose(Z); [Xn,Yn,Zn] = ndgrid(1:4,1:3,1:2); isequal(Xt,Xn) & isequal(Yt,Yn) & isequal(Zt,Zn)
ans = logical 1
使用 pagetranspose 等效于置换前两个维度,而让其他维度保持不变。您也可以使用 permute(X,[2 1 3:ndims(X)]) 执行此运算。
permute(X,[2 1 3:ndims(X)])
backgroundPool
ThreadPool
此函数完全支持基于线程的环境。有关详细信息,请参阅 在基于线程的环境中运行 MATLAB 函数 。
用法说明和限制:
输入必须是浮点双精度或单精度值。
有关详细信息,请参阅 Run MATLAB Functions on a GPU (Parallel Computing Toolbox) 。
有关详细信息,请参阅 Run MATLAB Functions with Distributed Arrays (Parallel Computing Toolbox) 。
在 R2006a 之前推出
griddedInterpolant | mesh | ndgrid | combinations | surf
griddedInterpolant
mesh
combinations
surf