在MATLAB中有效地重组或引用大数据

时间:2011-03-15 14:27:06

标签: memory matlab data-structures performance

我目前正在使用memmapfile将大量(数十GB)数据文件带入Matlab。我正在读取的文件由几个字段构成,这些字段描述了它后面的数据。以下是我的格式外观的示例:

m.format = { 'uint8' [1 1024] 'metadata'; ...
'uint8' [1 500000] 'mydata' };
m.repeat = 10000;

所以,我最终得到了一个结构m,其中一个数据样本被解决如下:

single_element = m.data(745).mydata(26);

我想将这些数据视为一个矩阵,例如10,000 x 500,000。以这种方式索引单个项目并不困难,尽管有点麻烦。当我想要访问时,我会遇到真正的问题。每一排的第四列。 MATLAB不允许以下内容:

single_column = m.data(:).mydata(4);

我可以编写一个循环来慢慢将整个事物分成一个实际的矩阵(顺便说一下,我不关心元数据),但是对于这么大的数据来说,很难过分强调这将是多么令人过于缓慢......更不用说它会使所需的内存翻倍。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

只需将其映射到矩阵:

m.format = { 'uint8' [1024 500000] 'x' };

m.Data(1).x将是您的数据矩阵。