FIR 滤波器设计 返回
数字信号处理模拟器

FIR 滤波器设计模拟器 — 窗函数法

将理想 sinc 冲激响应乘以 Hamming、Blackman 等窗函数,设计线性相位 FIR 低通滤波器。调整抽头数与截止频率,即可实时查看冲激响应与 dB 标度的幅频响应。

参数
截止频率 f_c
Hz
采样频率 f_s
Hz
滤波器阶数 M
窗函数
计算结果
抽头数 N
过渡带宽 Δf
阻带衰减
群延迟 τ_d
冲激响应 h[n] 与窗函数
幅频响应 |H(f)| [dB]
理论与主要公式

理想低通的冲激响应 (sinc) 与窗函数相乘得到 FIR 系数:

$$h_d[n] = \dfrac{2 f_c}{f_s}\,\mathrm{sinc}\!\left(\dfrac{2 f_c}{f_s}\left(n - \dfrac{M}{2}\right)\right),\quad h[n] = h_d[n]\,w[n]$$

抽头数、过渡带宽与群延迟:

$$N = M+1,\quad \Delta f \approx \dfrac{A \, f_s}{M},\quad \tau_d = \dfrac{M}{2 f_s}$$

$A$ 取决于窗函数 (Rectangular 0.9, Hann 3.1, Hamming 3.3, Blackman 5.5)。阻带衰减典型值: Rectangular -21 dB, Hann -44 dB, Hamming -53 dB, Blackman -74 dB。

FIR 滤波器设计 (窗函数法) 是什么

🙋
老师, FIR 滤波器为什么一定要乘上"窗函数"? 直接用 sinc 不行吗?
🎓
好问题。理想"矩形"频率响应的逆 DFT 在时域是无穷长 sinc, 没法直接做成 FIR。所以必须截断, 但端点的突变会引入 Gibbs 现象, 通带和阻带都会出现波纹。乘上两端平滑趋于 0 的窗函数, 等于让截断"软化", 从而抑制波纹。
🙋
原来如此! 那 Hamming、Blackman 等不同的窗, 其实是不同的"平滑方式"?
🎓
没错。矩形窗 (不平滑) 阻带衰减只有 -21 dB; Hamming 把两端压到 0.08, 阻带可达 -53 dB; Blackman 再加一项余弦, 达到 -74 dB。但阻带越深, 过渡带宽就越宽——这就是窗函数法的根本权衡。
🙋
那只要不断增加抽头数, 是不是又陡峭又深?
🎓
过渡带宽与 1/M 成反比, 但群延迟 τ_d = M/(2·f_s) 也成正比增长。实时控制和音频里, 应先根据可接受的延迟确定 M, 而不是单看陡峭度。拉动滑块, 同时观察两者的变化。
🙋
实际工程中, FIR 一般用在哪里?
🎓
凡是要求线性相位的场合都倾向 FIR: 心电、脑电的处理, 数字音频分频, 无线通信的匹配滤波, 图像边缘增强等。只要相位失真会影响波形或感知, FIR 几乎是默认选择。

物理模型与主要公式

理想"砖墙"低通 $H_d(f) = 1$ (|f|≤f_c), $0$ (其它) 经逆 DTFT 得到无穷长的 sinc 函数。

$$h_d[n] = \dfrac{2 f_c}{f_s}\,\mathrm{sinc}\!\left(\dfrac{2 f_c}{f_s}\left(n - \dfrac{M}{2}\right)\right)$$

截断到 $0 \le n \le M$, 再乘以窗 $w[n]$, 即得 FIR 系数 $h[n] = h_d[n]\,w[n]$。Hamming 窗为

$$w_{\rm Hamming}[n] = 0.54 - 0.46\cos\!\left(\dfrac{2\pi n}{M}\right),\quad 0 \le n \le M$$

过渡带宽 $\Delta f \approx A\,f_s/M$, 其中 $A$ 由窗决定 (Hamming 时 $A \approx 3.3$)。系数对称 $h[n] = h[M-n]$ 保证严格线性相位, 群延迟为常数 $\tau_d = M/(2 f_s)$。

实际应用

数字音频: 扬声器线性相位 FIR 分频器、DAC 过采样链中的镜频抑制滤波器, 能在不破坏瞬态与声场的前提下保留全频段细节。

无线脉冲整形: RRC 根升余弦 FIR 滤波器在发射端与接收端配对, 抑制 ISI 并作为匹配滤波器使用, 是 PSK / QAM 通信链的核心环节。

传感与生物医学: 心电、脑电、惯性测量等场景, 在抗混叠后用 FIR 低通提取低频, 同时不破坏峰形, 这对诊断与特征提取尤为重要。

图像处理: 高斯模糊、锐化与方向边缘检测都是二维 FIR。可分离核能将二维 FIR 拆为两次一维 FIR, 大幅降低计算量。

常见误区与注意事项

误区 1: 选个好窗就能满足任意指标。 窗函数法的阻带衰减几乎由窗决定 (Hamming 约 -53 dB), 无法独立设定。严格指标应使用等纹波设计 (Parks-McClellan / Remez)。

误区 2: 抽头数翻倍, 陡峭度也翻倍。 Δf 按 1/M 缩窄, 但群延迟 τ_d = M/(2·f_s) 与 M 成正比增长。延迟受限时应用 Parks-McClellan 或改用 IIR 来最小化 M。

误区 3: FIR 总比 IIR 更慢。 同样规格下系数确实更多, 但对称结构可减半乘法, 长滤波器还可用 FFT 卷积达到 O(N log N)。SIMD 与 GPU 都更适合 FIR。

常见问答

M 取偶数 (从而 N = M+1 为奇数) 时存在中心抽头, DC 增益稳定, 适合低通。Type-II FIR (M 奇数) 在 f_s/2 处必为 0, 适合高通而不适合低通。一般默认选偶数 M。
最直接是增大 M (同时延迟也按比例增加)。同 M 下可改用 Kaiser 窗调节 β, 或采用 Parks-McClellan / Remez 等纹波算法, 同时满足阻带衰减与 Δf 指标。
直接型 FIR 每输出一样本需 (M+1) 次乘加, 利用对称可减半。长滤波器可用 overlap-add 或 overlap-save 进行 FFT 卷积, 复杂度降至 O(N log N), 与 SIMD / DSP MAC 阵列契合。
可以。高通 = 全通 - 低通; 带通 = 两个理想低通 h_d[n] 的差; 带阻 = 全通 - 带通。构造好 h_d[n] 后乘以同一窗函数即可。