FIR 滤波器设计:频率采样法

直接在频域“下达指令”的设计艺术 | 解决窗函数法的痛点

1. 为什么要用频率采样法?

频率采样法与窗函数法的设计视角完全相反。窗函数法是在时域“截断”信号,而频率采样法是直接在频域设定“目标点”。

特性 🪟 窗函数法 (Window Method) 📊 频率采样法 (Freq Sampling)
控制方式 间接控制。通过选择窗形状来影响频谱。 直接控制。直接设定特定频率点的值 (0或1)。
主要优点 阻带衰减可以做得非常好 (如 Blackman 窗)。 可以精确控制某些频率点的增益为 0 (完全滤除)。计算简单,无积分。
主要缺点 无法精确控制。例如很难要求 50Hz 处增益正好为 0。 点间失控。采样点之间可能出现剧烈振荡 (逼近误差)。阻带衰减一般较差。

2. 交互实验室:优化“逼近误差”

🎯 实验目标:寻找“软着陆”的过渡点
  • 现象: 当红色柱子从 1 直接跳变到 0 (硬着陆) 时,蓝色曲线在阻带会剧烈波动(旁瓣大,衰减差)。
  • 任务: 试着拖动通带与阻带之间的一个红色柱子,将其值设为 0.5 或 0.4 左右。
  • 观察: 蓝色曲线是不是变得更平滑了?这就是牺牲过渡带宽度,换取更好阻带衰减的权衡。
频域响应
设计目标 H(k) (可拖动)
实际响应 |H(ω)|
时域脉冲响应 h[n]
由 IDFT 计算得出
建议保持奇数 (Type I 线性相位)

3. 综合例题详解

题目: 设计一个 $N=15$ 的线性相位低通滤波器,截止频率 $\omega_c = 0.4\pi$。使用频率采样法,并增加一个过渡点。

步骤 1: 确定频率采样点分布

频率采样间隔 $\Delta\omega = \frac{2\pi}{N}$。对于 $N=15$:

$$ \Delta\omega = \frac{2\pi}{15} \approx 0.133\pi $$ 采样点位置: $\omega_k = k \cdot \frac{2\pi}{15}$

截止频率 $0.4\pi$ 对应的索引 $k \approx 3$。因此我们设定:

  • $k=0, 1, 2$: 通带 ($|H(k)|=1$)
  • $k=3$: 过渡点 (设 $|H(3)|=0.5$,这就是我们在交互图里做的操作)
  • $k=4 \sim 7$: 阻带 ($|H(k)|=0$)
步骤 2: 构造相位与 IDFT

为了得到实数系数 $h[n]$,频域采样必须满足共轭对称性。对于线性相位,需施加相位偏移:

$$ \theta(k) = -k \frac{N-1}{2} \frac{2\pi}{N} = -k \frac{14\pi}{15} $$

利用化简后的 IDFT 公式(仅计算前半部分非零点):

$$ h[n] = \frac{1}{15} \left( 1 + 2\sum_{k=1}^{3} |H(k)| \cos\left( \frac{2\pi k}{15}(n - 7) \right) \right) $$ 代入数值: $$ h[n] = \frac{1}{15} [ 1 + 2(1)\cos(...) + 2(1)\cos(...) + 2(0.5)\cos(...) ] $$

这就是我们在上面代码中计算 h_n 数组的数学依据。