在 dsPIC 33EP 中实现 IIR 滤波器 - 缩放

信息处理 无限脉冲响应 嵌入式系统 缩放
2022-02-07 05:22:37

我必须在 dsPIC 33EP(16 位、定点、二进制补码、环绕、40 位累加器、32 位乘法、12 位 ADC)中实现 IIR 控制器,并且我使用的是级联、直接形式 I二阶部分(向上排序)。

现在,我在缩放过程中遇到了麻烦,因为我读了很多关于L2-规范,但不能完全弄清楚如何正确应用它。

当我使用 MATLAB 获得 sos 矩阵和增益时(通过使用tf2sosfdatoolfilterbuilder)使用L2范数,所有中间部分的增益值始终为 1。

  • 它是否正确?
  • 还是我需要缩放每个部分的输入?

(我没有实施 IIR 系统的经验,您的帮助意义重大。)

1个回答

tf2sos函数采用顺序输入过滤器 N, 由H(z)=iNbiziiNaizi并返回系数N/2二阶滤波器Hk(z)=bk0+bk1z1+bk2z2ak0+ak1z1+ak2z2然后再次g这样

H(z)=gkHk(z)

因此,无论您希望函数进行何种规范化(无、inf 或两个),上述内容始终成立。所以回答你的问题:

  • 每个滤波器部分的增益是不同的(即不一定是一个)。(但是,你不在乎)
  • 您不需要调整滤波器级之间的增益。第一阶段出来的直接送到第二阶段。然后,在处理完所有阶段之后,将最后阶段的结果乘以g,你从tf2sos函数中得到什么。