订单量高时的 IIR 问题

信息处理 过滤器 过滤器设计 信号分析 无限脉冲响应
2022-02-10 07:16:57

感谢所有在这里帮助我的人,我终于实现了一个陷波滤波器(*),其系数由: http://www-users.cs.york.ac.uk/~fisher/mkfilter/trad 给出。 html

当我做order=2(极数=4,根据本网站)时,一切都很好:

y[n] = a0*x[n-4] + a1*x[n-3] + a2*x[n-2] + a3*x[n-1] + a4*x[n] 
       + b0*y[n-4] + b1*y[n-3] + b2*y[n-2] + b3*y[n-1]

伟大的!

当我尝试增加阶数时(例如:阶数 = 4 甚至阶数 = 3 => 极数 = 6),则过滤器不再起作用。很快(n=10或之后100),信号饱和到最大值:溢出!

(注意:我在double(64 位)浮点中工作)。

有人说阶数越高越不稳定那该怎么做才能解决这个问题呢?

非常感谢您提前。

(*) IIR 滤波器是均匀的......线性相位......感谢有人给我的技巧(对信号应用滤波器,然后反转信号,然后再次应用滤波器,然后反转信号)!

2个回答

将高阶滤波器分解为级联的二阶部分(或双二阶)。这在每本关于 DSP 的教科书中都有介绍,例如https://ccrma.stanford.edu/~jos/filters/

试试这个链接,它比在线程序更容易使用。它可以生成多达 20 个极点的陷波滤波器(即使有点荒谬)。

http://www.iowahills.com/4IIRFilterPage.html

该程序给出了二阶系数(双二阶)和 N 阶多项式系数。网站上还有示例 C 代码,展示了如何以任何一种形式实现过滤器。