Filter signals with variety in noise level
1 view (last 30 days)
Show older comments
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 Comments
Answers (1)
Image Analyst
on 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.
See Also
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!