MATLAB parfor错误" parfor中的变量无法分类。"

时间:2015-03-21 23:56:07

标签: matlab parallel-processing parfor

我试图在Matlab中使用Parallel Computing Toolbox(PCT)运行并行作业。我希望并行运行的Matlab代码如下所示:

I=100000;
a=[-4   0.2  0.3   0.4  0.2; 
   -3   0.7  1.8   1.4  1.1]; 
beta=[0.2 0.3];
c=randi([0 3],I);
S=zeros(1,I);

parfor i=1:1:I
    S(1,i)=1;
    meanPr=a(S(1,1),:); 


    D=1/(1+exp(-(repmat(meanPr(1),1,1) + beta(1,1)*c(1,i))));
    r=rand(1,1);
    D(D>r)=1;
    D(D<1)=0;
    P(1,i)=D;

    xyw(1,i)=poissrnd(meanPr(1,2),1,1);

end

我收到以下错误:

  

parfor中的变量S无法分类。   请参阅MATLAB中的并行循环,&#34;概述&#34;。

我的理解是上述代码中的循环是独立的。知道为什么我会收到此错误以及如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

您在每次迭代中使用S(1,1)。这是不可能的,因为它在第一次迭代(写入S(1,1))和所有进一步的迭代(读取S(1,1))之间添加了依赖关系

答案 1 :(得分:0)

s(1,1)是问题,在并行循环之前完全分配s