IIR滤波器是什么?核心工作原理与数学模型

IIR滤波器,全称“无限冲激响应滤波器”(Infinite Impulse Response Filter),是数字信号处理中一类重要的线性时不变系统。它的核心特点在于其输出信号不仅取决于当前的输入和过去的输入,还取决于其自身的过去输出。正是这种反馈机制,使得系统的冲激响应理论上会无限持续下去,因此得名“无限冲激响应”。

与FIR(有限冲激响应)滤波器不同,FIR滤波器只使用输入信号的有限个过去样本来计算当前输出,没有反馈路径,其冲激响应会在有限步内变为零。

数学描述:差分方程与传递函数

一个典型的N阶IIR滤波器可以通过以下线性常系数差分方程来描述:

y(n) = b₀x(n) + b₁x(n-1) + … + b_Mx(n-M) – a₁y(n-1) – a₂y(n-2) – … – a_Ny(n-N)

其中:

  • y(n) 是当前时刻 n 的输出信号。
  • x(n) 是当前时刻 n 的输入信号。
  • x(n-k) 是过去时刻 n-k 的输入信号。
  • y(n-k) 是过去时刻 n-k 的输出信号。
  • b₀, b₁, …, b_M 是前馈系数(feedforward coefficients),作用于输入信号及其延迟版本。
  • a₁, a₂, …, a_N 是反馈系数(feedback coefficients),作用于输出信号的延迟版本。注意这里的系数通常定义为负号,在某些表示中可能写成 + a_k y(n-k) 并将分母多项式定义为 1 + a₁z⁻¹ + …。
  • M 是输入部分的阶数。
  • N 是输出部分的阶数,通常我们说一个IIR滤波器是N阶,通常指反馈部分的最高阶N。M和N可以不同,但一般情况下N决定了滤波器的核心特性和计算复杂度。

将差分方程进行Z变换,可以得到IIR滤波器的系统函数或传递函数 H(z):

H(z) = Y(z) / X(z) = (b₀ + b₁z⁻¹ + … + b_Mz⁻ᴹ) / (1 + a₁z⁻¹ + … + a_Nz⁻ᴺ)

这是一个有理函数,由分子多项式(零点)和分母多项式(极点)构成。分母多项式的根就是系统的极点(Poles),分子多项式的根是系统的零点(Zeros)。系统的稳定性由极点位置决定:对于因果稳定的离散时间系统,所有极点必须位于Z平面单位圆以内。反馈系数 a_k 直接决定了极点的位置。

为什么选择IIR滤波器?相比FIR的优势与劣势

选择IIR滤波器通常是基于其固有的特性,这些特性使其在特定应用中比FIR滤波器更有优势,但也伴随着一些劣势。

主要优势:

  1. 更高的效率: 这是IIR滤波器最突出的优点。要实现相同的幅频响应(尤其是在通带和阻带之间的过渡带要求陡峭时),IIR滤波器通常比FIR滤波器需要低得多的阶数。阶数直接关联到计算所需的乘法和加法次数,因此低阶意味着更少的计算资源(CPU周期、功耗)和更少的内存来存储系数和延迟状态。这在计算能力或存储空间受限的嵌入式系统、实时处理应用中至关重要。
  2. 模拟滤波器设计理论的继承: IIR滤波器可以方便地利用成熟的模拟滤波器设计理论(如Butterworth、Chebyshev、Elliptic等),通过模拟-数字转换技术(如双线性变换、脉冲响应不变法)来设计。这使得设计具有特定幅频响应特性的IIR滤波器相对直接,因为有丰富的模拟滤波器原型可供选择和转换。

主要劣势:

  1. 非线性相位: 这是IIR滤波器的一个重要缺点。除了少数特殊情况,IIR滤波器的相位响应是非线性的。这意味着不同的频率分量通过滤波器时会产生不同的群延迟(Group Delay),导致信号波形发生畸变。对于对相位敏感的应用(如数据通信、某些音频处理、脉冲信号分析),非线性相位是不可接受的,此时FIR滤波器因其可以轻松实现线性相位而成为首选。
  2. 稳定性问题: IIR滤波器是递归的(有反馈),其稳定性取决于反馈系数的选择。如果极点位于单位圆或单位圆外,系统将不稳定,输入有界信号可能导致输出无限增长。虽然设计过程会确保稳定性,但在实际实现中,有限字长效应(系数量化、算术运算截断/舍入)可能导致极点微小移动,严重时可能破坏稳定性或引起极限环振荡(Limit Cycles)。FIR滤波器由于没有反馈,天然就是稳定的(只要系数有限)。
  3. 设计复杂性(针对相位要求): 如果除了幅频响应外,还需要控制相位响应(即使不是严格的线性相位),IIR滤波器的设计会变得更加复杂。而设计线性相位FIR滤波器则相对标准和容易。

  4. 更容易受有限字长效应影响: 由于反馈的存在,IIR滤波器对系数精度和内部计算精度更敏感。有限字长可能导致前面提到的稳定性问题或极限环振荡,尤其是在低阶或对计算精度要求不高的硬件上实现时。

因此,选择IIR还是FIR取决于具体的应用需求:如果对计算效率要求高且对相位失真不敏感,IIR是更好的选择;如果需要严格的线性相位或对稳定性、实现精度有很高要求,则FIR通常是首选。

IIR滤波器的多少?参数定义与特性衡量

“多少”在这里可以理解为IIR滤波器有哪些关键参数来定义它,以及我们用哪些量来衡量其性能。

定义IIR滤波器的核心参数:

  • 阶数 (Order, N/M): 在前面提到的差分方程中,N是反馈部分的最高延迟阶数,M是前馈部分的最高延迟阶数。通常所说的IIR滤波器阶数是指N。阶数越高,滤波器的频率响应通常可以做得越陡峭、越接近理想,但计算量和潜在的稳定性风险也越高。阶数由设计要求(如过渡带宽度、阻带衰减)决定。
  • 系数 (Coefficients, b₀…b_M, a₁…a_N): 这些系数是滤波器设计的最终成果,它们唯一地确定了滤波器的传递函数 H(z),进而决定了滤波器的幅频响应、相频响应、极点和零点位置。系数通常是实数,但在某些特定应用中也可能是复数。系数的精度(字长)在实际实现中是一个关键考虑因素。

衡量IIR滤波器性能的常用指标:

  • 幅频响应 (Magnitude Response, |H(eʲʷ)|): 描述滤波器对不同频率信号幅度的增益或衰减。这是滤波器最基本的特性,通常绘制在对数坐标(dB)下。关键指标包括:

    • 通带 (Passband): 希望信号通过的频率范围,此范围内的增益接近于1(0 dB)。
    • 阻带 (Stopband): 希望信号衰减的频率范围,此范围内的增益很小(较大的负dB值)。
    • 过渡带 (Transition Band): 介于通带和阻带之间的频率范围。
    • 截止频率 (Cutoff Frequency): 通常是通带和过渡带之间的边界频率,或阻带和过渡带之间的边界频率,或增益下降3 dB的频率。
    • 通带纹波 (Passband Ripple, Ap): 通带内增益允许的最大波动范围(通常用dB表示)。
    • 阻带衰减 (Stopband Attenuation, As): 阻带内信号衰减的最小量(通常用dB表示,如 -60dB表示衰减1000倍)。
  • 相频响应 (Phase Response, ∠H(eʲʷ)): 描述滤波器对不同频率信号相位的改变。
  • 群延迟 (Group Delay, τ_g(ω)): 衡量不同频率分量通过滤波器所需的时间延迟,是相频响应对角频率的负导数 (-d∠H(eʲʷ)/dω)。线性相位滤波器具有恒定的群延迟,非线性相位滤波器的群延迟随频率变化。
  • 极点和零点 (Poles and Zeros): 传递函数 H(z) 的根。极点决定了滤波器的稳定性,必须在单位圆内。极点和零点的位置共同决定了频率响应的形状。在Z平面上靠近单位圆的极点会在频率响应中产生峰值,靠近单位圆的零点会产生谷值(陷波)。

这些参数和指标是IIR滤波器设计、分析和比较的基础。一个具体的IIR滤波器就是由其阶数和系数(a_k, b_k)完全确定,其性能则通过幅频响应、相频响应等指标来衡量。

如何设计IIR滤波器?常用方法与步骤

设计一个IIR滤波器的目标是找到一组系数 (a_k, b_k),使得所得到的数字滤波器满足特定的性能指标(主要是幅频响应,有时也考虑相频响应)。最常用的方法是基于模拟滤波器原型的设计。

基于模拟滤波器原型的设计方法:

这种方法利用了模拟滤波器理论的成熟性。基本步骤如下:

  1. 确定数字滤波器的性能指标: 根据实际应用需求,明确数字滤波器的类型(低通、高通、带通、带阻)、通带截止频率、阻带起始频率、通带最大允许纹波 (Ap) 和阻带最小衰减 (As) 等。注意这些频率通常是数字频率(归一化频率或相对于采样率)。
  2. 对数字频率进行预畸变(Pre-warping,如果使用双线性变换): 这是双线性变换特有的步骤。由于双线性变换是非线性的频率映射,数字频率 ω 与对应的模拟频率 Ω 之间存在 Ω = (2/T)tan(ω/2) 的关系(T为采样周期)。为了让数字滤波器在目标数字频率 ω_c 处具有与模拟原型滤波器在目标模拟频率 Ω_c 处相同的特性,需要先计算出“预畸变”后的模拟频率 Ω_c = (2/T)tan(ω_c/2),然后用这个 Ω_c 去设计模拟原型。
  3. 设计模拟原型滤波器: 根据预畸变后的模拟频率和性能指标(Ap, As),选择合适的模拟滤波器类型(Butterworth, Chebyshev Type I, Chebyshev Type II, Elliptic)并确定其阶数和传输函数 H_a(s)。

    • Butterworth: 通带最平坦,阻带单调下降,过渡带较宽。易于设计。
    • Chebyshev Type I: 通带有纹波,阻带单调下降。在相同的阶数下,过渡带比Butterworth窄。
    • Chebyshev Type II: 通带单调,阻带有纹波。
    • Elliptic (Cauer): 通带和阻带都有纹波。在相同阶数和纹波/衰减要求下,过渡带最窄,效率最高。设计最复杂。

    选择哪种类型取决于对通带平坦性、阻带衰减和过渡带陡峭度的不同要求。

  4. 选择模拟到数字的变换方法: 将模拟滤波器传输函数 H_a(s) 转换为数字滤波器传输函数 H(z)。常用方法有:

    • 脉冲响应不变法 (Impulse Invariance): 使得数字滤波器的冲激响应是采样后的模拟滤波器冲激响应。适用于带通和高通滤波器,但不适用于低通滤波器(因为采样后的模拟低通冲激响应尾部很长,可能导致数字滤波器阶数过高),且可能存在频率混叠问题。模拟S平面上的 jΩ 轴直接映射到数字Z平面上的单位圆。
    • 双线性变换法 (Bilinear Transform): 使用 s = (2/T) * (1-z⁻¹)/(1+z⁻¹) 进行替换。这将整个模拟S平面映射到数字Z平面单位圆内,避免了频率混叠。缺点是会导致频率非线性“warping”(扭曲),需要步骤2的预畸变来校正关键频率点。这是设计标准IIR滤波器最常用的方法。
  5. 获得数字滤波器的传输函数 H(z): 替换后得到的 H(z) 是 z⁻¹ 的有理多项式形式,即 (b₀ + … + b_M z⁻ᴹ) / (1 + … + a_N z⁻ᴺ)。
  6. 提取系数 (a_k, b_k): 从 H(z) 中提取出前馈系数 b_k 和反馈系数 a_k。这些系数就是实现数字IIR滤波器所需的值。

还有其他设计方法,例如直接在数字域进行设计(如极点-零点配置法、迭代优化法),但基于模拟原型的方法对于设计标准频率响应的滤波器来说更为成熟和常见。现代数字信号处理器件通常提供专门的软件工具箱(如MATLAB、SciPy等)来简化IIR滤波器的设计过程,用户只需输入设计指标,工具即可自动完成模拟原型选择、阶数计算、转换和系数提取。

怎么实现IIR滤波器?不同的结构形式

实现了IIR滤波器,就是根据其差分方程或传递函数,构建硬件电路或编写软件代码来处理输入的数字信号 x(n) 并产生输出信号 y(n)。由于存在反馈,IIR滤波器的实现需要存储过去的输出值以及过去的输入值(取决于实现结构)。同一个传递函数 H(z) 可以对应多种不同的实现结构,它们在计算复杂度、存储需求、有限字长效应的敏感性等方面有所不同。

常见IIR滤波器实现结构:

  1. 直接形 I (Direct Form I):

    这是最直观的实现结构,直接对应于差分方程的计算顺序。它将前馈(全零点)部分和反馈(全极点)部分分开实现。需要 M+1 个乘法、M 个加法、N 个乘法、N 个加法,以及 M+N 个延迟单元。

    计算步骤:先计算前馈部分的输出(一个中间变量),再计算反馈部分的输出,最后将两者相加得到 y(n)。需要分别存储 M 个过去的输入值和 N 个过去的输出值。

    虽然直观,但它通常不是最高效或数值性能最好的结构。

  2. 直接形 II (Direct Form II):

    这是通过交换传递函数分子和分母部分的顺序(在Z域级联是可交换的)并合并共享的延迟单元得到的结构。它通常比直接形 I 更高效,只需要 max(M, N) 个延迟单元。如果 M=N,则只需要 N 个延迟单元。

    计算步骤:先计算一个中间变量 w(n),该变量是输入 x(n) 经过反馈部分但没有经过前馈部分的输出;然后再将 w(n) 及其延迟版本通过前馈部分,得到最终输出 y(n)。所有延迟都作用于中间变量 w(n)。

    这是实现IIR滤波器最常见的结构之一,因为它使用了最少的延迟单元,即“规范形式”(Canonic Form)。

  3. 转置直接形 II (Transposed Direct Form II):

    这是直接形 II 结构的信号流图进行转置(所有箭头的方向反转,输入输出节点互换,求和点变分支点,分支点变求和点)得到的结构。它具有与直接形 II 相同的传递函数和相同的延迟单元数量,但其内部计算顺序和对有限字长效应的敏感性可能不同。

    转置直接形 II 在许多DSP芯片和软件库中也很常用,因为它在某些情况下(如输出量化误差)表现出更好的数值特性。

  4. 级联形 (Cascade Form):

    一个高阶的IIR滤波器可以分解为一系列低阶(通常是二阶,称为双二阶节或Biquad)和可能的一阶滤波器节的级联。每个双二阶节实现一个具有一对共轭复数极点和一对共轭复数零点(或实数极点/零点)的二阶传递函数。

    分解过程通常是将传递函数 H(z) 的分子和分母多项式分解为实系数的二阶(和一阶)因子的乘积:
    H(z) = H₁(z) * H₂(z) * … * H_K(z)
    每个 H_i(z) 是一个低阶传递函数。

    优点:

    • 改善数值稳定性: 高阶滤波器的极点可能非常接近,导致分母多项式系数对量化非常敏感。分解成低阶节可以降低这种敏感性。
    • 更容易控制极点/零点: 可以单独实现和调整每个极点/零点对。
    • 模块化: 每个双二阶节结构相同,便于硬件实现和软件复用。

    级联形式是实现高阶IIR滤波器的非常流行的方法,通常每个双二阶节内部又采用直接形 II 或转置直接形 II 结构。

  5. 并行形 (Parallel Form):

    通过对传递函数 H(z) 进行部分分式展开,可以将其分解为一系列一阶和二阶传递函数的和:
    H(z) = c + H₁(z) + H₂(z) + … + H_K(z)
    其中 c 是一个常数项(如果分子阶数≥分母阶数),每个 H_i(z) 是一个低阶传递函数(通常对应一对极点)。然后将输入信号同时输入到这些并联的低阶节中,它们的输出信号再相加得到最终输出。

    优点:

    • 改善数值特性: 与级联形类似,可以将高阶滤波器分解为更稳定的低阶部分。
    • 极点独立: 每个并行节实现独立的极点,这在某些理论分析或自适应滤波中可能有用。

    并行形不如级联形常见,但在某些应用中也有使用。

在实际硬件(如DSP芯片、FPGA)或软件(如C/C++, Python, MATLAB)实现时,需要根据选定的结构编写代码,计算每个时刻的输出 y(n),并更新存储过去的输入和输出值(或中间状态变量)。需要特别注意浮点数或定点数运算的精度问题,以及如何处理可能的溢出。

IIR滤波器在哪些地方被广泛应用?

由于其高效率的特点,IIR滤波器在许多需要滤波且对计算资源要求严格的领域得到了广泛应用。

主要应用领域:

  • 音频处理:

    • 音频均衡器 (Equalizers): 图示均衡器和参数均衡器通常使用级联或并联的二阶IIR滤波器节来实现对特定频段的增益或衰减,以调整音色。
    • 音频效果器: 一些音频效果,如简单的混响(通过延迟和反馈实现)、合唱(Chorus)等,其核心结构就包含反馈环路,本质上是IIR。
    • 数字音频工作站 (DAW) 和插件: IIR滤波器广泛用于音频软件中的各种滤波功能。
  • 电信领域:

    • 信道均衡: 在通信接收端使用滤波器来补偿信道引起的失真。
    • 抗混叠滤波器: 在ADC采样前使用模拟滤波器作为抗混叠滤波器,而在DAC输出后可能使用模拟滤波器进行平滑。但在数字信号处理链内部,IIR滤波器也用于各种带限滤波。
    • 调制解调器: 在信号的发送和接收端进行滤波整形。
  • 生物医学信号处理:

    • 生理信号滤波: 处理心电图 (ECG)、脑电图 (EEG)、肌电图 (EMG) 等信号,去除基线漂移、工频干扰(50/60 Hz陷波滤波)或其他噪声。由于这些信号频率范围相对固定且对实时性要求高,IIR滤波器常被选用。
  • 控制系统:

    • 状态空间控制器/观测器: 许多数字控制器和状态观测器的实现涉及到递归计算,可以视为一种IIR系统。
    • 传感器信号滤波: 滤波传感器采集的数据以去除噪声,为控制器提供更平滑的输入。
  • 数据采集与处理:

    • 数据平滑: 对时序数据进行滤波以去除毛刺和高频噪声。
    • 特定频率分量提取或抑制: 如从复杂的信号中提取某个频率范围内的信息,或去除特定频率的干扰。
  • 仪器仪表:

    • 在各种测量仪器中用于信号调理。
  • 语音处理:

    • 在语音识别、语音合成、语音降噪等应用中进行滤波处理。

总的来说,IIR滤波器适用于那些对计算效率有较高要求,且应用本身对非线性相位不太敏感的场景。在需要极陡峭的频率过渡但计算资源有限时,IIR滤波器往往是比相同性能的FIR滤波器更具吸引力的选择。

By admin

发表回复