Matlab で一連の微分方程式をシミュレートしています。そのために、少なくとも 400 x 80 000 x 24 double の構造体を保存します。
メモリ負荷を制御する最も簡単な方法は何だと思いますか? メモリ マッピング、またはメモリ チェック、データの書き込みと消去のための並列プロセスですか? プログラムはシングル スレッドですが、並列計算用に書き直される可能性があります。
Matlab で一連の微分方程式をシミュレートしています。そのために、少なくとも 400 x 80 000 x 24 double の構造体を保存します。
メモリ負荷を制御する最も簡単な方法は何だと思いますか? メモリ マッピング、またはメモリ チェック、データの書き込みと消去のための並列プロセスですか? プログラムはシングル スレッドですが、並列計算用に書き直される可能性があります。
ここに 2 つの問題があります。これらのいずれかに直面していると思います。
1の解決策
データが実際にブロック形式である場合は、データを行列に格納することが最善の解決策である可能性があります。
2の解決策
データがナイス ブロックでない場合は、いくつかの選択を行う必要があります。
データがほぼナイス ブロック (mx(0.99~1.01)nxz など) の場合でも、行列の使用を検討してください。ギャップをゼロまたはNaN
値でパディングすることを検討してください。
データがブロックではない場合 (たとえば、mx(0.01~100)nxz)、より柔軟なデータ構造の使用を検討してください。
柔軟な方法でデータを使用する秘訣は、大きな行列 (サイズが異なる場合があります) を特定し、それらを通常の行列にすることです。あなたの場合、データは約 400 x 80000 x 24 であるため、80000 を単純なストレージ構造の次元にする必要があります。24 と 400 はかなり小さいので、柔軟性があるかどうかは気にしません。