3
V
是具有均勻間隔體素的3D矩陣。獲得座標網格/ meshgrid的方法是:如何從矩陣中獲取ndgrid?
[x y z] = ndgrid(1:size(V,1), 1:size(V,2), 1:size(V,3));
它感覺多餘,特別是如果維數更高。有沒有更好的方法來做到這一點?
V
是具有均勻間隔體素的3D矩陣。獲得座標網格/ meshgrid的方法是:如何從矩陣中獲取ndgrid?
[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);