Matlab中的数据加载时间长

时间:2012-12-14 10:48:34

标签: matlab matlab-load

我有四个变量,每个变量保存在365个mat文件中(大小:8 x 92 x 240)。我尝试在for-loop day = 1:365中将这些加载到我的函数中,每天一个变量文件。但是,这两个第一个变量总是需要很长时间才能加载。我的加载代码如下所示:

load([eraFolder sprintf('Y%dD%d-tempSD.mat',year,day)], 'tempSD'); % took 5420 s to load

load([eraFolder sprintf('Y%dD%d-tempDewSD.mat',year,day)], 'tempDewSD') 

load([eraFolder sprintf('Y%dD%d-eEraSD.mat',year,day)], 'eEraSD'); % took 6 seconds to load

load([eraFolder sprintf('Y%dD%d-pEraSD.mat',year,day)], 'pEraSD'); 

使用Profiler,我可以看到前两个变量在365次调用中加载5420秒,而最后两个变量分别在365次调用中加载6和4秒。当我交换加载变量的顺序时,例如在eEraSD之前的tempSD,它仍然是需要更多时间的前两个负载。

使用tic toc跟踪加载所花费的时间时,加载第一个或第二个变量的时间似乎随着呼叫次数呈指数级增长(最后一次呼叫占用50次)秒跑)。对于第三个和第四个变量,加载时间保持在每个文件大约0.02-0.04秒,或多或少独立于我已经去过的for循环的距离。见下图。

enter image description here enter image description here

当使用importdata代替'load'时,第一行需要大约8000秒才能加载365次(加载量呈指数增长,如第二幅中的T所示)。然后其他线路需要大约10秒钟才能加载365次。

我无法理解为什么它看起来像这样,我可以做些什么来减少加载时间。非常感谢任何可能的解决方案的想法。

2 个答案:

答案 0 :(得分:2)

我认为您的数据集位于同一目录中(通过网络或本地)并具有相同的属性,例如访问属性等。

然后剩下的唯一选择是存储在那些matfiles中的vairbales的特征。你能检查一下这些变量的大小,例如:通过加载样本。这将缩小以解决您的问题。

希望有所帮助。

FS

答案 1 :(得分:1)

感谢您的帮助。我终于找到了导致问题的原因。在脚本后面的'for'循环中,我将其他数据保存到我称为temp的文件夹中。将该文件夹重命名为其他内容(例如临时)后,数据加载问题就消失了。

(现在解决实际问题并不重要,但我不能说我明白为什么后来的'保存'电话与这个'importdata'或'load'电话之间存在这种特殊的关系。)

Please see new question about the temp folder