IIR 滤波器:检查极限循环振荡

信息处理 无限脉冲响应
2022-02-02 23:58:54

所以我正在研究 IIR 滤波器,并开始阅读 IIR 滤波器中的极限循环振荡。据我了解,这是两种类型的振荡

  • 粒度限制周期:当信号电平在一段时间内变得非常低或恒定时,滤波器可以锁定到不稳定模式并产生低电平输出振荡。这是由量化误差引起的。

  • 溢出限制周期:由于溢出,可能会出现振荡(与最大信号范围一样大)。

现在我的问题是。知道 IIR 滤波器的传递函数有什么方法可以预测知道我的滤波器的系数是否会发生这种错误。我的猜测是这与分母系数有关,因为这种行为不包括 IIR 滤波器而不是 FIR 滤波器。有人可以帮帮我吗?谢谢!

1个回答

粒度限制循环:

正确的。然而,极限环只发生在定点处理中。这不是浮点处理的实际问题。

溢出限制周期:

让我们暂时忽略这些。如果你有溢出,你无论如何都需要修复它们,限制周期与否。

知道我的过滤器的系数后,有什么方法可以预测是否会发生此错误

是和不是。限制循环很大程度上取决于过滤器的确切实现。最重要的是滤波器的拓扑结构(直接形式 I、转置形式 I 等)、状态变量、系数和数据的位深度,最重要的是实现舍入的确切方式。假设您将两个有符号的 8 位数字相乘。结果有 15 位,因此您需要丢弃 7 位才能将结果再次存储在 8 位位置。这通常称为“四舍五入”。

实现舍入的方法数量惊人。有关完整概述,请参阅https://en.wikipedia.org/wiki/Rounding

最常见的是

  1. “地板”的截断:只丢弃低 7 位。选择下一个较小的数字。这是许多编程语言中的“默认”行为。
  2. 最近邻:四舍五入到最近的数字
  3. 零偏差的最近邻居:请参阅 Wikipedia,这有点复杂。
  4. 向零舍入:始终确保舍入数字的大小小于实际数字。

“向零舍入”保证消除极限循环。然而,它也会产生比“最近邻”选项多 6 dB 的量化噪声。所以这是一个权衡。

极限循环是滤波器的精确实现加上滤波器系数和(在较小的范围内)输入信号的组合。仅滤波器系数不足以预测极限环,您还需要对您的实现进行精确的模拟。