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
在网格域上计算函数
计算并绘制函数
在网格域
和 。
创建一个由域值构成的网格。
[X1,X2] = ndgrid(-2:.2:2);
在域上计算函数。
Z = X1 .* exp(-X1.^2 - X2.^2);
生成函数的网格图。
mesh(X1,X2,Z)
在 R2016b 及更高版本中,此任务不需要使用 ndgrid
。您可以对这些命令使用隐式扩展来构建网格:
x = -2:.2:2;
Z1 = x.' .* exp(-(x.').^2 - x.^2);
对数据插值
创建一个二维网格并计算网格上的一些函数值。在指定的值之间插值以细化网格。
在范围 内创建 粗网格。
[X,Y] = ndgrid(-5:0.5:5);
计算网格上的一些函数值并绘制函数图。
f = sin(X.^2) * cos(Y.^2); surf(X,Y,f)
使用更精细的网格在点之间插值,并绘制结果图。
[X1,Y1] = ndgrid(-5:0.125:5);
F = interpn(X,Y,f,X1,Y1,'spline');
surf(X1,Y1,F)
输入参数
x1,x2,...,xn
— 网格向量(指定为单独的参数)
向量
网格向量,指定为包含每个维度的网格坐标的向量。网格向量隐式定义了网格。例如在二维空间中:
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
复数支持: 是
xg
— 所有维度的网格向量
向量
所有维度的网格向量,指定为包含网格坐标的向量。ndgrid
使用 xg
作为每个维度的网格向量。
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
复数支持: 是
输出参数
X1,X2,...,Xn
— 完整网格表示
数组
完整网格表示,以单独的数组形式返回。对于每个输出数组 Xi
,第 i
维包含网格向量 xi
的副本。
详细信息
在 meshgrid
和 ndgrid
格式之间转换
meshgrid
和 ndgrid
使用不同的输出格式创建网格。具体来说,使用这些函数之一创建的网格的前两个维度在与另一种网格格式进行比较时会发生交换。一些 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++ 代码。
基于线程的环境
使用 MATLAB® backgroundPool
在后台运行代码或使用 Parallel Computing Toolbox™ ThreadPool
加快代码运行速度。
此函数完全支持基于线程的环境。有关详细信息,请参阅在基于线程的环境中运行 MATLAB 函数。
GPU 数组
通过使用 Parallel Computing Toolbox™ 在图形处理单元 (GPU) 上运行来加快代码执行。
用法说明和限制:
一维语法
X = ndgrid(x)
返回gpuArray
列向量X
,其中包含输入gpuArray
x
的元素以用作一维网格。输入必须是浮点双精度或单精度值。
有关详细信息,请参阅Run MATLAB Functions on a GPU (Parallel Computing Toolbox)。
分布式数组
使用 Parallel Computing Toolbox™ 在集群的组合内存中对大型数组进行分区。
用法说明和限制:
一维语法
X = ndgrid(x)
返回分布式数组列向量X
,其中包含输入分布式数组x
的元素以用作一维网格。输入必须是浮点双精度或单精度值。
有关详细信息,请参阅Run MATLAB Functions with Distributed Arrays (Parallel Computing Toolbox)。
版本历史记录
在 R2006a 之前推出
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)