Eliminating zero's between rising and falling edge
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
pr
el 20 de Mzo. de 2014
Respondida: Roger Stafford
el 21 de Mzo. de 2014
A series with 1's and 0's. a = [0 0 0 1 1 1 0 0 1 1 1 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 0 ]; and so on... Now I would like to eliminate the zeros in between 1's i.e debouncing and the desired output is: [0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0] . I achieved this using while loop. But if I run the code for about 100 thousand elements the program get's hanged and moreover takes lot of time. For eg: the index for rising edge is 4 and the falling edge is 11, now the zero's between them should be made equal to 1. In the sequence there are atleast 5 or more zeros between the two rising edges.
Would any one suggest the easiest way to solve this?
0 comentarios
Respuesta aceptada
Roger Stafford
el 21 de Mzo. de 2014
It isn't clear just how many consecutive zeros are required for them not to be changed to ones. Your statement "there are atleast 5 or more zeros between the two rising edges" hints at maybe 5, but you should state it clearly to avoid misunderstandings. Here is a rather cumbersome vectorized method, and I don't guarantee it is better than your 'while' loop.
f = find(diff([0,a,0])~=0);
f1 = f(2:2:end-2);
f2 = f(3:2:end-1);
t = (f2-f1)<5;
b = zeros(size(a));
b(f1(t)) = 1;
b(f2(t)) = -1;
b = a+cumsum(b);
0 comentarios
Más respuestas (1)
Image Analyst
el 20 de Mzo. de 2014
If you have the Image Processing Toolbox, it's trivial - just a single line of code:
b = ~bwareaopen(~a, 3);
where 3 is the longest length of 0's that you want to allow. 100 thousand elements is no problem - this is just a very small fraction of the number of elements it usually works on (tens of millions of elements or pixels), so it will be pretty fast. If you don't have that toolbox , there are some trickier, more complicated ways to do it. Let us know and someone will probably work it out for you.
Ver también
Categorías
Más información sobre Image Processing Toolbox en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!