New answers tagged


You shouldn't perform the filtering operation on the FFT data, but on the original time domain data. The functions filtfilt and lfilter both take time domain data as their inputs, not frequency domain data. Filtering can also be implemented in the frequency domain (by multiplication), but the functions you're using don't do that.


A couple of guesses Your bandpass has about 20 dB of gain at the resonance frequency, so it's quite possible that you are clipping something downstream You do block based processing: that means you need to carry the values of the state variable over from one block to the next. You only initialize on the first block You will also get artifacts each time when ...


okay, the magnitude frequency response for a general $N$th-order Butterworth lowpass filter is: $$ \Big|H_\mathrm{LP}(f)\Big|^2 = \frac{1}{1 + \left(\frac{f^2}{W^2} \right)^N} $$ for bandpass filtering, centered at frequency $f_0$, this substitution is made to the LPF: $$ f \leftarrow \frac{f}{f_0} - \frac{f_0}{f} $$ so then it comes out as: $$ \Big|H_\...

Top 50 recent answers are included