I'm developing an application which one of its capabilities is peak detection. I expect to handle three types of the similar data (Acceleration vs Frequency) but measured in different laboratories and with different sampling and noise. The data is not equally spaced in frequency.

Here is the plot of each of them:

enter image description here

enter image description here Detail of the previous one

enter image description here

enter image description here

The first contains about 2000 points and there are a lot of local maxima detected. I can't use an average-smooth because the last one contains only 100 points and if I do so I will be missing important peaks (each peak occupy only 3-7 points).

What can I do to improve the detection of peaks and how it could be done?

Thank you very much.

  • $\begingroup$ Wavelets are very useful for this application. $\endgroup$ Commented Aug 21, 2013 at 12:10

1 Answer 1


If you come up with a set of criteria that define what makes a local maximum become a "peak of interest", then you could test whether each local maximum meets the criteria you set. For example:

A local maximum at $X(f)$ is considered a peak of interest if for some chosen small value $\epsilon$ and some chosen height $\mu$ , we can satisfy the following

$$\exists \, \delta_1 , \delta_2 \lt \epsilon \quad s.t. \quad X(f)-X(f-\delta_1) > \mu \quad \text{and} \quad X(f)-X(f+\delta_2) > \mu$$

If one such criterion is not sufficient to describe your concept of a peak of interest, then you can logically combine multiple criteria.

You could approach the problem from a filtering and smoothing perspective as you mention, but notice that each filter or smoothing operation has an implicit criteria that it is enforcing. No matter how you implement your peak detection, realize that there is no "right answer" as to what defines a peak of interest. So before you can achieve the desired result you must first decide what that result should look like.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.