Find the values before an element repeated more than 4 times.

1 view (last 30 days)
Hi everyone,
I have an array like this: A=[ 1 2 3 4 5 0 0 6 7 0 9 0 0 0 10 11 12 0 0 0 0 0 0 0 8 9 10 11 0 0 0 0 0 ]
I would like to find the values which are the ones before 0 repeated more than 4 times.
So here the answer should be 12 and 11.
Any help is appreciated.

Accepted Answer

Adam Danz
Adam Danz on 27 Jan 2020
Edited: Adam Danz on 27 Jan 2020
Input: A, numeric row vector
Output: valueBefore, a numeric vector of values prior to 4 or more consecutive 0s.
A=[ 1 2 3 4 5 0 0 6 7 0 9 0 0 0 10 11 12 0 0 0 0 0 0 0 8 9 10 11 0 0 0 0 0 ];
dA = diff([inf,A,inf]==0);
zeroCount = find(dA==-1) - find(dA==1);
zeroStart = find(dA==1);
valueBefore = A(zeroStart(zeroCount>=4)-1);
Note, if the A vector starts with 4+ zeros, there will be an error since there are no values prior to the first element.
  2 Comments
Serra Aksoy
Serra Aksoy on 27 Jan 2020
Thank you very much for your quick help. It is definitely what I'm looking for.
I also would like to do this to a mx1 matrix. How can i use this code for it ?
Adam Danz
Adam Danz on 27 Jan 2020
The only requirements for the input is that it's a row vector. If your vector is mx1, you just need to transpose it.
data = data.';

Sign in to comment.

More Answers (0)

Categories

Find more on Multidimensional Arrays in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!