系数量化中的舍入类型

信息处理 过滤器 过滤器设计
2022-02-10 19:21:47

假设我们使用 matlab 函数“ellip”创建了一个 IIR 滤波器,然后我们想使用以下方法量化系数:

bq=Quantize(round,b,28);aq=Quantize(round,a,28);

我读过有 4 种主要的舍入类型:

  • 截短
  • 圆形的
  • 收敛舍入
  • 舍入到零

它们之间有什么区别,我怎么知道最好选择哪种方法?

2个回答

各种舍入方法具有计算与量化误差的权衡。

截短

截断是最简单的方法。小数点后的所有内容都被简单地删除。例如,2.1 和 2.9 都变成 2。这很简单,但在量化误差方面是最差的方法。这尤其糟糕,因为当您处理非负数时,它会引入强烈的负偏差。在某些可能很糟糕的算法中。

舍入/收敛舍入

简单地说“圆形”并不足以告诉您了解其含义。什么样的圆角?人们在说“圆形”时通常指的是收敛四舍五入,所以我假设这就是意思。

当小数位为时,收敛舍入向下舍入.4999¯并在小数位为时四舍五入.5000¯1. 问题仍然存在 - 当你有确切的.5? 一些舍入算法总是向下舍入(这称为“舍入为零”),但这会引入非常少量的偏差。收敛舍入试图通过舍入到最接近的偶数来消除偏差,假设大约一半的时间会上升,一半的时间会下降。

就量化噪声而言,这是最好的算法,但计算量最大。但是,在许多情况下,您并不关心计算强度有多大,因为计算不是在运行时完成的。

舍入到零

如前所述,四舍五入与收敛舍入相同,只是当小数部分为.5. 这是截断(易于计算)和收敛舍入(低量化误差)之间的折衷。

不同类型的舍入:

  1. truncate:选择比实际数字更小的最接近的整数,也称为“向 -infinity 舍入”。这是许多编译器的默认设置,因为它最容易在硬件中实现。
  2. round:选择最接近的整数。这最大限度地减少了整体噪声能量。
  3. 四舍五入:选择幅度较小的最接近的整数。示例 1.8->1,-1.8->-1
  4. 收敛舍入:与“舍入”非常相似,只是精确一半(2.5、-4.5 等)的方式不同以避免舍入偏差。实际差异很小,所以我们忽略它

通常截断是最差的,但也是最便宜的;舍入可最大限度地减少整体噪声,舍入到零可最大限度地提高稳定性并最大限度地减少极限环。然而,这只适用于信号转换,例如 IIR 滤波器。

系数量化更复杂。首先,您需要定义您最关心的内容:幅度响应、相位响应、频率中是否有任何“无关”区域等。通常最好尝试所有可能的组合,然后根据以下条件选择最佳组合a 预定义了一些错误标准。在极端情况下(极点非常接近单位圆),量化可以将极点踢出单位圆,并且滤波器变得不稳定。

量化还需要考虑滤波器拓扑。通常,此滤波器被分解为双二阶,双二阶的具体实现将影响系数表示和对量化的敏感性。

如果有疑问,请尝试所有这些,这就是计算机所擅长的。