繁体   English   中英

如何从矩阵中获取ndgrid?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM