
Does findpeaks have a threshold option?
조회 수: 35 (최근 30일)
이전 댓글 표시
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?
댓글 수: 0
채택된 답변
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

댓글 수: 0
추가 답변 (2개)
Azzi Abdelmalek
2016년 7월 7일
Look at the help, you will find what you need http://www.mathworks.com/help/signal/ref/findpeaks.html
댓글 수: 0
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.
댓글 수: 0
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!