IIR 滤波器中 y[n] 的第一个值

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

我使用一个简单的双二阶 IIR 滤波器:

if (n >= 2)
   y[n] = (b0/a0)*x[n] + (b1/a0)*x[n-1] + (b2/a0)*x[n-2]
                    - (a1/a0)*y[n-1] - (a2/a0)*y[n-2] 
else
   y[n] = x[n]     // here it probably needs to be modified

(感谢http://www.musicdsp.org/files/Audio-EQ-Cookbook.txt

它工作得很好。

我的问题是过滤后的信号有时会在最初的几毫秒内爆炸,然后在几毫秒后恢复正常。

我应该如何初始化 y[n] 的第一个值?我已经做到了

y[n] = x[n]

对于n=0,1,但问题可能来自这里?

当我在级联中对同一个过滤器进行 2、3 或更多次通过时,问题(它在第一毫秒内爆炸)很重要。

提前致谢。

1个回答

通常,您会用零这相当于假设过滤器是因果的。x[1]x[2]y[1]y[2]