修改以下Matlab Parfor循环
在下面的parfor循环中,Matlab表示变量“sf”无法分类。然而,它在最内层循环中的定义方式似乎并不影响parfor。你能告诉我这个问题并告诉我应该如何修改这个代码段吗修改以下Matlab Parfor循环,matlab,parfor,Matlab,Parfor,在下面的parfor循环中,Matlab表示变量“sf”无法分类。然而,它在最内层循环中的定义方式似乎并不影响parfor。你能告诉我这个问题并告诉我应该如何修改这个代码段吗 parfor ii=1:1:10000 for jj=1:200 for kk=1:80 sf{kk}=fit([kk*dKy;(kk+1)*dKy],[result{kk}(ii);result{kk+1}(ii)],'exp1','lower',[kk*dKy,resul
parfor ii=1:1:10000
for jj=1:200
for kk=1:80
sf{kk}=fit([kk*dKy;(kk+1)*dKy],[result{kk}(ii);result{kk+1}(ii)],'exp1','lower',[kk*dKy,result{kk}(ii)]);
fun=@(t) sf{kk}(t).*cos(Ky(kk).*t);
result2{ii}(jj)=0;
result2{ii}(jj)=result2{ii}(jj)+integral(fun,Ky(kk),Ky(kk+1),'ArrayValued',true)/(2*pi);
end
end
end
sf
取决于并行索引ii
。每个sf
都需要所有核心的信息,这是不允许的/不正确的。我应该如何修改此代码?谢谢。对于初学者,putresult2{ii}(jj)=0
在kk
循环之外,因为现在每次kk
迭代都将其设置为0,然后添加一些内容。每次迭代都需要完整的结果
单元格,以便从两个特定单元格kk
和kk+1
中提取单个值ii
。也许这可以用一种更智能的方式来实现,因为您可以向所有工作人员广播完整的结果
变量,而您只需要一点点。否则,除了Ander所说的之外,我认为MATLAB在parfor
循环中的fit
也有问题。有关parfor
的一般信息,请阅读。