在matlab parfor循环中保存命令

时间:2012-08-28 03:00:09

标签: matlab parallel-processing

我正在尝试在parfor循环中保存矩阵。我知道matlab不允许这样做,需要创建一个单独的程序。一些谷歌搜索建议创建一个单独的功能,比如parfor如下:

  function parsave(fname, x,y)

    save(fname, 'x', 'y')

   end

我遇到的问题是程序似乎在经历所有迭代之前没有任何错误就停止了(即,它节省了大约一半的文件)。我有很多小文件(大约1M)。这可能是问题吗?

提前致谢

1 个答案:

答案 0 :(得分:4)

直接在parfor中调用保存违反了透明度要求。相反,您需要将变量传递给另一个可以调用save的函数。

示例Matlab provides如下。

将以下内容保存为“parsave.m”:

    function parsave(fname, x,y)
    save(fname, 'x', 'y')
    end

然后用:

运行它
    parfor ii = 1:4
    x = rand(10,10);
    y = ones(1,3);
    parsave(sprintf('output%d.mat', ii), x, y);
    end