2. 梳状滤波的数学模型:传递函数推导、零极点分析、频率响应特性
好,咱们进入正题。梳状滤波的数学模型,说白了就是搞清楚“延迟+叠加”这个操作到底对声音干了什么。我个人习惯,先看传递函数,再看零极点,最后看频率响应。这三步走下来,你就能从根儿上理解梳状滤波。
2.1 传递函数推导:从时域到频域
先回忆一下,梳状滤波器的时域表达式:
y[n] = x[n] + α · x[n - D]
这里 D 是延迟样本点数,α 是反馈或前馈系数。我当年第一次看到这个式子,心想这不就是个回声嘛。没错,但它的频域表现可没那么简单。
我们对两边做 Z 变换。记住,Z 变换里延迟 D 个样本就是乘上 z-D:
Y(z) = X(z) + α · z-D · X(z)
整理一下,得到传递函数:
H(z) = Y(z) / X(z) = 1 + α · z-D
这就是前馈梳状滤波器的传递函数。简洁吧?但别小看它,里面藏着所有秘密。
核心公式: H(z) = 1 + α · z-D
其中 α 是增益系数(通常 |α| ≤ 1),D 是延迟样本数。
如果是反馈型梳状滤波器,也就是把延迟后的信号再反馈回输入端,那公式会变成:
y[n] = x[n] + α · y[n - D]
Z 变换后:
Y(z) = X(z) + α · z-D · Y(z)
H(z) = 1 / (1 - α · z-D)
嗯,这里要注意,反馈型的传递函数是分式,意味着它可能有极点。前馈型只有零点。这个区别在实际应用中非常关键。
2.2 零极点分析:梳子的“齿”是怎么来的
咱们先看前馈型。令 H(z) = 0,解出零点:
1 + α · z-D = 0
zD = -α
所以零点在 z 平面上的位置是:
zk = |α|1/D · ej(π + 2πk)/D, k = 0, 1, ..., D-1
你会发现,D 个零点均匀分布在单位圆附近的一个圆上。它们之间的角度间隔是 2π/D。这就是梳状滤波器“梳齿”的由来——每个零点对应一个频率的完全抵消。
我做过一个项目,用梳状滤波器消除房间里的驻波。当时我算错了延迟长度,结果零点位置全偏了,该消的没消掉,不该消的反而消了。后来我画了个零极点图,一眼就看出问题——零点没对准目标频率。
反馈型的情况正好相反。它的极点在:
1 - α · z-D = 0
zD = α
zk = |α|1/D · ej2πk/D, k = 0, 1, ..., D-1
极点也在单位圆附近,但角度位置和零点错开了 π/D。这意味着反馈型会在某些频率产生谐振,而不是抵消。
个人经验: 前馈型适合做“陷波”,反馈型适合做“共振”。你在做音频效果器时,想消除某个频率就用前馈,想增强某个频率就用反馈。
2.3 频率响应特性:梳子长什么样
把 z = ejω 代入传递函数,就能得到频率响应。前馈型:
H(ejω) = 1 + α · e-jωD
幅频响应:
|H(ejω)| = √(1 + α² + 2α · cos(ωD))
你看,这是个余弦函数的形式。当 cos(ωD) = -1 时,幅度最小;当 cos(ωD) = 1 时,幅度最大。最小值和最大值分别是:
|H|min = |1 - α|
|H|max = 1 + α
当 α = 1 时,最小值是 0,也就是完全抵消。这就是为什么你在混音时,如果延迟和干声等比例叠加,某些频率会完全消失。
反馈型的幅频响应:
|H(ejω)| = 1 / √(1 + α² - 2α · cos(ωD))
当 cos(ωD) = 1 时,分母最小,幅度最大,产生谐振峰。α 越接近 1,谐振峰越尖锐。
| 参数 | 前馈型 | 反馈型 |
|---|---|---|
| 传递函数 | 1 + α·z-D | 1 / (1 - α·z-D) |
| 零/极点 | D 个零点 | D 个极点 |
| 幅频特性 | 余弦型,有谷 | 余弦型倒数,有峰 |
| 典型应用 | 陷波、去混响 | 谐振、镶边 |
避坑指南: 我曾经在做一个语音去混响算法时,把 α 设成了 0.99,结果梳状滤波的谷太深,把语音的基频都削没了。后来我改成 0.7 左右,效果就好多了。α 不是越大越好,要根据实际听感调整。
2.4 知识体系总览
下面这张图把梳状滤波的数学模型串起来了。从时域到频域,从传递函数到零极点,再到频率响应,每一步都有对应的物理意义。
你看,从时域到频域,从传递函数到零极点,再到频率响应,每一步都有清晰的数学推导。我个人觉得,理解了这个体系,你就能灵活运用梳状滤波器,而不是死记硬背公式。
最后说一句,实际调试时,我习惯先用 MATLAB 或 Python 画出零极点图和频率响应曲线,看看梳齿的位置对不对,再调整参数。这样比盲听效率高得多。
总结一下:
- 前馈型:H(z) = 1 + α·z-D,有 D 个零点,产生陷波
- 反馈型:H(z) = 1 / (1 - α·z-D),有 D 个极点,产生谐振
- 频率响应呈周期性,周期为 fs/D
- α 控制梳齿深度/高度,D 控制梳齿间距