2016-05-30 11 views
0

私は何千回も実行され、次のコードを持っています。プロファイラを使用することにより、コード全体で最も時間のかかる行として、2行目(new_inds=...)が識別されました。この操作を行うためのより良い/より速い方法がありますか?Matlabでインデックス検索を高速化するための良い方法は何ですか?

for j=1:length(cls) 
    new_inds=[sti(:).time]==i & [sti(:).cluster]==cls(j); 
    % more code here 
    % 
    % 
    prob(j)=... 
end 
pr=prod(prob); 

答えて

2

確かにその困難な多くのコードを見ないと言うが、私は、これはそれをスピードアップすることを期待する:私はここに示唆されています

indexArg2 = [sti(:).cluster]; 
index1 = [sti(:).time]==i 

for j=1:length(cls) 
    new_inds=index1 & indexArg2==cls(j); 
    % more code here 
    % 
    % 
    prob(j)=... 
end 
pr=prod(prob); 

何でないインデックスの一部を取ることですjjループ外に関連しています。

P.S. ijの代わりに、iijjをカウンタとして使用する必要があります(複素数を表すため)。私はiijjを使用すると、ijよりも速いと読んだことがありますが、証明されていません。

関連する問題