Filter signals with variety in noise level
1 回表示 (過去 30 日間)
古いコメントを表示
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 件のコメント
回答 (1 件)
Image Analyst
2015 年 7 月 28 日
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.
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!