質問: j(1,i); [final]=abc(a,b,c,in); end
回答: 基本的には |parfor| 内の計算はワーカーの matlab プロセスで計算されるため、使われる変数はワーカーのワークスペースに一時的でも存在しなくてはなりません。ワーカーは共有メモリ(shared memory)ではなく分散メモリ(distributed memory)の構造のため、必要なデータはすべてコピーされる必要があります。 ただし、書き方によってはすべてのワーカーに同じデータを渡すのではなく、それぞれのワーカーが必要としている部分だけを渡すことができます。(参考: )例えば in = read_input(); parfor i = 1:size(in,2) final(i) = abc(in(:,i)) end この場合、 |in| はインデックスされていて、各ワーカーにはそれぞれが担当する列だけが渡され、データ通信が最小限に抑えられます。 また、 |abc| の中でどのような処理を行っているかにもよりますが、 を使ってデータをワーカーに分散して扱う方法もあります。