-1

Matlab で一連の微分方程式をシミュレートしています。そのために、少なくとも 400 x 80 000 x 24 double の構造体を保存します。

メモリ負荷を制御する最も簡単な方法は何だと思いますか? メモリ マッピング、またはメモリ チェック、データの書き込みと消去のための並列プロセスですか? プログラムはシングル スレッドですが、並列計算用に書き直される可能性があります。

4

1 に答える 1

1

問題文

ここに 2 つの問題があります。これらのいずれかに直面していると思います。

  1. あなたのデータは実際には mxnxz のブロックです
  2. あなたのデータは実際には mxnxz のブロックではありません

1の解決策

データが実際にブロック形式である場合は、データを行列に格納することが最善の解決策である可能性があります。

2の解決策

データがナイス ブロックでない場合は、いくつかの選択を行う必要があります。

データがほぼナイス ブロック (mx(0.99~1.01)nxz など) の場合でも、行列の使用を検討してください。ギャップをゼロまたはNaN値でパディングすることを検討してください。

データがブロックではない場合 (たとえば、mx(0.01~100)nxz)、より柔軟なデータ構造の使用を検討してください。


柔軟なデータ構造の使用について

柔軟な方法でデータを使用する秘訣は、大きな行列 (サイズが異なる場合があります) を特定し、それらを通常の行列にすることです。あなたの場合、データは約 400 x 80000 x 24 であるため、80000 を単純なストレージ構造の次元にする必要があります。24 と 400 はかなり小さいので、柔軟性があるかどうかは気にしません。


結論

  • あまり柔軟ではない最も効率的なデータ構造は、400x80000x24 のマトリックスです。
  • 依然としてかなり効率的である最も柔軟なデータ構造は、約 80000x1 のベクトルを含む 400x24 のセル配列です。
  • かなり柔軟な最も効率的なデータ構造は、約 400x80000 の行列を含む 1x24 のセル配列です。24 は小さいので、意味のある方法で構造体を使用することもできますが、通常はセル配列の方が理にかなっています。
于 2013-11-13T09:08:19.953 に答える