2012-04-01 138 views
-1

我想用0替換矢量中的重複元素,並只保留第一次出現。用0替換矢量中的重複元素(Matlab/Octave)

如果我有像

矢量[1 1 2 2 2 3 3 3 4 4 4 4 5 5 5 5 6 6 6]

我如何能夠將其轉化爲

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

謝謝。

+0

如何create_set([1 1 2 2 2 3 3 3 4 4 4 4 5 5 5 5 6 6 6])? http://www.chemie.fu-berlin.de/chemnet/use/info/octave/octave_17.html – Marcin 2012-04-01 11:44:04

回答

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;