MATLAB Answers

How to find the index location of repeated consecutive numbers over a tolerance within a vector

42 views (last 30 days)
Nicholas Hero on 25 Feb 2021
Commented: Nicholas Hero on 26 Feb 2021
For vector A, how would you find the index value for the start of a repeated consecutive value repeated more than x times
Example 1:
A = [4 2 7 4 4 7 9 9 3 8 8 8 8 8 8 5 6 6 7 ]
if x is 5 in this case I would like the answer to give 10.
Example 2:
For vector A attached using x = 7, would like the answer outputed to be 4249
Any sugesstions are much appreciated
1 CommentShowHide None
Nicholas Hero on 26 Feb 2021
Thanks very much for your help David, works just how intended!

Sign in to comment.

Accepted Answer

David Hill on 25 Feb 2021
This should work better. Did not previously think about multi-digit numbers.
n=7;%minimum number of repeats
a=num2str(~(diff(A)==0));
a=a(a~=' ');
idx=strfind(a,repmat('0',1,n-1));
0 CommentsShowHide -1 older comments

Sign in to comment.

More Answers (1)

David Hill on 25 Feb 2021
Likely lots of other ways.
n=5;%minimum number of repeats
idx=strfind(cell2mat(regexp(num2str(diff(A)),'[^- ]','match')),repmat('0',1,n-1));%idx(1) would be the first occurrance
1 CommentShowHide None
Nicholas Hero on 25 Feb 2021
Thanks David, this method seems to work on a small vector but is somehow tripping up when used with a larger vector, have attached the vector A into the question, using n = 7 it is outputing index values which are not in the vector.

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!