加速从文件加载结构。
18次浏览(过去30天)
显示旧的注释
你好,
我正在寻找一种方法来加快保存和加载~8GB的数据。目前,它都包含在一个结构中。该结构的格式类似于下面的代码——在结构的每一层都有一些元数据,这里没有显示出来。
为subNum = 1:10;% 10受试者
为trialNum = 1:50;每个受试者50次试验
为dataStreamNum = 1:50;每个主题50个数据流
dataMatrix =兰德(3000);每个数据流为3x3000
structName.Subject (subNum) .Trial (trialNum) . data (dataStreamNum) .Matrix = dataMatrix;%矩阵形式的数据
结束
结束
结束
我调查了
matfile
能够加载结构的一部分,但发现matfile不允许访问特定的字段。
这篇文章
这让我开始考虑将每个试验拆分到单独的.mat文件中(在本例中,将有500个.mat文件,每个文件都是一个较小的结构体)。我总共有两个问题:
- 是否有matfile的替代方案,允许我一次只加载一个试验,从一个8GB的结构,如:
structName.Subject (4) .Trial (15);
2.如果没有这样的替代方案,如果我在500个.mat文件上使用load()命令(一次一个文件)(总共8GB的数据),会明显比在1个8GB的.mat文件上使用load()慢还是快?
谢谢你!
答案(1)
Chunru
2021年8月28日
看起来你的数据很有规律。而不是使用struct,你可以简单地使用N-D数值数组,这是更快和更有效的。使用matfile,您可以轻松地获得一小部分数据。
% for subNum=1:10;% 10受试者
% for trialNum=1:50;每个受试者50次试验
% for dataStreamNum=1:50;每个主题50个数据流
% dataMatrix =兰德(3000);每个数据流为3x3000
% structName.Subject (subNum) .Trial (trialNum) . data (dataStreamNum) .Matrix = dataMatrix;%矩阵形式的数据
%结束
%结束
%结束
数据(3,3000,50,50,10);