正如您所知道的,对于您提供的过滤器规格,您需要一个非常高的过滤器。总而言之,您要求:
- 通带边缘:30 Hz
- 阻带边缘:32 Hz
- 最小阻带衰减:68 dB
您需要满足规范的滤波器阶数的主要决定因素是过渡带的宽度,作为采样率的一部分。在您的情况下,您需要一个 2 Hz 宽的过渡带,采样率为 4096 Hz。这是一个非常尖锐的转变!
更好的方法是在串联级联的多个滤波器级中执行抽取。这使您无需使用单个非常高阶滤波器即可满足整体频率响应要求。您需要通过级联滤波器实现 64 的总体抽取因子。可能很难确定阶段的最佳安排(就应用过滤器的总体计算而言),但我会推荐以下方法作为开始:
第 1 阶段:设计一个滤波器,其通带边缘为 30 Hz,阻带边缘为 (512 - 32) = 480 Hz。将滤波器的输出抽取 8。因此,在该滤波器的输出端,您将获得一个以 512 Hz 采样的信号。
您可能会注意到,这种方法会产生一些混叠,因为允许第一级滤波器的过渡带超出新的 256 Hz 奈奎斯特频率。然而,这不是问题,因为在整个级联的所需通带内不会发生任何混叠。您允许一些能量混叠到将成为第 2 阶段的阻带的区域,在那里它将被消除。扩展第 1 级滤波器的过渡带可以节省一些计算,因为更宽的过渡将需要更低的滤波器阶数。由于阶段 1 以最高采样率运行,这可能是一个显着的好处。
第 2 阶段:设计一个通带边缘为 30 Hz 和阻带边缘为 32 Hz 的滤波器。将滤波器的输出抽取 8。因此,在该滤波器的输出端,您将获得一个以 64 Hz 采样且通带为 30 Hz 的信号。
虽然这仍然是一个相当尖锐的过渡带,但它应该更容易设计,因为当以滤波器采样率的比率表示时,过渡带宽度是 8 倍大。此外,应用第 2 级滤波器所需的工作进一步减少,因为它以较低的 512 Hz 频率而不是 4096 Hz 运行。
使用 MATLAB 的fdatool
,上述规范产生以下过滤器:
- 阶段1:29 阶 FIR,0.1 dB 通带纹波,80 dB 阻带衰减
- 阶段 2: 852 阶 FIR,0.1 dB 通带纹波,80 dB 阻带衰减
我只是使用默认衰减设置进行说明。您会注意到,使用此设置,第二级过滤器仍然非常复杂。虽然我以前使用过这种长度的过滤器,但您可能希望进一步分解问题以避免如此长的过滤器。为此,您将添加更多的抽取阶段。例如,您可以尝试 4 次抽取的三个阶段,或 2 次抽取的 6 个阶段。前进的最佳方式取决于您的系统的限制,但您应该了解该方法的想法。