MATLAB Answers


Checking for multiple values that are the same in a vector

Asked by elspeth storey on 10 Jul 2019
Latest activity Commented on by 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).


Explicitly show how your result should look like.
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]

Sign in to comment.




2 Answers

Answer by Andrei Bobrov
on 10 Jul 2019
 Accepted Answer

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);


Sign in to comment.

Answer by 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']


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?
REad about unique. This gives indices also...

Sign in to comment.