从ndgrid网格表示矩阵到网格点

时间:2016-03-09 21:55:11

标签: arrays matlab matrix grid

通过使用ndgrid,我们可以获得表示网格的矩阵:

[Y, X, Z]=ndgrid(1:2,3:4,5:6)

Y(:,:,1) =
 1     1
 2     2

Y(:,:,2) =
 1     1
 2     2

X(:,:,1) =
 3     4
 3     4

X(:,:,2) =
 3     4
 3     4

Z(:,:,1) =
 5     5
 5     5

Z(:,:,2) =
 6     6
 6     6

然而,实际上有8个网格“点”

(3,1,5), (3,1,6), (3,2,5), (3,2,6), (4,1,5), (4,1,6), (4,2,5), (4,2,6)

如何创建这8个向量的矩阵(在此过程中是否使用ndgrid)?也就是说,

3 1 5
3 1 6
3 2 5
3 2 6
4 1 5
4 1 6
4 2 5
4 2 6

我见过this related question,但它使用meshgrid,只适用于两个维度。

2 个答案:

答案 0 :(得分:0)

易。只需线性化ndgrid的输出:

[Y, X, Z]=ndgrid(1:2,3:4,5:6);
out = [X(:) Y(:) Z(:)]

如果您想要与问题中的顺序相同,请使用sortrows

out = sortrows([X(:) Y(:) Z(:)])

答案 1 :(得分:0)

你只需要理顺这些3D矢量:

>> vertices = [X(:),Y(:),Z(:)]

vertices =

     3     1     5
     3     2     5
     4     1     5
     4     2     5
     3     1     6
     3     2     6
     4     1     6
     4     2     6