直接频域 FIR 滤波与重叠相加法

信息处理 fft 过滤器设计 脑电图 快速卷积
2022-02-02 06:31:50

我正在尝试对 250Hz 的 EEG 信号样本进行带通滤波,并对以下 4 种 FIR 滤波方法进行基准测试以用于不同的滤波器阶数。信号的长度为 15000 个样本。

  1. 时域方法(卷积)
  2. 直接频域法
  3. 重叠相加
  4. 重叠保存

按照以下 Wiki 页面中列出的过程进行重叠添加和重叠保存 http://en.wikipedia.org/wiki/Overlap%E2%80%93add_method http://en.wikipedia.org/wiki/Overlap %E2%80%93save_method

对于频域方法,我对信号的整个长度进行 FFT,乘以滤波器 H 的频率响应,然后对结果进行 IFFT。

对于重叠和相加,我选择 M(overlap) 为 1+length_of_response,L 为 M 的两倍。

尽管人们会期望 Overlap-add 优于直接频域方法,但这并不是我在基准测试结果中看到的(见附图)。在此处输入图像描述

请帮助我了解我可能出错的地方。

2个回答

两倍于滤波器阶数的 FFT 有点短。看看我不久前写的这篇文章中的“FFT 大小的选择”部分。

此外,您的整个信号将适合合理大小的 FFT,因此我认为在这种情况下,单一 FFT 方法很好。

其实我认为你得到的结果是正确的。实际上,使用重叠相加和重叠保存方法所节省的计算量通常会随着 FFT 块大小的增加而增加。如果您使用足够的零填充来防止循环卷积,那么您在直接频域方法中所做的只是对单个块执行的重叠添加方法,即在给定信号的情况下使用最长的块长度。因此,它应该被证明是所有方法中计算量较小的。