現在、MATLAB の構造体で計算を行う parfor ループがあります。私のコードは投稿するには少し長いですが、次の例を使用してエミュレートできます。
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]
a (およびその結果 c) は非常に大きな構造であるため、すべての反復を格納することはできません (メモリの制約のため)。
理想的には、parfor ループの前に初期化する変数に c を直接格納できるようにしたいと考えています。MATLAB のExample: Using a Custom Reduction Functionを見ると、特定の反復変数を格納できることがわかります (すべての反復を格納する必要はありません) が、その方法を完全には理解していません。関数が1つの出力変数しか定義していないのに、関数が2つの別々の出力変数を生成する方法に困惑しています。
これは非常に一般的な問題だと確信していますが、これまでのところ、有効な結果が得られた検索はありません。
どんな助けでも大歓迎です。