Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

ndgrid

N 维空间中的矩形网格

说明

示例

[X1,X2,...,Xn] = ndgrid(x1,x2,...,xn) 复制网格向量 x1,x2,...,xn 以生成 n 维满网格。

示例

[X1,X2,...,Xn] = ndgrid(xg) 指定对所有维度使用单一网格向量 xg。您指定的输出参数的数目决定输出的维度 n

示例

全部折叠

根据向量 [1 3 5 7 9 11 13 15 17 19][2 4 6 8 10 12] 创建一个二维网格。

[X,Y] = ndgrid(1:2:19,2:2:12)
X = 10×6

     1     1     1     1     1     1
     3     3     3     3     3     3
     5     5     5     5     5     5
     7     7     7     7     7     7
     9     9     9     9     9     9
    11    11    11    11    11    11
    13    13    13    13    13    13
    15    15    15    15    15    15
    17    17    17    17    17    17
    19    19    19    19    19    19

Y = 10×6

     2     4     6     8    10    12
     2     4     6     8    10    12
     2     4     6     8    10    12
     2     4     6     8    10    12
     2     4     6     8    10    12
     2     4     6     8    10    12
     2     4     6     8    10    12
     2     4     6     8    10    12
     2     4     6     8    10    12
     2     4     6     8    10    12

计算并绘制函数

x1e-x12-x22

在网格域

-2<x1<2-2<x2<2

创建一个由域值构成的网格。

[X1,X2] = ndgrid(-2:.2:2);

在域上计算函数。

Z = X1 .* exp(-X1.^2 - X2.^2);

生成函数的网格图。

mesh(X1,X2,Z)

Figure contains an axes object. The axes object contains an object of type surface.

在 R2016b 及更高版本中,此任务不需要使用 ndgrid。您可以对这些命令使用隐式扩展来构建网格:

x = -2:.2:2;

Z1 = x.' .* exp(-(x.').^2 - x.^2);

创建一个二维网格并计算网格上的一些函数值。在指定的值之间插值以细化网格。

在范围 [-5,5] 内创建 (x,y) 粗网格。

[X,Y] = ndgrid(-5:0.5:5);

计算网格上的一些函数值并绘制函数图。

f = sin(X.^2) * cos(Y.^2);
surf(X,Y,f)

Figure contains an axes object. The axes object contains an object of type surface.

使用更精细的网格在点之间插值,并绘制结果图。

[X1,Y1] = ndgrid(-5:0.125:5);
F = interpn(X,Y,f,X1,Y1,'spline');
surf(X1,Y1,F)

Figure contains an axes object. The axes object contains an object of type surface.

输入参数

全部折叠

网格向量,指定为包含每个维度的网格坐标的向量。网格向量隐式定义了网格。例如在二维空间中:

Grid vectors implicitly define a full grid

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

所有维度的网格向量,指定为包含网格坐标的向量。ndgrid 使用 xg 作为每个维度的网格向量。

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

输出参数

全部折叠

完整网格表示,以单独的数组形式返回。对于每个输出数组 Xi,第 i 维包含网格向量 xi 的副本。

详细信息

全部折叠

meshgridndgrid 格式之间转换

meshgridndgrid 使用不同的输出格式创建网格。具体来说,使用这些函数之一创建的网格的前两个维度在与另一种网格格式进行比较时会发生交换。一些 MATLAB® 函数使用 meshgrid 格式的网格,而另一些函数使用 ndgrid 格式,因此在这两种格式之间转换网格是很常见的。

您可以使用 pagetranspose从 R2020b 开始)或 permute 在这些网格格式之间进行转换,以交换网格数组的前两个维度。例如,用 meshgrid 创建一个三维网格。

[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)]) 执行此运算。

扩展功能

C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。

版本历史记录

在 R2006a 之前推出