在MATLAB中存储为嵌套单元格的大量数据的内存问题

时间:2016-12-17 23:43:45

标签: matlab

我将大量数据存储为.mat文件中的嵌套单元格。我现在最大的问题是访问这些文件的加载时间,但我想知道潜在的问题是我是否提出了一种存储数据的低效方法,我应该将其重构为更小。

完整文件包含一个单元格aray:

Hemi{1,h}其中有h

的52个版本

.{n,p}其中有n的85个版本和p的最多约100个版本

.Variable其中有10个变量,每个变量都有~2500个值

这个完整的文件占用了我所有的记忆,所以我把它保存在各个部分,又名:

Hemi1.mat=Hemi{1,1} Hemi2.mat=Hemi{1,2}

此应用程序的下一步是加载每个文件,确定它的哪个部分是合适的解决方案(我需要Hemi{1,h}.{n,p}.Var1Hemi{1,h}.{n,p}.Var2Hemi{1,h}.{n,p}.Var3,但是我仍然需要跟踪其他变量),保存解决方案,然后关闭文件并移动到下一个。

  1. 是否有更快的方式加载这些文件?
  2. 问题是不是我的数据集,更多的是我选择存储它?还有更好的选择吗?

1 个答案:

答案 0 :(得分:0)

这是相当多的数据。我有一些你可以调查的建议。第一个是查看是否可以将数据类型更改为Categorical Objects之类的内容。它们的内存效率更高。此外,如果您将字符串存储为最终数据,那么这可能会非常沉重。

其次,您可以查看HDF5 file storage。我听说这是存储结构化数据的好方法。

您最终可以尝试将{n,p}数组转换为表结构。我不确定这对于内存是否更好,但是表格很好用,它可能会帮助你。 (根据您的Matlab版本,您可能没有表格:P)。

我希望这有帮助!

-Kyle