6

我有四个变量,每个变量都保存在 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 秒加载。当我交换加载变量的顺序时,例如eEraSDbefore tempSD,仍然是前两个加载需要更多时间。

tic toc用于跟踪加载所花费的时间时,加载第一个或第二个变量的时间似乎随着调用次数呈指数增长(最后一次调用需要 50 秒才能运行)。对于第三个和第四个变量,每个文件的加载时间保持在 0.02-0.04 秒左右,或多或少与我在 for 循环中走了多远无关。见下图。

在此处输入图像描述 在此处输入图像描述

当使用importdata而不是“加载”时,第一行大约需要 8000 秒才能加载 365 次(加载呈指数增长,如第二张图中的 T 所示)。然后其他行大约需要 10 秒才能加载 365 次。

我不明白为什么它看起来像这样,以及我能做些什么来减少加载时间。将不胜感激任何可能的解决方案的想法。

4

2 回答 2

2

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

那么剩下的唯一选择就是存储在这些 matfile 中的 vairbales 的特性。您能否检查这些变量的大小,例如通过加载样本。这将缩小范围以解决您的问题。

希望有所帮助。

FS

于 2012-12-17T22:07:36.947 回答
1

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

(现在实际问题已经解决了,这并不重要,但我不能说我理解为什么后来的“保存”调用和这个“导入数据”或“加载”调用之间存在这种特殊的关系。)

请查看有关temp文件夹的新问题

于 2013-01-14T17:52:02.970 回答