贝塞尔滤波器

(重定向自贝塞耳滤波器

电子学信号处理领域,贝塞尔滤波器(Bessel filter)是具有最大平坦的群延迟(线性相位响应)的线性滤波器。贝塞尔滤波器常用在音频天桥系统中。模拟贝赛尔滤波器在几乎整个通频带都具有恒定的群延迟,因而在通频带上保持了被过滤的信号波形。滤波器的得名德国数学家弗雷德里希·贝塞尔,他发展了滤波器的数学理论基础。

传递函数

描述贝塞耳滤波器低通滤波器的传递函数如下:

 

这里θn(s)是一个反向贝塞耳多项式,ω0是选定的期望截止频率。

简单例子

下面是一个三阶贝塞尔低通滤波

 

gain值为

 

相位为

 

群延迟为

 

群延迟的泰勒级数展开为

 

注意在ω2和ω4的二个term是零,在ω=0造成非常平坦的群延迟。这是可以调整到零term的最大数量,因为在三阶贝赛尔多项式中总共有四个系数,要求定义四个等式。一个等式是为了在ω = 0 时the gain be unity,第二个等式指定ω =无穷时gain是零,剩下二个等式指定二个terms的级数展开是零。这是n秩贝赛尔滤波的群延迟的一般特性:在群延迟的前n-1级数展开的term为零,因而ω = 0时群延迟的扁平得以最大化。

Pseudo code

以下為貝塞爾低通濾波器的pseudo code,以階數N=5及N=10模擬並繪製出幅頻相對應曲線,可以以python或是matlab實現之。

n ← 0 TO 1 BY 0.01
for i (0 to 1):
   IF i ←← 0 THEN
       pos ← 1
       N ← 5
   ENDIF
   IF i ←← 1 THEN
       pos ← 3
       N ← 10
   ENDIF
   z, p, k ← besselap(N)
   b, a ← zpk2tf(z, p, k)
   h, w ← freqs(b, a, n)
   magh2 ← abs(h) ** 2
   phah ← unwrap(angle(h))
   plt.subplot(2, 2, pos)
   plt.xlim(0, 2)
   plt.xlabel("w/wc")
   plt.ylabel("Bessel H(jw)^2")
   plt.title("N =" + INT_TO_STRING(N))
   plt.grid()
   plt.plot(w, magh2)
   plt.subplot(2, 2, pos + 1)
   plt.xlim(0, 2)
   plt.xlabel("w/wc")
   plt.ylabel("Bessel Ph(jw)^2")
   plt.title("N =" + INT_TO_STRING(N))
   plt.grid()
   plt.plot(w, phah)
ENDFOR
plt.show()