2017-01-17 105 views
-3

我在Matlab中使用parfor進行並行計算。我不熟悉這個命令。如果可能的話,請看下面的代碼,告訴我是否可以用parfor編寫它。錯誤: 由於變量pyra被使用的方式,無法運行parfor循環。在matlab上使用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

您應該從Mathworks自己的[廣泛文檔](https://www.mathworks.com/help/distcomp/variables-in-parfor-loops.html)開始介紹parfor循環中的變量用法 – Suever

+0

試圖按照文檔中的指示進行更改,但我仍然遇到問題。 – dido

+0

請問,我該如何着手解決這個問題。 – dido

回答

0

的問題是,你的代碼是並行因爲通過parfor循環每次迭代取決於循環的其他迭代。

具體而言,您試圖從內循環內訪問pyra.scale的值,這些值是通過外循環的先前迭代計算得出的。因此,循環的每次迭代的執行取決於先前的迭代,因此兩次迭代不能並行(同時)執行。

查看the documentationparfor循環中使用變量的更多信息。