Low pass filter example by gnuradio

一句话:低通滤波器只让低频过、把高频衰减掉——但”衰减”不是一刀切,而是在截止频率附近平滑地滑下去。

一、背景:为什么第一个滤波器是低通

低通滤波器是信号处理里最基础的积木:通低频、阻高频。无论是抗混叠、限带宽还是去除高频噪声,都少不了它。

这篇文章用一个最小例子把它讲透:搭出流图 → 看频率响应 → 算清楚截止频率、过渡带宽、阻带衰减到底是怎么回事。

二、原理:滤波器的三个区

先建立一个心智模型。一个低通滤波器的幅频响应可以分成三段:

  • 通带:从 0 到截止频率,信号几乎无损通过;
  • 过渡带:从截止频率到阻带起始频率,幅度快速下降(注意:不是瞬间归零);
  • 阻带:阻带起始频率以上,信号被大幅衰减抑制,通常要求 ≤ −60 dB。

所以低通滤波器不是”一刀切”,而是在截止频率附近平滑衰减——这正是 FIR 滤波器的特征。

三、动手:复现步骤

1. 需要的 block

  • Signal Source(信号源)
  • Low Pass Filter(低通滤波器)
  • Throttle(限速)
  • QT GUI Frequency Sink(看频谱)
  • QT GUI Range(频率滑块)

2. 连接

按下图连接:

just like this

3. 参数设置

QT GUI Range

  • id:frequency
  • Default Value:0
  • Start:-samp_rate/2
  • Stop:samp_rate/2

Signal Source

  • Frequency:frequency

Low Pass Filter

  • Cutoff Freq:samp_rate/4
  • Transition Width:samp_rate/8

为什么这么填?samp_rate = 32k,所以 samp_rate/4 = 8k(截止频率),samp_rate/8 = 4k(过渡带宽)。这样 8 kHz 以下通过,8 kHz 以上开始衰减。

4. 运行验证

运行后拖动频率滑块:frequency 就是正弦波本身的频率,你可以直接看到波形在通带/过渡带/阻带里的变化。

四、深入:算一遍过渡带

光看不够,我们来算。已知:

  • 采样率
  • 截止频率
  • 过渡带宽
  • 阻带起始频率
  • 阻带衰减典型值
  • 截止处衰减

过渡带内的幅度近似按线性衰减:

含义很直白:

  • 从截止频率处的 −3 dB 出发;
  • 随频率线性增加衰减量;
  • 到阻带起点()时刚好达到 −60 dB。

实际数值会有出入:因为你代入计算时会发现和实测差得比较多,原因是 GNURadio 的低通滤波器用的是真实的 FIR 频率响应,还叠加了窗函数的影响。上面这个线性公式只是”教科书近似”,用来建立直觉,不是精确解。

五、常见坑与边界

  • 过渡带越窄,滤波器阶数越高。过渡带宽从 4 kHz 缩到 1 kHz,需要的抽头数会成倍增加,计算量随之暴涨——窄过渡带是有代价的。
  • 截止频率不能超过奈奎斯特频率()。填到 samp_rate/2 以上没有意义。
  • 别指望”瞬间归零”。截止频率附近一定是平滑滚降的,这是 FIR 滤波器的物理特性。
  • 窗函数会影响实际衰减。想逼近理论上的 −60 dB,得配合合适的窗函数和足够多的抽头。

六、结论

低通滤波器 = 通带 + 过渡带 + 阻带三段式。设计时你在做的其实是一个取舍:过渡带越窄、衰减越陡,需要的抽头就越多、计算量就越大。理解了这一点,后面所有滤波器设计(包括 Taps)都是在这个取舍里做选择。