貝塞爾濾波器

電子學信號處理領域,貝塞爾濾波器(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()