Filter signals with variety in noise level
1 Ansicht (letzte 30 Tage)
Ä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.
0 Kommentare
Antworten (1)
Image Analyst
am 28 Jul. 2015
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.
Siehe auch
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!