-5
我有一個矩陣,其中每一行是數據點的向量,我想使用分類器預測每行的標籤。我現在正在做的是在for循環中逐個讀取矩陣的每一行,並在每個條目上運行分類器。因爲每行的結果都獨立於其他行,所以這裏有平行化的餘地。 MATLAB有什麼功能來加速這個速度?如何在Matlab中矢量化循環?
我有一個矩陣,其中每一行是數據點的向量,我想使用分類器預測每行的標籤。我現在正在做的是在for循環中逐個讀取矩陣的每一行,並在每個條目上運行分類器。因爲每行的結果都獨立於其他行,所以這裏有平行化的餘地。 MATLAB有什麼功能來加速這個速度?如何在Matlab中矢量化循環?
假設你自己寫了分類器,這是可能的。不要將一行傳遞給分類器,而是傳遞完整的矩陣。在分類器中,你將不得不改變預測的方式。假設你使用一個數學公式來計算結果,你將不得不使用基於元素的運算符來修改它。使用,而不是逐元素運營商的一個例子的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循環,因爲它的效率高得多。
顯示...我們...一些...代碼... – Jubobs 2015-02-07 14:21:25
你有沒有試過閱讀http://www.mathworks.com/help/matlab/matlab_prog/vectorization.html – 2015-02-07 14:22:19