嗨,這是我第一次使用matlab的並行工具箱。我有這個循環並行for循環matlab
for y=1:size(pxyvector,1)
if (strcmp(pxyvector{y,1}, emotionword))&&(strcmp(pxyvector{y,2},tweet{x}))
pxyvector{y,3} = pxyvector{y,3} +1;
invector = true;
end
end
我該怎麼去做並行工作for
。我閱讀matlab的切片變量部分,但我不明白我在這裏如何做到這一點。
pxyvector
是100000x3單元陣列
tweet{x}
是一個字符串
emotionword
是一個字符串太。
invector
是稍後在循環外部使用的值。
所以基本上我比較了pxyvector的一行與情緒詞的第一個值,以及從pxyvector
到tweet{x}
的一行的第二個值。如果他們是一樣的。行中的第三個值會增加。
在循環過程中,相同的值不能遞增兩次。
這個for循環中的問題是我需要更改一個在循環外部使用的變量並增加一個值。
一些數據一起玩:http://ojtwist.be/pxyvector.mat(變量是在這個.MAT文件pxyvector2,所以更改代碼,如果你想測試)
那麼,當您嘗試使用parfor時會出現哪種錯誤?順便說一句,你可以拆分pxyvector並在不同的工作人員上使用SIMD方法。 – Acorbe
pxyvector以不同方式編入索引,可能會導致迭代之間的依賴關係。 invector在parfor循環之後使用,但其值不確定。如何使用SIMD方法在這裏工作? – Ojtwist
'pxyvector'對我來說似乎很好,因爲一次只觸摸一行,也就是說,並行計算它應該沒問題。然而'invector'是一個問題。如何將該行更改爲'invector(y)= true;'?然後它也應該在'parfor'循環中運行。循環後,只需使用'invector = any(invector);'。 –