-1

我在 Matlab 中模拟一组微分方程,为此我将保存一个至少 400 x 80 000 x 24 双精度的结构。

您认为控制内存负载的最简单方法是什么?内存映射或内存检查、数据写入和清除的并行过程?该程序是单线程的,但可能会为并行计算而重新编写。

4

1 回答 1

1

问题陈述

这里有两个问题,我认为你正面临其中之一:

  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 的矩阵
  • 仍然相当有效的最灵活的数据结构是 400x24 的元胞数组,其中包含大约 80000x1 的向量
  • 仍然相当灵活的最有效的数据结构是一个 1x24 的元胞数组,其中包含大约 400x80000 的矩阵。由于 24 很小,您甚至可以以有意义的方式为此使用结构,但通常单元数组会更有意义。
于 2013-11-13T09:08:19.953 回答