1
これは奇妙な質問ですが、うまくいけば誰かが私を助けることができます。 私は構造体配列で動作する必要があるコードの並列化された性質のために、私はmatlabのコードを持っています。アレイをコピーしますがメモリを増やさない
parforループを実行した後、それらの構造体配列を3次元配列に変換したいと思います。
私は次のコードを使用しています現時点では:
for k = 1:nsim
ksim(:,:,k) = st(k).ksim;
Msim(:,k) = st(k).Msim;
Vsim(:,:,k) = st(k).Vsim;
Psim(:,:,k) = st(k).Psim;
end
clearvars st
をしかし、これは一時的にMATLABは、メモリ使用量を倍増almosので、すべての行列を倍にする必要があるので、非常に非効率的であると思われます。 多くのメモリ使用量を増やすことなくこれを達成するよりスマートな方法はありますか?
なぜ構造体としてデータを残すことはできませんか? – Adriaan
なぜ構造物を使用する必要がありますか?あなたはあなたの出力をあらかじめ割り当てておき、それを並列部分に入れておくことができます。おそらく、あなたはその部分についての詳細を共有することができます。 – Matt
構造体を使用しない場合、行列は3次元A(i、j、k)です。ここで、kはパラレル化された次元です。 Parforはこれらでは動作しません。一方、struct(k).A(i、j)を作ると完全に動作します。 – phdstudent