我在 Matlab 中模拟一组微分方程,为此我将保存一个至少 400 x 80 000 x 24 双精度的结构。
您认为控制内存负载的最简单方法是什么?内存映射或内存检查、数据写入和清除的并行过程?该程序是单线程的,但可能会为并行计算而重新编写。
我在 Matlab 中模拟一组微分方程,为此我将保存一个至少 400 x 80 000 x 24 双精度的结构。
您认为控制内存负载的最简单方法是什么?内存映射或内存检查、数据写入和清除的并行过程?该程序是单线程的,但可能会为并行计算而重新编写。
这里有两个问题,我认为你正面临其中之一:
解决方案 1
如果您的数据确实是块形式,那么将数据存储在矩阵中可能是最佳解决方案。
解决方案 2
如果您的数据不是一个不错的块,则需要做出一些选择。
如果您的数据几乎是一个不错的块,(例如 mx(0.99~1.01)nxz,仍然考虑使用矩阵。考虑用零或NaN
值填充间隙。
如果你的数据不是一个块,(例如 mx(0.01~100)nxz,考虑使用更灵活的数据结构。
以灵活的方式使用数据的诀窍是尝试识别大矩阵(大小可能不同)并让它们成为常规矩阵。在您的情况下,数据约为 400 x 80000 x 24,因此您肯定希望 80000 成为简单存储结构的维度。24 和 400 非常小,所以我们不在乎它们是否灵活。