2012-04-01 12 views
-1

ベクトルの重複要素を0に置き換え、最初のオカレンスのみを保持します。ベクトルの重複要素を0(Matlab/Octave)に置き換えます。

私が持っている場合

様ベクトル[1 1 2 2 2 3 3 3 4 4 4 4 5 5 6 6 6]

私にそれを変換することができる方法

[ 1 0 2 0 0 3 0 0 4 0 0 0 5 0 0 0 0 0]?

ありがとうございました。

+0

方法create_set約([1 1 2 2 2 3 3 3 4 4 4 4 5 5 6 6:より簡潔な方法で、元のベクトルを破壊すること6])? http://www.chemie.fu-berlin.de/chemnet/use/info/octave/octave_17.html – Marcin

答えて

3
a = [ 1 1 2 2 2 3 3 3 4 4 4 4 5 5 5 5 6 6 6 ];  
[c, ia] = unique(a, 'first'); 
t = a; 
t(ia) = 0; 
filtered_vect = a - t; 

編集:

a = [ 1 1 2 2 2 3 3 3 4 4 4 4 5 5 5 5 6 6 6 ];  
[c, ia] = unique(a, 'first'); 
a(~ismember(1:length(a),ia)) = 0; 
関連する問題