具有量化(定点)系数的高通滤波器

信息处理 matlab 过滤器 数字滤波器 固定点
2022-02-19 01:16:40

我有一个带分子的高通 IIR 滤波器

b = [0.997688673703782,-1.995377347407564,0.997688673703782];

和分母

a = [1,-1.995372005171182,0.995382689643947];

频率响应似乎还可以fvtool(b, a)但是,在将系数转换为定点数后,响应会发生很大变化

bb = round(b * 32768) / 32768;
aa = round(a * 32768) / 32768;

频率响应如下

在此处输入图像描述

如何设计具有特定低频响应的定点数字滤波器?例如,具有所需截止归一化频率的高通滤波器。谢谢!

2个回答

您的设计的一个问题是量化的分子系数不再加起来为零,因此您在 DC 处失去了所需的陷波。这可以通过不同的方式完成,因为即使使用量化系数,您也可以在 DC 处获得(双)零。只需确保b[0]=b[2]b[1]=2b[0]

真正的问题是分母多项式。众所周知,量化多项式系数得到的可用极点位置在低频时非常稀疏。

请注意,理想系数的最大幅度接近,因此为了将位,您需要按而不是进行缩放。这将导致量化整数系数的正确值范围:216214215

bb = 圆形( b * 2^14 ) * 2^(-14);
aa = 圆形(a * 2^14)* 2^(-14);

得到的量化分子系数保证了 DC 处的双零。然而,量化的分母系数产生两个实值极点,其中一个在单位圆上。即,有一个零极点抵消,你最终得到一个一阶滤波器。

因此,您可以选择使用一阶滤波器而不是二阶滤波器。在这种情况下,分子系数是微不足道的:

b1 = [1,-1];

可以使用接近(但幅度小于)的某个负值通过实验选择分母系数。当然,该值必须可以使用位表示:116

a1 = [1, 圆形(-r * 2^(15)) * 2^(-15)];

下图显示了理想二阶滤波器(蓝色)和的量化一阶滤波器的频率响应。您必须自己判断与理想响应的偏差对于您的应用程序是否可以容忍。r=0.998

在此处输入图像描述

另一种解决方案是使用对系数量化(至少在低频下)更鲁棒的不同滤波器结构。这种结构是耦合形式的结构,在大多数关于 DSP 的教科书中都有描述(例如,在 Oppenheim 的离散时间信号处理中)。

该滤波器相当于 24 Hz @ 44.1 kHz 的截止频率。这意味着您的极点非常接近单位圆,因此您需要比 16 位更高的数值精度。

您需要更高的分辨率:即使是 24 位也无法满足如此低的截止频率,但 32 位应该可以做得很好。这也取决于您的要求:您可以容忍多少噪音以及您需要的最小衰减是多少?

定点处理在数学上非常具有挑战性,尤其是当极点接近单位圆时。它需要对每个滤波器级进行详细的数值分析,并仔细管理开销、级排序、状态变量缩放、削波、舍入、本底噪声等。