【DSP笔记 · 第6章】数字世界的“筛子”:IIR滤波器设计从入门到精通

发布于:2025-06-15 ⋅ 阅读:(22) ⋅ 点赞:(0)

数字世界的“筛子”:IIR滤波器设计从入门到精通

在数字信号处理的广阔世界里,我们无时无刻不在与各种信号打交道——声音、图像、传感器读数等等。但这些原始信号往往混杂着我们不想要的成分,比如恼人的电流声、模糊图像的噪点、或是设备自身的抖动干扰。如何从这些混杂的信号中“筛”出我们真正需要的部分?答案就是——滤波器

今天,我们将深入探讨一种高效、经典的数字滤波器:无限脉冲响应(IIR)滤波器。你或许会觉得这个名字听起来很“学术”,但别担心,我将带你一步步揭开它的神秘面纱。读完本文,你将不仅理解IIR滤波器的核心原理,更能掌握其设计方法,为你未来的项目(无论是音频处理、通信系统还是物联网数据分析)打下坚实的基础。

滤波器的“设计图纸”:关键技术指标

在动手盖房子之前,我们必须先有设计图纸。同样,在设计一个滤波器之前,我们也需要一套明确的“图纸”——也就是技术指标。这些指标告诉我们,这个“筛子”应该筛掉什么、保留什么,以及筛得有多“干净”。

想象一下,我们想设计一个最常见的低通滤波器(Low-Pass Filter, LP),它的任务是让低频信号通过,阻止高频信号。这张设计图纸上通常有以下几个关键参数:

在这里插入图片描述

(上图展示了一个典型的低通滤波器幅度响应图,你可以清晰地看到通带、阻带、过渡带以及各项关键指标)

  • 通带(Passband): 我们希望保留的频率范围。从0频率一直延伸到通带截止频率 ω p \omega_p ωp
  • 阻带(Stopband): 我们希望滤除的频率范围。从阻带截止频率 ω s \omega_s ωs 开始,一直到更高频率。
  • 过渡带(Transition Band): 介于通带和阻带之间的区域,即从 ω p \omega_p ωp ω s \omega_s ωs。理想情况下,我们希望这个带越窄越好,但在现实中,它总会存在。过渡带的宽度决定了滤波器从“通过”到“阻止”的转变有多“陡峭”。
  • 通带最大衰减 a p a_p ap (或通带波纹): 在通带内,信号的幅度不应该是完美的1(即完全不衰减),它会有一些微小的波动。 a p a_p ap (单位通常是dB) 定义了这种波动的上限。 a p a_p ap 越小,通带内的信号失真就越小。
  • 阻带最小衰减 a s a_s as: 在阻带内,我们希望信号被尽可能地衰减。 a s a_s as (单位是dB) 定义了对不想要的频率信号的最小抑制程度。 a s a_s as 越大,滤波器对噪声的抑制能力就越强。

这五个指标—— ω p \omega_p ωp, ω s \omega_s ωs, a p a_p ap, a s a_s as——共同构成了我们设计IIR滤波器的“客户需求”。我们的任务,就是找到一个数学函数(即滤波器的系统函数 H ( z ) H(z) H(z)),使其频率响应能够满足这些指标要求。

巨人肩膀上的智慧:模拟滤波器这座桥梁

数字滤波器的设计,尤其是IIR滤波器的设计,有一条非常成熟和经典的路径,那就是 “间接法”。这个方法的核心思想是:不直接在数字世界里从零开始创造,而是先在模拟电路的世界里找到一个满足我们需求的优秀设计,然后再通过某种数学“翻译”方法,将它转换到数字世界。

为什么这么做?因为模拟滤波器的理论经过了近一个世纪的发展,已经积累了无数的“智慧结晶”。像巴特沃斯、切比雪夫、椭圆这些大神已经为我们准备好了各种性能优异的标准化设计方案。我们站在这些巨人的肩膀上,自然事半功倍。

让我们来认识一下两位最著名的“巨人”:

巴特沃斯 (Butterworth): 最平坦的通带

巴特沃斯滤波器被誉为“最平坦的滤波器”。它的核心特点是:在通带内,其幅度响应曲线像镜面一样平滑,没有任何波纹。它以一种非常平缓、单调的方式从通带过渡到阻带。

  • 优点: 通带平坦意味着它对我们想保留的信号不会引入幅度失真,这在高质量音频等领域至关重要。
  • 缺点: 为了换取这种平坦度,它的过渡带相对较宽。也就是说,它从“通过”到“阻止”的转变不够“陡峭”。如果你的通带和阻带频率靠得很近,可能需要一个阶数非常高的巴特沃斯滤波器才能满足要求。

切比雪夫 (Chebyshev): 追求极致的过渡带

切比雪夫滤波器则是一位“实用主义者”。它认为,在通带内允许一点点微小的、等幅的波纹(就像水面上的涟漪)是可以接受的。作为交换,它能提供比同阶巴特沃斯滤波器更窄的过渡带

  • 优点: 过渡带非常陡峭,能够很高效地分离靠得很近的频带。在很多应用中,通带内微小的波纹是可以忽略不计的。
  • 缺点: 通带内的波纹会给信号带来轻微的幅度失真。此外,它的相位响应不如巴特沃斯滤波器线性。

在这里插入图片描述

(上图直观对比了三种经典模拟滤波器的特性。可以看到,巴特沃斯最平坦,切比雪夫过渡带更窄但通带有波纹,而椭圆滤波器在两者之间取得了极致的平衡,但设计也最复杂。)

通常,我们会根据设计指标(特别是对过渡带宽度和通带平坦度的要求)来选择合适的模拟滤波器原型。选定原型后,下一步就是如何将这个模拟设计 H a ( s ) H_a(s) Ha(s) “翻译”成我们需要的数字滤波器 H ( z ) H(z) H(z)

从模拟到数字:两种核心“翻译”方法

将模拟滤波器系统函数 H a ( s ) H_a(s) Ha(s) 转换为数字滤波器系统函数 H ( z ) H(z) H(z) 的过程,本质上是一个从S平面(模拟域)到Z平面(数字域)的映射过程。这里有两种主流的“翻译”技术:脉冲响应不变法和双线性变换法。

方法一:脉冲响应不变法

核心思想

脉冲响应不变法的思想非常直观:一个系统(无论是模拟还是数字)的特性完全由其单位脉冲响应所决定。那么,如果我们让数字滤波器的单位脉冲响应 h ( n ) h(n) h(n),恰好是其对应的模拟滤波器单位脉冲响应 h a ( t ) h_a(t) ha(t) 的采样版本,它们的特性不就应该很相似吗?

数学上,这个关系表示为:
h ( n ) = T ⋅ h a ( n T ) h(n) = T \cdot h_a(nT) h(n)=Tha(nT)
其中, T T T 是采样周期。这个 T T T 是一个尺度因子,用以保证在频率为0时,数字和模拟滤波器的增益能够匹配。

S平面到Z平面的映射

通过拉普拉斯变换和Z变换的数学推导,我们可以找到这种方法下,S平面上的极点 s k s_k sk 和Z平面上的极点 z k z_k zk 之间的映射关系:
z k = e s k T z_k = e^{s_k T} zk=eskT

这个映射关系非常优美。它能将S平面的左半平面(所有稳定模拟系统的极点所在地)完美地映射到Z平面的单位圆内部(所有稳定数字系统的极点所在地)。这意味着,一个稳定的模拟滤波器,通过脉冲响应不变法转换后,得到的数字滤波器也一定是稳定的。这是一个巨大的优点。

致命缺陷:频率混叠

然而,脉冲响应不变法有一个致命的缺陷——频率混叠(Aliasing)

让我们看看频率轴是如何映射的。在S平面,频率轴是虚轴 s = j Ω s=j\Omega s=jΩ;在Z平面,频率轴是单位圆 z = e j ω z=e^{j\omega} z=e。代入映射关系 z = e s T z = e^{sT} z=esT,我们得到 e j ω = e j Ω T e^{j\omega} = e^{j\Omega T} e=ejΩT,也就是 ω = Ω T \omega = \Omega T ω=ΩT

这看起来似乎是线性的,很美好。但问题在于,数字频率 ω \omega ω 是周期性的,其范围是 ( − π , π ] (-\pi, \pi] (π,π]。而模拟频率 Ω \Omega Ω 的范围是 ( − ∞ , ∞ ) (-\infty, \infty) (,)。这意味着,模拟世界里无限长的频率轴,被“卷”起来,反复缠绕在数字世界的单位圆上。

这种缠绕的后果就是混叠。例如,一个很高频率的模拟信号分量,在被“翻译”到数字域后,可能会表现为一个低频信号,从而污染我们想要的结果。这就像你看一个快速旋转的车轮,当转速达到一定程度时,它看起来可能在倒转,这就是一种时间上的混叠。频率混叠是同一个道理。

由于混叠的存在,脉冲响应不变法只适用于那些带限特性非常好的模拟滤波器,比如理想的低通和带通滤波器。因为它们的频率响应在高频段几乎为零,所以即使发生混叠,影响也可以忽略不计。但对于高通或带阻滤波器,这种方法完全不适用。

方法二:双线性变换法 - 行业标准

为了解决频率混叠这个“顽疾”,工程师们发明了一种更强大、更可靠的“翻译”方法——双线性变换法(Bilinear Transform)。如今,它已成为设计IIR滤波器的行业标准方法。

核心思想与频率压缩

双线性变换法采用了一个不同的S平面到Z平面的映射关系:
s = 2 T 1 − z − 1 1 + z − 1 s = \frac{2}{T} \frac{1-z^{-1}}{1+z^{-1}} s=T21+z11z1
这个公式看起来比 z = e s T z=e^{sT} z=esT 复杂,但它蕴含着解决混叠问题的“魔法”。这个变换能够将整个S平面的虚轴 j Ω j\Omega jΩ(从 − ∞ -\infty + ∞ +\infty +),一对一地、不重不叠地映射到Z平面的单位圆上(从 ω = − π \omega=-\pi ω=π ω = + π \omega=+\pi ω=+π)。

这个映射关系消除了混叠的根源,但它也付出了一个“代价”:频率关系不再是线性的。模拟频率 Ω \Omega Ω 和数字频率 ω \omega ω 之间的关系变成了一种非线性的“压缩”关系,我们称之为频率畸变(Frequency Warping)

具体关系如下:
Ω = 2 T tan ⁡ ( ω 2 ) \Omega = \frac{2}{T} \tan\left(\frac{\omega}{2}\right) Ω=T2tan(2ω)
而反过来,数字频率是:
ω = 2 arctan ⁡ ( Ω T 2 ) \omega = 2 \arctan\left(\frac{\Omega T}{2}\right) ω=2arctan(2ΩT)

【Google search keywords: bilinear transform frequency warping】

(上图展示了数字频率ω和映射后的模拟频率Ω之间的非线性关系。在低频段,两者近似线性;但在高频段,关系被严重“压缩”。)

关键步骤:预畸变 (Pre-warping)

既然频率会被“畸变”,那我们直接用给定的数字指标(如 ω p , ω s \omega_p, \omega_s ωp,ωs)去设计模拟滤波器,转换过来之后,截止频率不就跑到错误的位置了吗?

没错!为了解决这个问题,双线性变换法引入了一个至关重要的步骤——频率预畸变(Pre-warping)

这个思想非常巧妙:既然我们知道最终的变换会如何“扭曲”频率,那我们就在设计模拟滤波器之前,先对我们的目标频率进行一次“反向扭曲”

具体来说,我们拿到数字滤波器的设计指标 ω p \omega_p ωp ω s \omega_s ωs 后,并直接用它们。而是通过频率畸变公式,计算出它们在进行双线性变换之前,应该对应的模拟频率 Ω p \Omega_p Ωp Ω s \Omega_s Ωs 是多少:

Ω p = 2 T tan ⁡ ( ω p 2 ) \Omega_p = \frac{2}{T} \tan\left(\frac{\omega_p}{2}\right) Ωp=T2tan(2ωp)
Ω s = 2 T tan ⁡ ( ω s 2 ) \Omega_s = \frac{2}{T} \tan\left(\frac{\omega_s}{2}\right) Ωs=T2tan(2ωs)
我们称这对 ( Ω p , Ω s ) (\Omega_p, \Omega_s) (Ωp,Ωs)预畸变后的模拟技术指标

然后,我们用这对新的、经过预畸变的模拟指标 ( Ω p , Ω s ) (\Omega_p, \Omega_s) (Ωp,Ωs),以及原始的衰减指标 ( a p , a s ) (a_p, a_s) (ap,as),去设计我们的模拟滤波器原型 H a ( s ) H_a(s) Ha(s)

最后,当我们对这个设计好的 H a ( s ) H_a(s) Ha(s) 应用双线性变换公式 s = 2 T 1 − z − 1 1 + z − 1 s = \frac{2}{T} \frac{1-z^{-1}}{1+z^{-1}} s=T21+z11z1 时,那个非线性的频率畸变效应,会恰好将我们精心设计的 Ω p \Omega_p Ωp Ω s \Omega_s Ωs “扭曲”回我们最初想要的数字频率 ω p \omega_p ωp ω s \omega_s ωs。完美!

总结一下,使用双线性变换法设计IIR滤波器的完整流程如下:

  1. 确定数字指标: 明确你的需求,写下数字滤波器的技术指标: ω p , ω s , a p , a s \omega_p, \omega_s, a_p, a_s ωp,ωs,ap,as。同时确定采样周期 T T T(在很多题目中,为了简化,会令 T = 2 T=2 T=2)。
  2. 频率预畸变: 使用预畸变公式,将数字截止频率 ω p , ω s \omega_p, \omega_s ωp,ωs 转换为模拟截止频率 Ω p , Ω s \Omega_p, \Omega_s Ωp,Ωs
  3. 设计模拟滤波器: 使用 ( Ω p , Ω s , a p , a s ) (\Omega_p, \Omega_s, a_p, a_s) (Ωp,Ωs,ap,as) 这套模拟指标,选择并设计一个合适的模拟滤波器(如巴特沃斯或切比雪夫),得到其系统函数 H a ( s ) H_a(s) Ha(s)
  4. 进行双线性变换: 将 s = 2 T 1 − z − 1 1 + z − 1 s = \frac{2}{T} \frac{1-z^{-1}}{1+z^{-1}} s=T21+z11z1 代入 H a ( s ) H_a(s) Ha(s) 中,化简后得到最终的数字滤波器系统函数 H ( z ) H(z) H(z)

这个流程逻辑严密,结果精确,是IIR滤波器设计中最重要、最实用的方法。

设计其他滤波器?小菜一碟!

我们上面一直以低通滤波器为例。那如果想设计高通(HP)、带通(BP)或者带阻(BS)滤波器呢?

其实过程大同小异,核心依然是双线性变换法。我们只需要在上述流程的第3步“设计模拟滤波器” 中稍作调整。

我们不需要为每种滤波器类型都重新发明一套理论。模拟滤波器设计理论已经为我们提供了非常方便的频率变换公式,可以轻松地将一个设计好的归一化低通滤波器转换为任何其他类型(高通、带通、带阻)的滤波器。

所以,设计一个数字高通滤波器的流程就变成了:

  1. 确定数字高通指标。
  2. 对数字指标进行预畸变,得到模拟高通指标。
  3. 将模拟高通指标,通过模拟频率变换,转换为等效的归一化低通指标。
  4. 设计这个归一化模拟低通滤波器 H L P ( p ) H_{LP}(p) HLP(p)
  5. H L P ( p ) H_{LP}(p) HLP(p) 通过反向的模拟频率变换,得到我们想要的模拟高通滤波器 H a ( s ) H_a(s) Ha(s)
  6. H a ( s ) H_a(s) Ha(s) 进行双线性变换,得到最终的数字高通滤波器 H ( z ) H(z) H(z)

虽然步骤看起来多了,但每一步都是公式化的,计算机可以轻松完成。核心思想没变:所有复杂的设计都先在成熟的模拟低通域完成,然后再一步步“翻译”和“变换”到我们最终的目标上。

总结:IIR滤波器的选择与权衡

我们今天深入探讨了IIR数字滤波器的设计之旅。让我们回顾一下核心要点:

  1. IIR滤波器设计是“借力”的艺术:它巧妙地利用了成熟的模拟滤波器理论,通过“间接法”来完成设计,保证了高效和高性能。
  2. 指标是设计的起点:一切设计都始于明确的技术指标( ω p , ω s , a p , a s \omega_p, \omega_s, a_p, a_s ωp,ωs,ap,as)。
  3. 双线性变换是王道:虽然脉冲响应不变法思想直观,但其频率混叠问题使其应用受限。双线性变换法通过非线性的频率映射彻底解决了混叠问题,是当之无愧的行业标准。
  4. 预畸变是关键技巧:为了克服双线性变换带来的频率畸变,我们在设计模拟滤波器前必须进行“预畸变”校正,确保最终的数字滤波器截止频率精确无误。
  5. IIR的优缺点:IIR滤波器的最大优点是高效。它可以用很低的阶数(意味着更少的计算和存储)就实现非常陡峭的频率响应。但它的代价是非线性相位,这可能会对某些信号(如图像或需要精确定位的脉冲信号)的波形造成影响。

在下一篇文章中,我们将探讨另一种滤波器——FIR(有限脉冲响应)滤波器。它虽然在计算效率上不如IIR,但它拥有IIR无法比拟的优点:严格的线性相位。理解IIR和FIR的各自特点,将让你在未来的工程实践中,能够根据具体需求做出最明智的选择。


习题

现在,通过几个小练习来巩固一下今天学到的知识吧!

第1题 (概念题)

在使用脉冲响应不变法设计IIR滤波器时,为什么通常不推荐用它来设计高通滤波器?其根本原因是什么?

第2题 (计算题)

假设我们要用双线性变换法设计一个数字低通滤波器,其通带截止频率为 ω p = 0.2 π \omega_p = 0.2\pi ωp=0.2π rad/sample,阻带截止频率为 ω s = 0.4 π \omega_s = 0.4\pi ωs=0.4π rad/sample。为了简化计算,我们设采样周期 T = 2 T=2 T=2。请计算在设计模拟滤波器原型之前,需要使用的预畸变模拟频率 Ω p \Omega_p Ωp Ω s \Omega_s Ωs 是多少?

第3题 (应用选择题)

在一个实时语音降噪系统中,主要目标是滤除高于3400Hz的背景噪声,同时要尽可能地节省计算资源(例如在嵌入式设备上运行)。你认为选择巴特沃斯IIR滤波器还是切比雪夫IIR滤波器更合适?为什么?


答案

第1题答案:

根本原因是频率混叠 (Aliasing)。脉冲响应不变法的S平面到Z平面映射会将无限长的模拟频率轴 j Ω j\Omega jΩ 多次缠绕到Z平面的单位圆上。高通滤波器的特性是在高频段有显著的响应,这些高频响应在映射过程中会混叠到低频区域,严重破坏数字滤波器的低频特性(本应是通带或过渡带),导致设计完全失败。

第2题答案:

我们使用频率预畸变公式 Ω = 2 T tan ⁡ ( ω 2 ) \Omega = \frac{2}{T} \tan(\frac{\omega}{2}) Ω=T2tan(2ω),并代入 T = 2 T=2 T=2

对于通带截止频率:
Ω p = 2 2 tan ⁡ ( 0.2 π 2 ) = tan ⁡ ( 0.1 π ) ≈ tan ⁡ ( 18 ∘ ) ≈ 0.3249  rad/s \Omega_p = \frac{2}{2} \tan\left(\frac{0.2\pi}{2}\right) = \tan(0.1\pi) \approx \tan(18^\circ) \approx 0.3249 \text{ rad/s} Ωp=22tan(20.2π)=tan(0.1π)tan(18)0.3249 rad/s

对于阻带截止频率:
Ω s = 2 2 tan ⁡ ( 0.4 π 2 ) = tan ⁡ ( 0.2 π ) ≈ tan ⁡ ( 36 ∘ ) ≈ 0.7265  rad/s \Omega_s = \frac{2}{2} \tan\left(\frac{0.4\pi}{2}\right) = \tan(0.2\pi) \approx \tan(36^\circ) \approx 0.7265 \text{ rad/s} Ωs=22tan(20.4π)=tan(0.2π)tan(36)0.7265 rad/s
所以,我们应该使用 Ω p ≈ 0.3249 \Omega_p \approx 0.3249 Ωp0.3249 Ω s ≈ 0.7265 \Omega_s \approx 0.7265 Ωs0.7265 这对模拟频率指标去设计模拟滤波器原型。

第3题答案:

选择切比雪夫IIR滤波器更合适。

原因如下:

  1. 计算资源: 题目要求节省计算资源,这意味着我们需要一个阶数尽可能低的滤波器。
  2. 过渡带: 语音信号和高频噪声的分界是明确的,我们需要一个较窄的过渡带来有效地分离它们。在相同的阶数下,切比雪夫滤波器比巴特沃斯滤波器有更窄的过渡带。反过来说,要达到相同的过渡带要求,切比雪夫滤波器所需的阶数更低,也就更节省计算资源。
  3. 通带波纹: 语音通信对相位的要求不高,对通带内微小的幅度波纹也不敏感。因此,切比雪夫滤波器“通带波纹”这个缺点在语音应用中是可以接受的。

综上所述,用切比雪夫滤波器可以用更低的成本(阶数)达到设计目标,是更合适的选择。