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

# 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.

## Products

No products are associated with this question.

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

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

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.

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

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/