我目前正在使用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);
我可以编写一个循环来慢慢将整个事物分成一个实际的矩阵(顺便说一下,我不关心元数据),但是对于这么大的数据来说,很难过分强调这将是多么令人过于缓慢......更不用说它会使所需的内存翻倍。有什么想法吗?
答案 0 :(得分:0)
只需将其映射到矩阵:
m.format = { 'uint8' [1024 500000] 'x' };
m.Data(1).x
将是您的数据矩阵。