MATLAB Answers

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

Asked by Lisa Justin on 29 Aug 2012

Hi,

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

  0 Comments

Tags

Products

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);
        figure(1)
        plot(X, Y)
        text(X(PeakIdx), Peak, sprintf('Peak = %6.3f', Peak))

  0 Comments


Answer by Ilham Hardy
on 29 Aug 2012

  4 Comments

Jan Simon
on 29 Aug 2012

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

Lisa Justin on 29 Aug 2012

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

  7 Comments

Lisa Justin on 29 Aug 2012

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

Tom
on 29 Aug 2012

It should be; can you provide some sample data?

Ilham Hardy
on 29 Aug 2012

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

http://undocumentedmatlab.com/blog/controlling-plot-data-tips/

Happy reading,


Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply today