Finding peaks in a data set

Hello all,
I have some data and need a way to reliablly find the peaks of the data set. The picture below shows the plotted data. There are 19 peaks on each side of the data for a total of 38 peaks. I have tried using the findpeaks function, however it seems to pick up random spots in the data. I am consisently trying to find all 38 peaks.
Thanks

4 Comments

There's insufficient resolution to tell just what's going on in the reflection area but clearly that will be the area of difficulty. You may well need to work on it in a piecewise fashion with that area determined by an envelope and some logic over which to determine the area depending on how con-/inconsistent the signal to be analyzed is.
What, specifically, would take to isolate peaks in that region would need to have much more useful representation the region thereof to have any real clue...
By the way, you can simply just hit alt-PrintScreen (to copy the active window into the clipboard) and then go to http://snag.gy and type control-V to paste in the screenshot. You don't actually have to take a picture with a camera and then upload it.
How many peaks did you find with findpeaks ?
And, I suppose while we're asking, what options did you use/have you tried to rid the spurious peaks from the results???? findpeaks does have quite a lot of flexibility in what it thinks is a qualifying peak depending on the inputs given.

Sign in to comment.

Answers (1)

Wayne King
Wayne King on 23 Oct 2013
Edited: Wayne King on 23 Oct 2013
I would first ensure you are using MathWorks' findpeaks(). If you enter
>>which findpeaks
do you get something back like
matlab\toolbox\signal\signal\findpeaks.m
If so, then as dpb suggests, I would use one or more of the options in findpeaks() like
'MinPeakHeight',MPH
for example.

Asked:

on 23 Oct 2013

Edited:

on 23 Oct 2013

Community Treasure Hunt

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

Start Hunting!