如何仅对连续重复的数字求和才能找到唯一值?例如,我有一个向量
A = [0 0 0 0 1 0 0 0 1 0 1 1 0 0 1 0 1]
然后当仅对连续重复的数字求和时,我将
B = [0 1 0 1 0 2 0 1 0 1]
最后,唯一值的数量与0
和1
不同:
sum(B>1)
我知道解决问题的一种方法:
sum(diff(find(A==1))==1)
但似乎这不是一个好方法。
答案 0 :(得分:1)
另一种解决方案:
A = [0 0 0 0 1 0 0 0 1 0 1 1 0 0 1 0 1]
%// get Islands
a = cumsum(~A)
b = a(logical(A))
%// count occurences
c = histc(b,unique(b))
%// count number of occurences > 1
d = sum(c > 1)
%// or sum of occurences > 1
e = sum(c(c > 1))
c =
1 1 2 1 1
d =
1
e =
2
答案 1 :(得分:0)
这将为您提供数组中重复值的总数,包括“0”值。
sum(A(1:end-1)-A(2:end)==0)
ans =
7
如果您只对重复的“1”值感兴趣,可以将其更改为
sum(A(1:end-1)+A(2:end)==2)
ans =
1
请注意,如果您有[1 1 1]
,那么这是重复次数,您将得到2而不是1.