2012-06-26 31 views
2

我想生成一个n维阵列的索引ndgrid。由于尺寸可能会发生变化,是否有办法包装ndgrid,以便ndgrid的输出数量是动态的?说,例如,我想对于2维阵列的输出为:在Matlab中的ndgrid的动态输出

[output{1} output{2}]=ndgrid(1:5) 

和对于3维阵列的输出为:

[output{1} output{2} output{3}]=ndgrid(1:5) 

等等等等...

+1

你总是可以做到这一点使用eval,创造像“[输出{1} ...输出{2}]”在一个循环的字符串。但我想有一个更清晰的方法。 – Dan

+4

'[output {1:n}] = ndgrid(1:5)'?'? –

+0

@ H.Muster,谢谢! – teng

回答

3

如果您需要不同尺寸的不同尺寸,您可能需要考虑如下几点: creating adjacency matrix。 相关部分是:

ndim = numel(sz); 
I=cell(ndim,1); 
% construct the neighborhood 
for di=1:ndim 
    I{di}=1:sz(di); 
end 
[I{1:ndim}]=ndgrid(I{:}); 
+0

是否有使用'I {1:ndim}'而不是'I {:}'的理由? – rand

+0

@SimonePalazzo我不确定,但我认为你需要定义你期望从'ndgrid'得到多少输出。你可以尝试另一种方式,看看你得到了什么... – Shai