我是信号处理方面的新手,我知道这个问题可能过于宽泛。但我还是想听听专家的提示。
我被教导使用butter
(设计巴特沃斯滤波器,又名最大平坦幅度滤波器)和filtfilt
(零相位数字滤波)函数在 MATLAB 中离线(即完成记录后)对 EEG(脑电图)信号进行带通滤波。这样可以避免由数字滤波器(即零相位滤波)引起的不可避免的“延迟”。
然后,有人问我为什么不能用fft
(快速傅里叶变换)得到信号的频域表示,然后把不需要的频率的幂设置为零,再用ifft
(快速傅里叶逆变换)恢复过滤后的数据用于相同目的的时域。这种频域操作对我来说听起来更简单合理,我无法真正回答为什么。
fft/ifft
使用简单的方法进行带通滤波的优缺点是什么?为什么人们更喜欢使用 FIR 或 IIR 数字滤波器?
例如,fft/ifft
与已建立的数字滤波器相比,该方法是否更容易出现频谱泄漏或波纹?该方法是否也存在相位延迟?有没有办法可视化这种过滤方法的脉冲响应以进行比较?