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

74 visualizzazioni (ultimi 30 giorni)
Hi,
Is it possible to mark the peak of a plot automatically with a command without having to to mark on each plot.

Risposta accettata

Star Strider
Star Strider il 29 Ago 2012
Modificato: Star Strider il 29 Ago 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))
  1 Commento
Kiki
Kiki il 29 Mar 2016
Hi
What if I have multiple peaks and I want the apply the label respectively? How should I write the text command?
Thank you!

Accedi per commentare.

Più risposte (3)

Wayne King
Wayne King il 29 Ago 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 Commenti

Accedi per commentare.


Ilham Hardy
Ilham Hardy il 29 Ago 2012
  4 Commenti

Accedi per commentare.


Sergio Yanez-Pagans
Sergio Yanez-Pagans il 28 Mar 2021
You could use my MATLAB File Exchange function:
Hope you find this useful!

Tag

Community Treasure Hunt

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

Start Hunting!

Translated by