【发布时间】:2014-04-05 16:39:56
【问题描述】:
V 是具有均匀间隔体素的 3D 矩阵。获取坐标网格/网格网格的一种方法是:
[x y z] = ndgrid( 1:size(V,1), 1:size(V,2), 1:size(V,3) );
这感觉是多余的,尤其是在维数更高的情况下。有没有更简洁的方法来做到这一点?
【问题讨论】:
标签: arrays matlab matrix multidimensional-array
V 是具有均匀间隔体素的 3D 矩阵。获取坐标网格/网格网格的一种方法是:
[x y z] = ndgrid( 1:size(V,1), 1:size(V,2), 1:size(V,3) );
这感觉是多余的,尤其是在维数更高的情况下。有没有更简洁的方法来做到这一点?
【问题讨论】:
标签: arrays matlab matrix multidimensional-array
我想你可以这样做,因为你有很多维度(或不断变化的维度):
C = arrayfun(@(x)(1:size(V,x)),1:ndims(V),'UniformOutput',false);
[outArgs{1:ndims(V)}] = ndgrid(C{:})
所以现在使用你的例子
outArgs{1} == x;
outArgs{2} == y;
outArgs{3} == z;
但是对于 3 维,要么让它拥有它,要么你会发现它更整洁:
[m, n, p] = size(V);
[x, y, z] = ndgrid(1:m, 1:n, 1:p);
【讨论】: