parfor错误变量或不保存它们

时间:2014-07-04 07:42:37

标签: matlab

我想使用parfor matlab代码来快速实现,但有两个问题。使用的代码如下:

for i=1:4
...
    parfor j=1:10
    ...
        para{i,j,:}=cell(1,1,2); %first type of definition
    Alpha{i,j,:}=cell(1,1,2); %first type of definition
    B{i,j,:}=cell(1,1,2); %first type of definition
    para=cell(1,1,2); %second type of definition
    Alpha=cell(1,1,2); %second  type of definition
    B=cell(1,1,2); %second  type of definition
    for k=1:2
        ...
            para{i,j,k}=x1;
        Alpha{i,j,k}=alpha;B{i,j,k}=b;
    end
    ...
    end
mysave(alpha,para,B)
end    

现在我的问题是:

  • 1.当我使用第一种类型的定义时,matlab给出了错误 我无法对变量进行分类,这是我第一种类型的原因 定义是我想最后保存我的结果,例如 Alpha应为4 * 10 * 2单元阵列。
  • 2.当我使用第二种类型的定义时,错误被省略,但最后只有最后一个单元格,我的意思是第4个,第10个单元格有值, 和其他内容是空的。什么可以解决这个问题 问题?

我几乎阅读了与parfor matlab相关的所有帖子,但我无法得到答案。 提前致谢

1 个答案:

答案 0 :(得分:1)

这就是我的建议。它工作并为结果单元格数组Alpha,para,B提供了维度4*10*2。请看你的代码。使用mysave命令编写了alpha而不是Alpha,它为您提供了循环的最后一个值。如果这是拼写错误,请尝试以下代码。这应该有用。

Alpha=cell(4,10,2); % Number of times the three loops run (4,10,2)
    para=cell(4,10,2);
    B=cell(4,10,2);
    for i=1:4
    %   ...
        parfor j=1:10
    %         ...
            for k=1:2
    %             ...
                para{i,j,k}=x1;
                Alpha{i,j,k}=alpha;
                B{i,j,k}=b;
            end
        end
    end 
    mysave(Alpha,para,B)