matlab - 增加for循环matlab中的内存使用量
问题描述
我遇到了 for 循环的问题,其中内存使用量不断增加,直到没有剩余 RAM。for 循环进行了大约 10,000 次迭代,每次它应该读取目录中的索引文件,使用 fmincon 执行一些操作,然后将输出保存到另一个索引 csv 文件。每个文件小于 1MB,处理 20 个文件后,内存使用量从 1GB 变为 2GB。(最初,我认为问题出在使用“parfor”,但我意识到即使在正常的 for 循环中,我也会看到此内存“泄漏”;单击此处查看此问题)。代码如下,其中“my_func”是我要最小化的函数。我可以根据要求提供这个函数,但由于它是“封装的”,我认为这无关紧要。
list = dir('~/Documents/matlab_files/*.csv');
L = length(list);
for i = 1:L
data = readtable(strcat('~/Documents/matlab_files/',list(i).name));
all_para = [0.03,0.3,0.001,0.001];
try
[x,fval] = fmincon(@(all_para)my_func(all_para,data),...
all_para,[],[],[],[],...
[-5,-5,0.01,0.01],...
[5,5,5,5]);
csvwrite(strcat('~/Documents/matlab_files/output/',list(i).name,'.csv'),x);
catch ME
%fprintf('without success: %s\n', ME.message);
%continue; % Jump to next iteration of: for i
end
end
同样,我最初想使用 parfor,但我意识到内存使用量的增加也发生在常规 for 循环中。
我正在使用 2018b
解决方案
推荐阅读
- html - 如何添加元属性=“og:locale”内容=“?”
- .htaccess - htaccess 在子域上重写一个 url
- apache-pig - PIg 标量大于 0
- dependency-injection - 依赖/应用范围类的 CDI 失败
- c# - 将 CSV 文件导出到 C#,并在单元格中使用换行符
- python - gremlin-python 在一个事务中删除多个顶点和边
- java - 如何按日期从其超实体类中删除所有子类实体
- java - 使用 Files.lines 读取和写入文件流
- ruby-on-rails - 在循环 RoR 中连接 JSON
- c# - C# 在 .csv 文件中添加具有相同 Date.Time 的行