[英]How to get an ndgrid from a matrix?
V
是具有均匀间隔的体素的3D矩阵。 获取坐标网格/网格网格的方法是:
[x y z] = ndgrid( 1:size(V,1), 1:size(V,2), 1:size(V,3) );
感觉多余,特别是如果尺寸的数量更高。 有没有更简洁的方法来做到这一点?
我想你可以这样做,因为你有很多尺寸(或不断变化的尺寸):
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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.