Designing Filter Taps by GNURadio

一句话:Low-Pass Filter Taps 只算”系数”,不处理信号;要真正滤波,还得把它塞进一个 FIR 滤波器 block 里。

一、背景:为什么会有”Taps”这种东西

上一篇文章用了 Low Pass Filter,它开箱即用——填好截止频率就能输出信号。

但有时候我们想复用同一组滤波系数(比如把它用在别的滤波器结构里),或者想同时做频移和滤波。这时候 Low Pass Filter 就不够灵活了,于是 GNURadio 把”算系数”这一步单独拆了出来,就是 Low-Pass Filter Taps。

二、原理:算系数 vs 做滤波

这是本文的核心,也是新手最容易混淆的地方:

  • Low Pass Filter:一个完整的 FIR 滤波器。内部自己算系数、自己做信号处理,输出端直接就能拿到滤波后的信号。
  • Low-Pass Filter Taps:只做一件事——根据采样率、截止频率、过渡带宽、窗函数等参数,计算并输出一组 FIR 抽头系数(Taps)。它不做任何信号处理。

所以:Low-Pass Filter Taps 不能单独工作,它必须借助一个真正的滤波 block 才能发挥作用。本文用的就是 Frequency Xlating FIR Filter。

三、动手:复现步骤

本节依赖低通滤波器设计的基础,可回看上一篇《Low pass filter example》。

1. 替换滤波器

把上一篇的 Low Pass Filter 换成 Frequency Xlating FIR Filter,再拖出一个 Low-Pass Filter Taps block。

2. 配置 Low-Pass Filter Taps

双击打开设置:

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

3. 把 Taps 接到滤波器上

双击 Frequency Xlating FIR Filter,把它的 Taps 设置为 lowPassTaps。

这就是”算系数”和”用系数”的对接点:Taps block 算出系数,滤波器 block 拿系数去做实际的卷积运算。

配置完成后即可运行。

四、常见坑与边界

  • Taps 不能单独运行。它没有输出信号,只有一个”系数输出端口”,必须接到滤波器 block 的 Taps 参数上。
  • Frequency Xlating FIR Filter 不只是滤波器。它还能在滤波的同时做频移(通过 Center Frequency 参数),所以它的能力比单纯的 Low Pass Filter 更强。
  • 参数含义要看清楚:Taps block 里的 Cutoff Freq、Transition Width 都是按采样率换算的,和上一篇一致,填错会导致滤波效果不对。
  • 改采样率时要同步改 Taps 参数。系数是按当前采样率算的,采样率一变,同一组系数对应的实际截止频率也就变了。

五、结论

记住一句话:Low-Pass Filter Taps 是”造系数”的,Frequency Xlating FIR Filter 是”用系数”的。 前者输出的是 FIR 抽头,后者拿抽头做真正的滤波(还顺便能频移)。理解了这一层,GNURadio 里所有 xxx Taps 类 block 你都能一眼看穿它的角色。