# Checking for multiple values that are the same in a vector

5 views (last 30 days)
elspeth storey on 10 Jul 2019
Commented: Andrei Bobrov on 10 Jul 2019
I have a vector of data values and would like to flag up if there are several identical values in a row.
If the data were A=[1,2,3,4,4,4,4,5,6,7,8] I would want it to flag up that there were 4 fours so that I could correct the values.
Is there a way of doing this other than a for loop with checking if A(2)==A(1)
Ideally it would only flag up an error if more than 10 were the same in a row (my real data is a lot larger than A).
Thanks

madhan ravi on 10 Jul 2019
Explicitly show how your result should look like.
elspeth storey on 10 Jul 2019
if 10 or more values are both identical and consecutve
C=[1,1,2,3,2,1,3,2,2,2,2,2,2,2,2,2,2,2,3,2,1,1,3] so here, it would show that there was an error in the data because there are 11 twos in a row.
I would then want to set C(8:19) as new values. e.g. C(8:19)=x, where x=[2,3,1,2,1,2,3,1,1,1,2]
Thanks

Andrei Bobrov on 10 Jul 2019
C = C(:);
d = [1;diff(C) ~= 0];
ii = cumsum(d);
counts = accumarray(ii,1);
k = find(counts >= 10);
lo = ismember(ii,k);
n = sum(lo);
C(lo) = randi([1 3],n,1);

madhan ravi on 10 Jul 2019
+1
Andrei Bobrov on 10 Jul 2019

KSSV on 10 Jul 2019
B=[1,2,3,4,4,4,4,5,6,7,8] ;
[a,b]=hist(B,unique(B)) ;
[b' a']

elspeth storey on 10 Jul 2019
This provides data for a histogram format, but is there a way of seeing if the repeated values are next to each other in the vector?
KSSV on 10 Jul 2019