平行形式的过滤器设计

信息处理 matlab 过滤器设计 数字滤波器
2022-02-22 13:50:19

我有一个传递函数系数如下: [b,a] = ellip(4,.2,40,[.41 .47]);

我想将此系统纳入其 PFE,使用[r,p,k] = residue(b,a). 然后,我想实现一个过滤器,它使用二阶子部分的并行组合。为此,我需要将每个复极点与其复共轭组合,以便整个二阶子部分具有实值系数。因此; 我选择了四对一阶项,并使用“残差”函数将它们重新组合成二阶小节。如何将生成的二阶子部分的系数存储在矩阵 c 和 d 中,以便每一行对应一个二阶系统?

我试图这样做,但我不知道它是否正确?

[c1 d1]=residue([r(1) r(2)],[p(1) p(2)],0);
[c2 d2]=residue([r(3) r(4)],[p(3) p(4)],0);
[c3 d3]=residue([r(5) r(6)],[p(5) p(6)],0);
[c4 d4]=residue([r(7) r(8)],[p(7) p(8)],k);

[c d]=[c1 c2 c3 c4 d1 d2 d3 d4]

有人可以给我一个想法吗?任何帮助,将不胜感激

1个回答

先说几点

  1. 由于您使用的是数字滤波器,因此您应该使用残基z() 而不是残基()
  2. Matlab的residualz()实现得不是特别好:在高阶或陡峭滤波器的情况下,你会得到很多数字噪声或完全错误的结果。始终根据您的原始目标检查结果。

回到这个问题:每个残基都以共轭复数对的形式出现(至少如果你很幸运并且不必处理实数极点或多极点)。只需添加这些即可形成一个真正的二阶部分。

H(z)=r1pz1+r1pz1
=r(1pz1)+r(1pz1)(1pz1)(1pz1)

=(r+r)(rp+rp)z11(p+p)z1+ppz2

最后一个等式直接为您提供了实值双二阶系数(如果我做的数学正确的话)。