2011-11-17 17 views
6

私は事前にソートされた1Dベクトルでスタックオーバーフロー上のachieve intersect() fasterへの道を見つけるの幸運を持っていたので、私はユニークで同じ幸運を願っています();)1d事前ソートされたベクトルを仮定すると、matlabでunique()を高速に実行する方法は?

をほぼ1/4'th私のランタイムのですunique()を使って過ごしました。私はこれをスピードアップしたいと思います。それを1dの事前ソートされたベクトルと見なすことができます。これをスピードアップするために私が直接使用できる他の低レベル関数はありますか?

+0

交差質問へのポインタを追加できますか? – John

+1

確かに、出来ました! – gnychis

答えて

7

diffを使用して、連続する要素が同じかどうかを簡単に確認できます。

vector = [1 2 3 4 4 5]; 

uniqueVector = vector([true;diff(vector(:))>0]) 

uniqueVector = 
    1  2  3  4  5 
+0

ありがとう、これは素晴らしいです! – lllllll

+0

ありがとう!私はちょっと試してみましたが、sort + diffを使って、matlabの元の "一意の"関数よりも少し速いです。 –

+0

セル配列に似たものはどうですか?例えば、ベクトル= {'a1'、 'a1'、 'b2'}; – user702846

関連する問題