2016-08-16 56 views
-1

這是一個Matlab代碼內檢查:向量化一個與如果循環

new=[]; 
for i=1:size(p,1) 
    if (alpha*p(i,1)+beta*p(i,2)+gamma*p(i,3)-sigma)>0 
    new=[new;p(i,:)]; 
    end 
end 

這裏p是大陣列等300000x3尺寸。 new數組是通過從p數組中刪除一些3元組獲得的。爲此,if檢查完成。但是這需要很長時間。

我想向量化代碼,如獲得一個二進制數組,其中1爲保留點,0爲刪除點。然後使用這些標誌,我們可以更快地構建new陣列。我對嗎?有人可以爲矢量化或加速上述代碼提供代碼嗎?

+0

_「能有人給的代碼向量化或超速上面的代碼?」 _。對不起,這不是它如何在SO上工作。下次你寫一個問題時,首先嚐試自己對此進行矢量化並提供你的努力。你也很有可能自己設法做到這一點,並學習一些積極的副作用。 – patrik

回答

0

像這樣的東西應該工作

selectRows = (alpha*p(:,1)+beta*p(:,2)+gamma*p(:,3)-sigma)>0; 
new = p(selectRows, :);