在matlab上使用parfor循环

时间:2017-01-17 20:51:06

标签: matlab loops parfor

我在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

1 个答案:

答案 0 :(得分:0)

问题是您的代码不可可并行化,因为parfor循环的每次迭代都取决于循环的其他迭代。

具体来说,您尝试从内部循环中访问pyra.scale的值,这些值是通过外部循环在先前迭代中计算的。因此,parfor循环的每次迭代的执行都依赖于前一次迭代,因此两次迭代不能并行执行(同时)。

详细了解the documentationparfor循环中变量的使用情况。