假设我们使用 matlab 函数“ellip”创建了一个 IIR 滤波器,然后我们想使用以下方法量化系数:
我读过有 4 种主要的舍入类型:
- 截短
- 圆形的
- 收敛舍入
- 舍入到零
它们之间有什么区别,我怎么知道最好选择哪种方法?
假设我们使用 matlab 函数“ellip”创建了一个 IIR 滤波器,然后我们想使用以下方法量化系数:
我读过有 4 种主要的舍入类型:
它们之间有什么区别,我怎么知道最好选择哪种方法?
各种舍入方法具有计算与量化误差的权衡。
截短
截断是最简单的方法。小数点后的所有内容都被简单地删除。例如,2.1 和 2.9 都变成 2。这很简单,但在量化误差方面是最差的方法。这尤其糟糕,因为当您处理非负数时,它会引入强烈的负偏差。在某些可能很糟糕的算法中。
舍入/收敛舍入
简单地说“圆形”并不足以告诉您了解其含义。什么样的圆角?人们在说“圆形”时通常指的是收敛四舍五入,所以我假设这就是意思。
当小数位为时,收敛舍入向下舍入并在小数位为时四舍五入. 问题仍然存在 - 当你有确切的? 一些舍入算法总是向下舍入(这称为“舍入为零”),但这会引入非常少量的偏差。收敛舍入试图通过舍入到最接近的偶数来消除偏差,假设大约一半的时间会上升,一半的时间会下降。
就量化噪声而言,这是最好的算法,但计算量最大。但是,在许多情况下,您并不关心计算强度有多大,因为计算不是在运行时完成的。
舍入到零
如前所述,四舍五入与收敛舍入相同,只是当小数部分为. 这是截断(易于计算)和收敛舍入(低量化误差)之间的折衷。
不同类型的舍入:
通常截断是最差的,但也是最便宜的;舍入可最大限度地减少整体噪声,舍入到零可最大限度地提高稳定性并最大限度地减少极限环。然而,这只适用于信号转换,例如 IIR 滤波器。
系数量化更复杂。首先,您需要定义您最关心的内容:幅度响应、相位响应、频率中是否有任何“无关”区域等。通常最好尝试所有可能的组合,然后根据以下条件选择最佳组合a 预定义了一些错误标准。在极端情况下(极点非常接近单位圆),量化可以将极点踢出单位圆,并且滤波器变得不稳定。
量化还需要考虑滤波器拓扑。通常,此滤波器被分解为双二阶,双二阶的具体实现将影响系数表示和对量化的敏感性。
如果有疑问,请尝试所有这些,这就是计算机所擅长的。