Does findpeaks have a threshold option?

조회 수: 35 (최근 30일)
Bristin Rustenbeck
Bristin Rustenbeck 2016년 7월 7일
답변: HUGO SILVA 2017년 8월 3일
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?

채택된 답변

Star Strider
Star Strider 2016년 7월 7일
‘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

추가 답변 (2개)

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

HUGO SILVA
HUGO SILVA 2017년 8월 3일
Excelent sugestion Star Strider. I was looking for a code like your, and I finded it, but it worked for some situation.

카테고리

Help CenterFile Exchange에서 Descriptive Statistics에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by