2015-02-07 205 views
-5

我有一個矩陣,其中每一行是數據點的向量,我想使用分類器預測每行的標籤。我現在正在做的是在for循環中逐個讀取矩陣的每一行,並在每個條目上運行分類器。因爲每行的結果都獨立於其他行,所以這裏有平行化的餘地。 MATLAB有什麼功能來加速這個速度?如何在Matlab中矢量化循環?

+7

顯示...我們...一些...代碼... – Jubobs 2015-02-07 14:21:25

+4

你有沒有試過閱讀http://www.mathworks.com/help/matlab/matlab_prog/vectorization.html – 2015-02-07 14:22:19

回答

1

假設你自己寫了分類器,這是可能的。不要將一行傳遞給分類器,而是傳遞完整的矩陣。在分類器中,你將不得不改變預測的方式。假設你使用一個數學公式來計算結果,你將不得不使用基於元素的運算符來修改它。使用,而不是逐元素運營商的一個例子的for循環:

實施例數據

a = [1,2; 
    3,4; 
    5,6] 

使用一個for循環

p1= zeros(size(a,1),1); 
for i=1:size(a,1) 
    p1(i) = a(i,1)*2 + a(i,2)^2; 
end 

使用矢量

p2 = a(:,1).*2 + a(:,2).^2 

元 - 運營商:

http://nl.mathworks.com/help/matlab/ref/times.html?searchHighlight=element-wise

http://nl.mathworks.com/help/matlab/ref/power.html?searchHighlight=element-wise

強烈建議使用矢量來代替for循環,因爲它的效率高得多。