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 你都能一眼看穿它的角色。