I want to plot non-zero consecutive segments from an array

4 visualizaciones (últimos 30 días)
Shweta Saboo
Shweta Saboo el 7 de Oct. de 2021
Comentada: Walter Roberson el 7 de Oct. de 2021
I have a data which contains zero and non-zero values in segments like [0 0 0 1 2 3 0 0 0 0 8 9 6]. I want to plot the non-zero values which are in sequence like [1 2 3] and [8 9 6] separately.

Respuestas (1)

Walter Roberson
Walter Roberson el 7 de Oct. de 2021
Editada: Walter Roberson el 7 de Oct. de 2021
A = [0 0 0 1 2 3 0 0 0 0 8 9 6]
A = 1×13
0 0 0 1 2 3 0 0 0 0 8 9 6
starts = strfind([false, logical(A)], [0 1])
starts = 1×2
4 11
stops = strfind([logical(A), false], [1 0])
stops = 1×2
6 13
hold on
arrayfun(@(B,E) plot(B:E, A(B:E), '-*'), starts, stops);
hold off
xlim auto; ylim auto
  2 comentarios
Shweta Saboo
Shweta Saboo el 7 de Oct. de 2021
Thank you so much for the quick answer. But I want to plot each segment into different figure.
Walter Roberson
Walter Roberson el 7 de Oct. de 2021
A = [0 0 0 1 2 3 0 0 0 0 8 9 6]
A = 1×13
0 0 0 1 2 3 0 0 0 0 8 9 6
starts = strfind([false, logical(A)], [0 1])
starts = 1×2
4 11
stops = strfind([logical(A), false], [1 0])
stops = 1×2
6 13
arrayfun(@(B,E) plot(gca(figure()), B:E, A(B:E), '-*'), starts, stops);

Iniciar sesión para comentar.

Categorías

Más información sobre Scatter Plots en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by