Borrar filtros
Borrar filtros

Uninterrupted segment length?

2 visualizaciones (últimos 30 días)
Gavin Rumbaugh
Gavin Rumbaugh el 28 de Nov. de 2016
Comentada: Qisq el 27 de Abr. de 2018
Let's say I have an array indexes:
Indexes = [1122221122111211112222222]
How do I get the length of uninterrupted 2s? I want to output to be
output=[ 4 2 1 7]

Respuesta aceptada

bio lim
bio lim el 28 de Nov. de 2016
For a number that has longer digits, I am not sure. However, if it is within acceptable number of digits
format long
Indexes = [112222112211121];
newIndexes=str2double(regexp(num2str(Indexes),'\d','match'))
coffee = find(diff([-1 newIndexes -1]) ~= 0);
length = diff(coffee);
output = length(1+(newIndexes(1)==1):2:end);
The output is:
output =
4 2 1

Más respuestas (1)

Roger Stafford
Roger Stafford el 28 de Nov. de 2016
Editada: Roger Stafford el 28 de Nov. de 2016
f = find(diff([false,Indexes==2,false])~=0);
output = f(2:2:length(f))-f(1:2:length(f));
  1 comentario
Qisq
Qisq el 27 de Abr. de 2018
Very elegant solution. Thanks.

Iniciar sesión para comentar.

Community Treasure Hunt

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

Start Hunting!

Translated by