Interval where values are greater than treshold

1 visualización (últimos 30 días)
Lucas Russi
Lucas Russi el 10 de Dic. de 2019
Comentada: Lucas Russi el 10 de Dic. de 2019
Hi everyone
Logic = Data > Treshold
I now need to know what the intervals are where the treshold is exceeded
Logic = [1 1 1 0 0 0 1 1 0 1]
Desired_Output = [1 3;7 8;10 10]
So - from 1 to 3, from 7 to 8 aswell as 10
I can't think of a good way to do this.
Thank in advance

Respuesta aceptada

Stephen23
Stephen23 el 10 de Dic. de 2019
>> B = find([true;diff(Logic(:))>0]);
>> E = find([diff(Logic(:))<0;true]);
>> M = [B,E]
M =
1 3
7 8
10 10

Más respuestas (1)

Jeremy
Jeremy el 10 de Dic. de 2019
I believe you are looking for the find command.
find(Logic)
  3 comentarios
Jeremy
Jeremy el 10 de Dic. de 2019
You could use
diff
to determine adjacent numbers and drop the intermediate numbers appropriately
Lucas Russi
Lucas Russi el 10 de Dic. de 2019
Thanks for participating :)
idx = find(Logic)
idx(end+1) = 0
idx(diff(idx) ~= 1)
would be the indices that mark the end of the interval - but what about the start ?

Iniciar sesión para comentar.

Categorías

Más información sobre MATLAB 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