MATLAB 对二阶截面滤波器的缩放数组有什么意义?

信息处理 matlab 无限脉冲响应 双二阶
2022-02-25 04:36:38

我目前正在一个项目中实现不同的过滤器类型(例如 iirs - 直接形式 1、2、转置 1、2 等)。我最近才开始尝试实现二阶部分过滤器。该滤波器由级联双二阶滤波器组成,每个滤波器都实现为转置直接形式 2 级。

实现后,我想验证我的结果是否与 MATLAB 中的结果相匹配。我打开了滤波器设计工具包并生成了一个 8 阶 SOS 滤波器。当我导出这个过滤器时,它会同时导出一个 SOS 矩阵和一个缩放数组 G。

所以我的问题是:为什么 MATLAB 提供这个缩放数组 G?SOS矩阵不应该完全能够自己描述过滤器吗?为什么 MATLAB 决定排除这些收益?

这是否只是 MATLAB 的一种礼貌,以便用户可以“微调”每个滤波器级增益以确定最佳选项?

1个回答

当然,SOS 矩阵能够完整地描述包括增益在内的滤波器。然而,在 Matlab SOS 矩阵中,系数默认都等于(如果没有使用额外的缩放),这是一种“中性”缩放(并且消除了每个二阶部分的一个乘法)。增益因子是描述滤波器所需的总增益,除了按比例缩放的 SOS 矩阵。b01G

请注意,对于定点实现,每个二阶部分都应单独缩放。这可以在考虑不同目标的情况下完成,例如,最小化溢出概率,或最小化量化噪声。