默认情况(复位状态)下,双二阶滤波器配置为全通滤波器。在这种情况下,滤波器系数(如方程式 3 中所述)具有以下值:
- N0 = 231 (b0 = 1)
- N1、N2、D1、D2 = 0(b1、b2、a1、a2 = 0)
请按照以下步骤,使用 MATLAB® 等数字滤波器设计套件生成 IIR 双二阶系数:
- 使用滤波器设计函数(如 MATLAB butter 函数)计算系数 [b0、b1、b2、a0、a1、a2],以便设计系统运行频率为 48kHz、截止频率为 1kHz 的巴特沃斯滤波器。请注意,将 MATLAB 系数归一化后,a0 = 1。
[b, a] = butter( 2, 1000 / (48000/2) )
- 将这些系数转换为 [N0、N1、N2、D1、D2],如下所示:
- N0 = b0
- N1 = b1/2
- N2 = b2
- D1 = -a1/2
- D2 = -a2
- 通过乘以 231,将系数转换为 Q31。
- 四舍五入到最接近的整数,并转换为 32 位二进制补码十六进制格式:
- 正整数转换为十六进制格式
- 对于负整数,先取系数的绝对值,再转换为二进制,取反,加一,然后转换为十六进制。例如,要以 32 位二进制补码十六进制格式表示 -135:
- -135 的绝对值用二进制表示为 0000 0000 0000 0000 0000 0000 1000 0111(用十六进制表示为 0x00000087)。
- 二进制取反的结果用二进制表示为 1111 1111 1111 1111 1111 1111 0111 1000(用十六进制表示为 0xFFFFFF78)。
- 向其添加 1 后的结果用二进制表示为 1111 1111 1111 1111 1111 1111 0111 1001(用十六进制表示为 0xFFFFFF79)。因此,-135 的 32 位二进制补码十六进制表示形式为 0xFFFFFF79。