Filter signals with variety in noise level
Ältere Kommentare anzeigen
Hello, i am working in a project where i track the fundamental frequency (f0) of a signal using autocorrelation. The algorithm works as follows:
- perform framming of the signal of 128 window size with 50%overlapping
- find the autocorrelation for each frame
- find the local maxima and the locations
- exclude the 1st lag because the autocorr will have the biggest similarity in that lag
- find differences of locations
- take the median for each difference (med)
- f0=fs./med
And it works fine, but where my signal have some noise i get wrong values of f0,here is an example take a look at the red marked parts, note that this signal is from bird with rapid frequency changes so i smoothed it , the signal has 44.1kHz sampling frequency.

I have many signals (400) and i can't for every one of them to clean the noise separatelly it's very time consuming. The noise level varies for everyone so i can't do it with only filter. I did a little search and i found adaptive filtering, so what are your opinion about my issue how to implement the adaptive filtering LMS? is there any other efficient way to deal with it? thank you in advance.
Antworten (1)
Image Analyst
am 28 Jul. 2015
0 Stimmen
Why is it time consuming? To smooth 400 128-element long 1-D signals with something like rsmooth() or sgolayfilt() should take just a fraction of a second.
1 Kommentar
Manolis Michailidis
am 28 Jul. 2015
Kategorien
Mehr zu Multirate Signal Processing finden Sie in Hilfe-Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!