Checking for multiple values that are the same in a vector

조회 수: 12 (최근 30일)
elspeth storey
elspeth storey 2019년 7월 10일
댓글: Andrei Bobrov 2019년 7월 10일
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
  댓글 수: 2
madhan ravi
madhan ravi 2019년 7월 10일
Explicitly show how your result should look like.
elspeth storey
elspeth storey 2019년 7월 10일
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
Andrei Bobrov 2019년 7월 10일
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);

추가 답변 (1개)

KSSV
KSSV 2019년 7월 10일
B=[1,2,3,4,4,4,4,5,6,7,8] ;
[a,b]=hist(B,unique(B)) ;
[b' a']
  댓글 수: 2
elspeth storey
elspeth storey 2019년 7월 10일
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
KSSV 2019년 7월 10일
REad about unique. This gives indices also...

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Resizing and Reshaping Matrices에 대해 자세히 알아보기

태그

제품


릴리스

R2015b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by