How do I find non-consecutive zero entries?
Show older comments
I am trying to obtain logical output by finding the entries which are 0 but with a condition that its previous entry must not be zero. I'd like to avoid using FOR loop since the size of the input matrix is quite large. But I just couldn't figure out how to avoid using FOR loop.
Here is the example of my input and desired output.
input = [6 6 5 3 0 0 2 0 3 1 0 0 0 4 0;
3 5 1 4 2 0 0 0 9 0 8 7 0 0 2]
output = [0 0 0 0 1 0 0 1 0 0 1 0 0 0 1;
0 0 0 0 0 1 0 0 0 1 0 0 1 0 0]
Any suggestions would be really appreciated.
Accepted Answer
More Answers (3)
Paulo Silva
on 11 Mar 2011
Here's my messy code, Walter's solution is better and I also had the first value problem, I ignored the first value.
input=[input(1,:) input(2,:)]; %make a vector from the array
a=diff(input==0); %find the zeros
b=[0 a==1]; %insert the first value 0 and the result
output=[b(1:15);b(16:30)] %make the output an array
Peerapat V.Chareon
on 11 Mar 2011
0 votes
Sean de Wolski
on 11 Mar 2011
And another:
%Don't overwrite input because it's a built-in function!
%renamed input to x
output = (x==0&diff([zeros(size(x,1),1) x],[],2))
Categories
Find more on Logical 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!