首页 > 解决方案 > 如何在 PARFOR 循环中定期保存矩阵?

问题描述

我一直Parfor在 Matlab 中使用并行循环(),这是我的代码的一部分。(它应该运行几天,所以我想定期保存我的输出。

  parfor i = 1:N_boot

                      ...

           out1(i,:) = result1;
           out2(i,:) = result2;

       if mod(i,100) == 0
        % Here, I want to save out1 and out2 (export with .mat file) 

       end


  end

如何保存每 100out1out2迭代?

(我也可以为每 100 次迭代保存工作空间)

提前致谢!

标签: matlabparfor

解决方案


我的建议是使用 重写您的代码parfeval,然后您可以调用fetchNext以获取输出。请记住,fetchNext 返回一个索引,因为结果可能不按顺序排列。所以基本上调用 fetchNext 100 次,将结果拼接在一起,保存。

另一种方法可能是parallel.pool.DataQueue在您的 parfor 循环中使用 an ,通过返回数据并使用回调send收集它。afterEach


推荐阅读