假設我有三個向量a,b,c
並且想對所有組合應用功能f
。因此,我使用[A,B,C] = ndgrid(a,b,c); result = f(A,B,C)
並使用逐點評估來實現f
,例如, (A.^B).*C
。Matlab:如何嵌套ndgrid?
但是,第二個函數g
的單獨評估僅取決於a
和b
而不是c
。因此,G=g(A,B)
(在我的示例中爲A.^B
)的調用將通過冗餘地調用具有相同參數length(c)
次的函數來浪費時間。我可以使用單獨的ndgrid
,但我希望g
的結果存儲在相同的維度中,如A,B
和C
,因此我可以稍後調用h(G,A,C)
沒有進一步修改。
如何才能實現這一目標,以及如何沒有使用嵌套循環for
反而拖慢程序浪費這個冗餘空間?
我不知道這個'repmat'ing(或使用'ndgrid')不會浪費大量的內存通過增加冗餘,或者matlab是否以複雜的方式存儲它... – 2011-04-06 12:25:39
...顯然不是。 'a = linspace(0,1,1e3); [A,B,C] = ndgrid(a,a,a)''在我的matlab會話中死了 – 2011-04-06 12:31:48
感謝您的更新,我會嘗試並查看'bsxfun'。目前內存可能並不是我主要關心的問題,但我只是好奇 – 2011-04-06 12:42:00