用向量替换向量中的重复元素(Matlab / Octave)

时间:2012-04-01 11:39:29

标签: matlab vector 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]?

感谢。

1 个答案:

答案 0 :(得分: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;