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

42 views (last 30 days)
%Code used for first plot
% Need the first plot to look exactly like the second plot
plot(rad1,'red')
hold on
plot(in,'yellow')
plot(in1,'blue')
plot(in2,'green')
title('Position Analysis')
xlabel('\Theta2(rads)')
ylabel('Outputs')
legend({'\Theta3(radians)','R3(in)','R4(in)','R5(in)'},'FontSize',6)
xticks([0 50 100 150 200 250 300 350 400])
xticklabels({'0','\pi/4','\pi/2','3\pi/4','\pi','5\pi/4','3\pi/2','7\pi/4','2\pi'})

Accepted Answer

Image Analyst
Image Analyst on 5 Sep 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;

More Answers (1)

TADA
TADA on 28 Aug 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 Comments
Bryan Tassin
Bryan Tassin on 5 Sep 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.

Sign in to comment.

Tags

Community Treasure Hunt

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

Start Hunting!