在matlab中导入多个大文件的快速方法

时间:2014-12-21 22:07:48

标签: matlab import large-files

我需要阅读大约4000个数据文件,每个文件大约400 kB。稍后将分析数据,因此我将文件写入数据结构。导入操作大约需要4分钟,我也尝试了importdatadlmread,但差别不大。

请告诉我,如果它是循环,导入功能或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

1 个答案:

答案 0 :(得分:1)

有几点需要注意:

400 kB不是一个大文件。

4分钟内的4000个文件各为0.06秒。

您似乎没有使用变量c。

你的矩阵索引从40020开始,每个循环包含数据的下一个结构索引是+10等....这是非常稀疏的,这是浪费内存和少量时间。

您声明使用dlmread并导入数据 - >但是在代码中你正在使用load。文件是ascii吗?

找出时间的最佳方法是使用分析器。

  profile on
  % run your code
  profile viewer

文件是本地还是网络?从网络性能中读取文件可能会慢得多。