Boolean Vector Length Calculation

Hi all,
I have a vector consisting of booleans, either 1 or 0. Such as {0 0 0 0 1 1 1 0 0 0 0 0 1 1 0 0 0 0}. 1 values by itself cannot be in between of 0s. The same rule is valid also for 0s. I need the length of 1s separately. In other words, I do not want to know the length of all 1s. Instead, what I look for is the length of each 1s accumulated inside the vector independently. How can I find the length of 1s via matlab?
Thank you in advence.

 Respuesta aceptada

Adam Danz
Adam Danz el 16 de Abr. de 2019
Editada: Adam Danz el 16 de Abr. de 2019
The vector 'oneCounts' is a list of consecutive 1 counts. It's empty if there are no 1s.
tf = [0 0 0 0 0 1 1 1 0 0 0 0 0 1 1 0 0 0 0 1 1 1 0 0 1 1 1 1];
df = diff([0, tf, 0]); %if tf is a column: diff([0;tf;0])
oneCounts = find(df == -1) - find(df == 1)
oneCounts =
3 2 3 4

2 comentarios

Oguz Altunkas
Oguz Altunkas el 16 de Abr. de 2019
Thank you so much, it helped alot.
Kind Regards
Adam Danz
Adam Danz el 16 de Abr. de 2019
Editada: Adam Danz el 17 de Abr. de 2019
Glad I could help!

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Language Fundamentals en Centro de ayuda y File Exchange.

Preguntada:

el 16 de Abr. de 2019

Editada:

el 17 de Abr. de 2019

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by