How do I add local min and max values on each line of the plot like the plot shown below?

22 visualizaciones (últimos 30 días)
%Code used for first plot
% Need the first plot to look exactly like the second plot
hold on
title('Position Analysis')
xticks([0 50 100 150 200 250 300 350 400])

Respuesta aceptada

Image Analyst
Image Analyst el 5 de Sept. de 2021
If you just have one global peak and valley, try this:
maxValue = max(in);
indexesOfMaxima = find(in == maxValue);
plot(indexesOfMaxima, in(indexesOfMaxima), 'rx', 'LineWidth', 2, 'MarkerSize', 15);
% Repeat for in1 and in2 using their colors.
If you have local mins and maxima, use findpeaks() in the Signal Processing Toolbox
[peakValues, peakIndexes] = findpeaks(in);
[valleyValues, valleyIndexes] = findpeaks(-in); % Turn it upside down then find peaks.
valleyValues = -valleyValues;

Más respuestas (1)

TADA el 28 de Ag. de 2021
Im not sure, but it seems to me that the plot you are trying to duplicate marks local minima/maxima points as the absolute minimum/maximum values in each dataset, and not using some more complecated peak analysis.
In that case you can easilly find the deeps and peaks using
x = 1:100;
rad1 = sin(x).^2 .* tan(x);
[localMinValueRad1, localMinIdxRad1] = min(rad1);
[localMaxValueRad1, localMaxIdxRad1] = max(rad1);
plot(rad1, 'red');
hold on;
plot([localMinIdxRad1(:); localMaxIdxRad1(:)], [localMinValueRad1(:); localMaxValueRad1(:)], 'rx');
% continue doing this for the rest of the datasets
  4 comentarios
Bryan Tassin
Bryan Tassin el 5 de Sept. de 2021
it changes the plot completely with the code i am running currently. i just need to add markers at the max and min locations on each line.
TADA el 5 de Sept. de 2021
what do you mean by changes the plot completely?
did you use my code as-is?

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