Finding peaks only in signal

I want to find only the peaks in a signal that could have more than one frequency as shown in the picture
At the trough there is sometime small peaks that are being picked up using the findpeaks function.

Réponses (2)

Azzi Abdelmalek
Azzi Abdelmalek le 30 Juil 2015

0 votes

[peak,idx]=findpeaks(YourSignal,'minpeakwidth',1000)
Star Strider
Star Strider le 30 Juil 2015

0 votes

You have a clean signal without much noise.
I would begin by doing an fft on your signal, and use it to choose the frequency components of interest. Then use a bandpass filter to keep the frequencies you want. (A brief description of filter design and implementation is here.)
After that, use findpeaks, choosing the appropriate name-value pairs to tweak it to your needs as necessary. It will be much easier to use findpeaks on the filtered signal than on the original unfiltered signal.

Community Treasure Hunt

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

Start Hunting!

Translated by