MATLAB 错误 "The variable in a parfor cannot be classified."

MATLAB parfor error "The variable in a parfor cannot be classified."

我正在尝试 运行 使用 Matlab 中的并行计算工具箱 (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

我收到以下错误:

The variable S in a parfor cannot be classified. See Parallel for Loops in MATLAB, "Overview".

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

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

之间添加了依赖关系

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