How do I find non-consecutive zero entries?
Afficher commentaires plus anciens
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.
Réponse acceptée
Plus de réponses (3)
Paulo Silva
le 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
le 11 Mar 2011
0 votes
Sean de Wolski
le 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))
Catégories
En savoir plus sur Logical dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!