为什么我应该使用数字滤波器进行带通,而不是简单地在频域中处理信号然后将其恢复到时域中?


15

我是信号处理的新手,我知道这个问题可能太广泛了。但是我仍然想听听专家的提示。

我被教导要使用butter(设计巴特沃思滤波器,又称最大平坦幅度滤波器)和filtfilt(零相位数字滤波)功能离线(即完成记录后)在MATLAB中对EEG(脑电图)信号进行带通滤波。这样,您可以避免由数字滤波器(即零相位滤波)引起的不可避免的“延迟”。

然后,有人问我为什么我们不能使用fft(快速傅立叶变换)获取信号的频域表示,然后将不想要的频率的功率设置为零,然后进行ifft(快速傅立叶逆变换)以及时恢复滤波后的数据出于相同的目的。对我来说,这种在频域上的操作听起来更简单合理,我无法真正回答为什么。

使用简单fft/ifft方法进行带通滤波的优点和缺点是什么?为什么人们更喜欢使用FIR或IIR数字滤波器?

例如,fft/ifft与已建立的数字滤波器相比,该方法是否更容易产生频谱泄漏或波纹?该方法还会遭受相位延迟吗?有没有一种方法可以可视化此滤波方法的脉冲响应以进行比较?



使用FFT滤波信号是绝对有效的,但是有一些注意事项。有关更多信息,请参见类似的问题/答案:stackoverflow.com/a/2949227/565542
sbell 2014年

5
诸如此类的问题可能更适合于信号处理站点。
杰森R

2
我认为史蒂文·史密斯(Steven W. Smith)撰写的《数字信号处理科学家和工程师指南》有一个答案。我认为他说,使用数字滤波器,采样-采样效率更高。但是,在更适合卷入FFT转换(在频率域中可以有砖块滤波器)的情况下,窗口的宽度最小(64个样本或更多,我记不清了)。效率不是唯一的问题。砖块过滤器意味着您需要使用将来的样本,这是不可能的。
2014年

谢谢,我在寻找类似Signal Processing网站的东西,但找不到它。
中村幸一C 2014年

Answers:


9

未直接进行频域处理的主要原因是所涉及的延迟。为了对信号执行FFT,您必须先记录整个时域信号,从开始到结束,然后才能将其转换为频域。然后,您可以进行处理,将其转换回时域并播放结果。即使两次转换和中间的信号处理实际上是瞬时的,您也不会得到第一个结果样本,直到记录了最后一个输入样本。但是,如果您愿意接受这一点,则可以得到“理想的”频域结果。例如,以44100个样本/秒的速度录制3分钟的歌曲,您将需要进行800万个点转换,但这在现代CPU上并不是什么大问题。

您可能会想将时域信号分成较小的固定大小的数据块,然后分别进行处理,从而将等待时间减少到块的长度。但是,由于“边缘效应”,此方法不起作用-给定块两端的样本无法与相邻块的相应样本正确对齐,从而在结果中产生令人反感的伪像。

发生这种情况是由于在时域和频域之间转换的过程中存在隐含的假设(反之亦然)。例如,FFT和IFFT“假定”数据是循环的;换句话说,相同时域数据的块在被处理的块之前和之后。由于通常情况并非如此,因此您会得到工件。

时域处理可能会有问题,但是您可以控制延迟并且它不会产生周期性的干扰这一事实使它在大多数实时信号处理应用程序中无疑是赢家。

(这是我先前回答的扩展版本。)


1
非常感谢您以通俗易懂的方式给出的详细答案。现在我可以看到,在我的问题中,我应该提到我的工作主要是用于离线分析,而不是在线或实时处理。我将编辑问题。您的观点很明确:由于FFT需要整个数据持续时间,因此您需要等待直到记录完成。
中村幸一C 2014年

1
好,可以。我只想指出关于频域过滤的另一件事,这可能对您或不是您的问题:过滤器在时域中不是因果关系。换句话说,他们的冲动反应延伸到正负两个时间。如果您不了解,可能会产生一些令人惊讶的效果。
戴夫·特威德

谢谢。我在Wikipedia上查找了“因果过滤器”。根据定义,FFT棚车不在乎时间,因此我可以看到它不是因果关系的。这种性质确实说明了为什么不能将其用于实时过滤。
中村幸一C 2014年

3
@DaveTweed:您关于需要800万点FFT来过滤以44.1 kHz采样的3分钟歌曲的主张是不正确的。实际上,基于FFT的卷积算法在实践中被大量使用。使用了诸如重叠保存重叠添加之类的方法,因此需要更适中的FFT大小(并因此需要处理延迟)。这些技术正是您第二段所建议的:使用较小的块,同时处理它们之间发生的“边缘效应”。
杰森R

2
@DaveTweed:我不同意。像重叠保存和重叠添加之类的快速卷积方法等效于(达到数值精度)直接线性卷积(即在时域中实现滤波器)。与时域处理相比,在任何类型的边界条件下都不会降低性能,并且它们的有限延迟仍然使它们对许多实时应用有用。我坚持认为,频域滤波需要对整个输入信号进行一次大FFT的说法是不正确的,并且我不确定在这种情况下“纯”频域处理的含义。
杰森R

2

您当然可以在频域中使用“ boxcar”理想滤波器。对偶性说,这等同于与无限长的sinc函数卷积。为了减少与使长度有限相关的伪像,通常将Sinc函数乘以一个窗口。您可能听说过汉明,汉宁(实际上是冯·汉恩),升余弦和其他开窗技术。卷积可能比fft / ifft方法更计算简单,但是答案是相同的。

每种方法都有其优缺点。巴特沃思(Butterworth)是IIR,棚车是FIR。Butterworths在通带中可能较平坦,但可能会降低陡峭的衰减,具体取决于IIR的顺序和FIR的宽度。filtfilt很难实时实现。


1
有关窗口和块过滤的真正清晰说明,请参阅RW Hamming 撰写的《数字滤波器》一书。可从Dover购买,因此价格非常合理。(顺便说一句,斯科特,我认为这是窗户的汉明,而冯·汉恩是在命名窗户时被人取名的人)
Photon

另外,我很确定,按照定义,使用FFT实现的棚车在通带中完全平坦。当我们说巴特沃思滤波器“最大平坦”时,我相信我们只是在因果滤波器的背景下谈论它(而Wiki表示,即使这样,也可以使逆切比雪夫滤波器比巴特沃思更平坦)。
Photon

1
商定了理想的无限长,但不敢肯定截断后和窗口
斯科特塞德曼

@ThePhoton感谢Hamming / von Hann的改正。无法在家中正确地可视化我的书架。
Scott Seidman

@光子; 感谢海明的《数字滤波器》一书。我看着它,它似乎是为小学学习者特别写的。我满怀希望地买了它。:)
Kouichi C. Nakamura

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.