Detecting peaks with a specified range of amplitudes?
Show older comments
Say i have a signal with range betwene [-3, 3] and I want to locate peaks within an amplitude range of say [0, 1], how might I do this? I.e., detect peak amolitudes within a given boundary of allowed amplitude values?
Answers (1)
Luca Ferro
on 9 Feb 2023
Edited: Luca Ferro
on 9 Feb 2023
0 votes
use the findpeaks() function: Find local maxima - MATLAB findpeaks (mathworks.com)
if you need the range [0 1] just filter it out of the resulting vector afterwards, for example.
[pks,locs] = findpeaks(PeakSig,x); %peakSgn = the signal you want to analyze, x = the linspace you are working on
upperBound= locs > 0;
lowerBound= locs < 1;
peaksInRange= locs.*upperBound.*lowerBound
or more in a more compact way:
[pks,locs] = findpeaks(PeakSig,x); %peakSgn = the signal you want to analyze, x = the linspace you are working on
peaksInRange= (locs > 0 & locs < 1).*locs;
1 Comment
Luca Ferro
on 27 Feb 2023
did this solved your problem?
Categories
Find more on Descriptive Statistics in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!