我在Matlab中有下面的代碼(當然簡化了,但是這顯示了問題的根源),它以前使用for
;我想改變它使用parfor
代替:Matlab - 如何轉換此代碼,以便它可以使用parfor運行?
isForeground = ones(1, size(In, 1));
% this used to be a simple for
parfor i=1:X
data = output_of_some_expensive_function();
% do some other stuff with data here
% the part below is the problem; isForeground basically keeps track of all the places where data was never a zero
isForeground(data == 0) = 0;
end
Matlab的抱怨說,Valid indices for 'isForeground' are restricted in PARFOR loops
。有沒有辦法解決這個問題?我想只保存所有data
輸出,然後運行一個單獨的傳統for
循環,我將執行isForeground
部分,但問題是X
非常大,並且保存所有數據輸出將會佔用大量內存。
是否有另一種方法呢?
這似乎是一個很好的解決方案;然而,我在代碼中發現了額外的依賴關係,所以最終看起來我唯一的可能性就是保存所有數據並在最後運行另一個for循環,所以我不會使用它。感謝您的回答,雖然 – houbysoft 2013-05-02 04:02:05
沒有問題。祝你好運! – 2013-05-02 04:12:56