Find the values before an element repeated more than 4 times.
1 view (last 30 days)
Show older comments
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.
0 Comments
Accepted Answer
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
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.';
More Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!