如何正确设计数字 FIR 滤波器?

问题描述

我想为超声波信号设计一系列最优滤波器。滤波器阶数固定为 16,我希望滤波器具有用于一系列范围的通带,即(16kHz-38kHz、17kHz-39kHz 等)。我一直在使用 Matlab 的 Filter Designer 并尝试以反复试验的方式尝试不同的设计输入。我可以使用什么方法来找到最佳滤波器设计算法(Remez、最小窗口或其他算法),而不是随意地将输入扔到墙上并查看最佳效果(我正在寻找在阻带中衰减最好的滤波器和鉴于我的滤波器阶数限制,在通带中具有平坦的频率响应)。

解决方法

16 抽头对于 FIR 滤波器来说并不多,所以我怀疑任何设计是否可能获得令人满意的结果。也就是说,我建议尝试 Remez,又名 Parks-McClellan 最优 FIR 滤波器设计。请参阅 Matlab's firpm 函数。由 Remez 算法设计的 FIR 滤波器在最小化最大逐点误差的意义上是“最优的”。 Anthor 对 Remez 的补充是它允许在每个频段上设置不同的重要性,这可能有助于平衡通带平坦度与阻带衰减之间的权衡。