二阶数字滤波器
低通、高通、带通、陷波的系数与 C 实现。
正在准备工具…
f0 与 Q
低通、高通在 时为 Butterworth 响应, 是 点。Q 增大,过渡区峰值升高。带通的中心增益为 ;陷波中心为 。
系数采用 Audio EQ Cookbook 的 RBJ 公式, 为数字频率,范围 。
系数与实现
归一化 。浮点版使用转置直接 II 型(DF2T),Q 定点版使用直接 I 型(DFI)。反馈项为 -a1*y、-a2*y;接入加反馈形式的库时,、 取反。
float、double、Q 定点可选,曲线与代码使用相同精度的系数。低频、高 Q 和深陷波对系数精度更敏感。
定点版逐项舍入乘积,以 int64_t 累加,最后饱和为 16 / 32 位样本;四个历史样本保持相同格式。系数量化后检查极点稳定性与通带增益。 可能接近 ,此时 / 装不下,可选 / ,或减少小数位换取幅值余量。
定点导出共用 fl_q.h,完整源码、下载和编译示例见Q定点数C库。频响表示量化后的线性模型;饱和及极限环用时域模拟检查。
C 接口
每通道一个 Filter,以 fs 调用 filter_step()。filter_reset(&state, 0) 从零开始;传入首个样本值则初始化到对应直流稳态。
头文件实现单个二阶节。多节级联时,各节独立保存系数和状态。本站 EMA、滑动平均与 Biquad 使用同名 API,分别选用。