How do I find non-consecutive zero entries?
이전 댓글 표시
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.
채택된 답변
추가 답변 (3개)
Paulo Silva
2011년 3월 11일
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
Sean de Wolski
2011년 3월 11일
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))
카테고리
도움말 센터 및 File Exchange에서 Entering Commands에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!