2014-03-04 43 views
3

V是具有均勻間隔體素的3D矩陣。獲得座標網格/ meshgrid的方法是:如何從矩陣中獲取ndgrid?

[x y z] = ndgrid(1:size(V,1), 1:size(V,2), 1:size(V,3)); 

它感覺多餘,特別是如果維數更高。有沒有更好的方法來做到這一點?

回答

2

我想你可以做這樣的是你有很多尺寸的(或尺寸的變動數):

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);