Does findpeaks have a threshold option?

36 visualizaciones (últimos 30 días)
Bristin Rustenbeck
Bristin Rustenbeck el 7 de Jul. de 2016
Respondida: HUGO SILVA el 3 de Ag. de 2017
I have a plot with several maximums of differing heights. I want to find the values/locations of one of the middle peaks, which is neither the highest nor the shortest peak in the graph. Is there a way to use findpeaks to specify a certain height threshold? In other words, find peaks between heights y1 and y2?

Respuesta aceptada

Star Strider
Star Strider el 7 de Jul. de 2016
‘find peaks between heights y1 and y2’
That option doesn’t exist, but you can do something similar with two separate findpeaks calls and a setdiff call. I don’t have your data, but the code would be something like this:
x = linspace(0, 5*pi, 250);
y = 0.25*sin(x).*(0.1*cos(5*x));
[pks1,locs1] = findpeaks(y, x, 'MinPeakHeight',0.01);
[pks2,locs2] = findpeaks(y, x, 'MinPeakHeight',0.02);
[C, ia] = setdiff(locs1, locs2, 'stable');
MidPks = [pks1(ia); locs1(ia)];
figure(1)
plot(x, y)
hold on
plot(MidPks(2,:), MidPks(1,:), '^r')
hold off
grid

Más respuestas (2)

Azzi Abdelmalek
Azzi Abdelmalek el 7 de Jul. de 2016
Look at the help, you will find what you need http://www.mathworks.com/help/signal/ref/findpeaks.html

HUGO SILVA
HUGO SILVA el 3 de Ag. de 2017
Excelent sugestion Star Strider. I was looking for a code like your, and I finded it, but it worked for some situation.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by