MATLAB Answers


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

Asked by Lisa Justin on 29 Aug 2012


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




No products are associated with this question.

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))


Answer by Ilham Hardy
on 29 Aug 2012


Jan Simon
on 29 Aug 2012

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

thanks, but what do you mean by simple TEXT command

Jan Simon
on 29 Aug 2012

See "help text" and "doc text".

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

on 29 Aug 2012

It should be; can you provide some sample data?

Below link is the 'how-to' display tooltip syntactically..

Happy reading,

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!