Detect consecutive positive numbers in an array

Hello,
Let us assum an Array A as follows:
A = [4 9 6 0 0 3 4 0 3]
I want to detect the location (begining and ending) of consecutive positive values and store in a Matrix like B:
B=[1 3
6 7
9 9]
For example, in Array A, the first block of consequtive positive values starts from the first element and ends at the third elements.
Would you please help me?
Best, Amir

 Respuesta aceptada

David Hill
David Hill el 24 de Sept. de 2020
Editada: David Hill el 24 de Sept. de 2020
A(A<0)=0;%if negative numbers possible
A(A>9)=9;%if >single digit possible
a=num2str(A);
a=a(a~=' ');
B=[regexp(a,'[1-9]*')',regexp(a,'[1-9]*','end')'];

3 comentarios

Thanks, but it is not generalizable. For example, it does not work for the below array:
A = [4 9 6 0 0 3 4 0 10 0 15 0 0 11 14 0 1]
David Hill
David Hill el 24 de Sept. de 2020
Works for me.
It works now, thanks.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Creating and Concatenating Matrices en Centro de ayuda y File Exchange.

Etiquetas

Preguntada:

el 24 de Sept. de 2020

Comentada:

el 24 de Sept. de 2020

Community Treasure Hunt

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

Start Hunting!

Translated by