小编LaW*_*aWa的帖子

为什么保存到名为temp的文件夹导致数据加载在Matlab中的for循环中减慢?

重要更新

我刚刚发现,在重新启动Matlab和计算机后,这个简化的代码不再为我重现问题......我很抱歉花时间使用不起作用的脚本.但是,如果我在内部'for'循环中的任何文件夹(我已经尝试过)中保存了任何内容,那么旧问题仍然存在于我的原始脚本中.就我的目的而言,除非我绝对需要,否则我只是不做这个保存.原来的剧本在的方面如下结构for的循环和使用saveload:

load() % .mat files, size 365x92x240
for day = 1:365
    load() % .mat files, size 8x92x240

    for type = 1:17
        load() % .mat files size 17x92x240
        load() % .mat files size 92x240

        for step 1:8
            %only calculations
        end
        save() % .mat files size 8x92x240

    end 
    save() % .mat files, size 8x92x240
end

% the load and saves outside the are in for loops too, but do not seem to affect the described …
Run Code Online (Sandbox Code Playgroud)

file-io matlab

9
推荐指数
1
解决办法
491
查看次数

Matlab中的数据加载时间长

我有四个变量,每个变量保存在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'); 
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

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

matlab matlab-load

6
推荐指数
1
解决办法
946
查看次数

标签 统计

matlab ×2

file-io ×1

matlab-load ×1