2016-08-16 15 views
-1

場合とMATLABでのforループベクトル化:これは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, :); 
関連する問題