我试图在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;。
我的理解是上述代码中的循环是独立的。知道为什么我会收到此错误以及如何解决这个问题?
答案 0 :(得分:1)
您在每次迭代中使用S(1,1)
。这是不可能的,因为它在第一次迭代(写入S(1,1)
)和所有进一步的迭代(读取S(1,1)
)之间添加了依赖关系
答案 1 :(得分:0)
s(1,1)
是问题,在并行循环之前完全分配s
。