現在、私は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)非常に大きな構造体であるが(原因に私のために現実的ではありませんメモリの制約)。
理想的には、私はparforループの前に初期化する変数にまっすぐにcを格納できるようにしたいと思います。 MATLABのExample: Using a Custom Reduction Functionを見ると、ある反復変数を格納することが可能であることがわかりますが(1回の繰り返しを保存する必要はありません)、その方法を完全には理解していません。関数が2つの別個の出力変数(一見すると)をどのように生成するか、関数が1つの出力変数のみを定義する方法にはうんざりです。
私はこれが非常に一般的な問題だと確信していますが、これまでのところ、私の検索では何も有効な結果が得られていません。
ご協力いただければ幸いです。
私はあなたがここに何を意味するかによって少し混乱している:あなたは、並列反復を行うだけ(おそらく他のタスクをキャンセルする)いくつかのテストに合格し、最初の結果を取るようにしたいですか?配列内の 'cummax'関数について言えば、1つの出力しかしません(2要素配列になります)。 – Dougal
'cummax'関数に関しては、私は今それを見ています。最初はA(1)とB(1)を手続きとして無視しましたが、今は何をしているのか分かります。あなたは私には当てはまりませんが、あなたは書きました。他のタスクをキャンセルすることは重要ではありません。その結果を得ることが重要です。しかし、以下のJonasはこれを行う簡単な方法を示しています。 – rbhalla