目前我有一個parfor循環在MATLAB中對結構進行計算。雖然我的代碼是有點長後,可以使用下面的例子來模擬:存儲結構變量在Parfor循環中計算 - MATLAB
a.test = [1 2 3];
result = [];
parfor i = 1:3
c = a;
c.test(2) = round(rand());
if c.test(2) == 1
%# Store c in result
end
end
disp(result.test) %# Should show [1 1 3]
一個(因而c)是一個非常大的結構,所以存儲每次迭代是不適合我(因可行內存限制)。
理想情況下,我希望能夠將c直接存儲到我在parfor循環之前初始化的變量。看看MATLAB的Example: Using a Custom Reduction Function,我可以看到可以存儲給定的迭代變量(不必存儲每一次迭代),但我不完全理解它們的方法。我很困惑他們的函數如何產生2個獨立的輸出變量(看似),而函數只定義了一個輸出變量。
我相信這是一個非常普遍的問題,但到目前爲止,我的搜索沒有得到任何有效的結果。
任何幫助將不勝感激。
我對你的意思是什麼在這裏有些困惑:你想要做的並行迭代,只有採取通過一些測試(可能取消其他任務)的第一個結果?如果你正在討論數組中的'cummax'函數,它只會執行一個輸出(恰好是一個2元素數組)。 – Dougal 2012-04-13 05:25:08
關於'cummax'功能,我現在看到它。起初我沒有把A(1)和B(1)作爲手續,但我看到它現在在做什麼。儘管它不適用於我,但你仍在寫作。取消其他任務並不重要,取得結果更重要。不過,下面的Jonas展示了一個簡單的方法來做到這一點。 – rbhalla 2012-04-13 16:36:54