Vectorized method to find the number of consecutive 1s from the left of an array

1 visualización (últimos 30 días)
Hi, I want to find the number of consecutive 1s from the left of an array (a binary array). For example, if I have A = [1 1 1 0 1 0 0 0 1 1] then the result would be 3 because there are 3 consecutive 1s from the left. Another example: A = [1 0 1 1 1 1 1] then the result would be 1. Or A = [0 1 1 1 0 0 1 0 1], the result would be 0.
I can write this in for loop, however I do not know how to vectorize this part. I really need it for my code so that it might run faster.
Please help me, thank you very much.
  4 comentarios
Dang Manh Truong
Dang Manh Truong el 27 de En. de 2019
Hey, when I try A = [1 1 1 1 1 1] it gives me an error :(

Iniciar sesión para comentar.

Respuesta aceptada

madhan ravi
madhan ravi el 27 de En. de 2019
Editada: madhan ravi el 27 de En. de 2019
idx=find(diff(A));
if A(1)==0
Result=0
elseif all(A)
Result=numel(A)
else
Result=idx(1)
end

Más respuestas (0)

Categorías

Más información sobre Multidimensional Arrays en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by