了解二阶部分的排列

信息处理 matlab 离散信号 过滤器设计 无限脉冲响应 零极点
2022-01-30 08:22:32

在将高阶递归滤波器拆分为更方便的二阶部分(双二阶)时,在 matlab 中,我们通常使用zp2sos来转换。在文档中,有几行,我在下面引用,

[sos,g] = zp2sos(z,p,k,''order') 指定sos中行的顺序,其中'order'是

'down',对部分进行排序,使第一行 sos 包含最接近单位圆的极点

'up',对部分进行排序,使 sos 的第一行包含离单位圆最远的极点(默认)

在这里,我不记得我读过一些与根据极点位置安排双二阶相关的内容。

现在谁能解释一下,为什么我们要在级联时以特定方式排列双二阶?

正如Matlab文件所说,这种安排是为了处理离单位圆更近或更远的极点?

在订购双二阶以获得更高阶滤波器时需要考虑哪些细节。

通过使用一些案例研究来说明会非常好,例如,设计 A 加权滤波器(8 阶 IIR),并将其转换为双二阶,并以正在讨论的特定方式排列它们。

提前致谢。

2个回答

二阶块的不同排序在量化噪声和溢出方面具有不同的行为。通常最好在二阶块中避免非常尖锐的传递函数,因为这些峰值可能会导致溢出和量化噪声放大。这就是为什么将彼此靠近的极点和零点配对很常见,因此零点抵消了由极点引起的部分峰值。零极配对决定了二阶部分,但不决定它们的顺序。关于阶数,总是有一个最小化量化噪声的最佳选择,但这个阶数需要针对所考虑的滤波器单独确定。但是,在大多数情况下,有两种排序方式效果很好。根据执行缩放的方式,最好对具有增加或减小极半径的部分进行排序。在 Matlab 中,这两种常见的排序方式分别称为“向上”和“向下”。看一下本文档了解更多详细信息。

这是一个示例,您可以使用它来获得您所寻求的更好的直觉。即设计一些不同的过滤器并破解 zp2sos 方法(它不是 MATLAB 端口,尽管名称如此)以不同的方式创建双二阶部分。自述文件中引用了其他一些可能感兴趣的过滤器设计代码库:

https://github.com/ruohoruotsi/Butterworth-Filter-Design