MATLAB Answers


Marking the peak of a plot automatically without having to click on it

Asked by Lisa Justin on 29 Aug 2012
Latest activity Commented on by Kiki
on 29 Mar 2016


Is it possible to mark the peak of a plot automatically with a command without having to to mark on each plot.


Log in to comment.


3 Answers

Answer by Star Strider
on 29 Aug 2012
Edited by Star Strider
on 29 Aug 2012
 Accepted Answer

If you have the Signal Processing Toobox, I suggest the findpeaks function with two outputs so that you get the value of the function at the peak as well as the index of your x-variable at which the peak occurs.

For example:

[Peak, PeakIdx] = findpeaks(Y); 

and the label would then be:

text(x(PeakIdx), Peak, sprintf('Peak = %6.3f', Peak));

using the text command.

To illustrate:

        X = [0:0.1:pi]';
        Y = sin(X);
        [Peak, PeakIdx] = findpeaks(Y);
        plot(X, Y)
        text(X(PeakIdx), Peak, sprintf('Peak = %6.3f', Peak))

  1 Comment


What if I have multiple peaks and I want the apply the label respectively? How should I write the text command?

Thank you!

Log in to comment.

Answer by Ilham Hardy on 29 Aug 2012


Show 1 older comment

Then use the output of the peakfinder and a simple TEXT command.

thanks, but what do you mean by simple TEXT command

Log in to comment.

Answer by Wayne King
on 29 Aug 2012

Do you know the value of the peak?, then yes, it's easy.

   x = randn(100,1);
   [val,I] = max(x);
   plot(x); hold on;
   plot(I,val,'r^','markerfacecolor',[1 0 0])


But the value is not displayed on the plot with Wayne's code

It should be; can you provide some sample data?

Log in to comment.

Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

MATLAB Academy

New to MATLAB?

Learn MATLAB today!