我正在使用ndgrid
来创建一系列矩形网格。例如:
nx = [1 2 3];
ny = [4 5 6];
nz = [7 8 9];
[x_mesh, y_mesh, z_mesh] = ndgrid(nx, ny, nz);
有没有一种简单的方法可以将矩形网格的坐标转换为NxM数组(在本例中为27x3)?结果应如下所示:
[1,4,7;
1,4,8;
1,4,9;
1,5,7;
1,5,8;
1,5,9;
1,6,7;
1,6,8;
1,6,9;
...
3,6,7;
3,6,8;
3,6,9]
如果可能的话,我想指定编译数组中坐标的方向。例如,上面沿z移动,然后是y,然后是x。如果可以指定以x,然后y,然后z的顺序移动,那将是很好的。
答案 0 :(得分:2)
以下代码为您提供了所描述的数组。
nx = [1 2 3];
ny = [4 5 6];
nz = [7 8 9];
[x_mesh, y_mesh, z_mesh] = ndgrid(nx, ny, nz);
grid = reshape(permute([x_mesh; y_mesh; z_mesh],[3 2 1]),[],3);
首先迭代x,然后y,然后z,你可以使用
grid = [x_mesh(:) y_mesh(:) z_mesh(:)]
可以直接控制迭代次序的通用解决方案是
order = [1 3 2];
grid = reshape(permute(cat(4,x_mesh,y_mesh,z_mesh),[order 4]),[],3)
首先在x上迭代,然后是z,然后是y。