我在Matlab中使用parfor进行并行计算。我不熟悉这个命令。如果可以的话,请查看下面的代码并告诉我是否可以用parfor编写代码。错误 : 由于使用变量pyra的方式,parfor循环无法运行。
parfor i = 1:inter
scaled = resize(im, 1/sc^(i-1));
pyra.feat{i} = descripteurs(scaled,class);
pyra.scale(i) = 1/sc^(i-1);
for j = i+inter:inter:max_scale
scaled = reduce(scaled);
pyra.feat{j} = descripteurs(scaled,class);
pyra.scale(j) = 0.6 * pyra.scale(j-inter);
end
end
答案 0 :(得分:0)
问题是您的代码不可可并行化,因为parfor
循环的每次迭代都取决于循环的其他迭代。
具体来说,您尝试从内部循环中访问pyra.scale
的值,这些值是通过外部循环在先前迭代中计算的。因此,parfor
循环的每次迭代的执行都依赖于前一次迭代,因此两次迭代不能并行执行(同时)。
详细了解the documentation中parfor
循环中变量的使用情况。