我需要阅读大约4000个数据文件,每个文件大约400 kB。稍后将分析数据,因此我将文件写入数据结构。导入操作大约需要4分钟,我也尝试了importdata
和dlmread
,但差别不大。
请告诉我,如果它是循环,导入功能或Matlab导入多个大文件的速度很慢。使用了catch
/ try
,因为其中一些文件无法正常读取,但似乎并没有减慢脚本速度。
这是脚本:
for k=40020:10:75000
try
name=['tmp' sprintf('%d',k)];
c=c+1;
m(k).count=k;
m(k).col=load(name);
[val in]=find(m(k).col(:,5)~=1);
m(k).id=m(k).col(val,1);
m(k).posx=m(k).col(val,2);
m(k).posy=m(k).col(val,3);
m(k).posz=m(k).col(val,4);
catch
disp(['Error'])
end
end
答案 0 :(得分:1)
有几点需要注意:
400 kB不是一个大文件。
4分钟内的4000个文件各为0.06秒。
您似乎没有使用变量c。
你的矩阵索引从40020开始,每个循环包含数据的下一个结构索引是+10等....这是非常稀疏的,这是浪费内存和少量时间。
您声明使用dlmread并导入数据 - >但是在代码中你正在使用load。文件是ascii吗?
找出时间的最佳方法是使用分析器。
profile on
% run your code
profile viewer
文件是本地还是网络?从网络性能中读取文件可能会慢得多。