在电子学和信号处理领域,贝塞尔滤波器(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,以阶数N=5及N=10模拟并绘制出幅频相对应曲线,可以以python或是matlab实现之。
n ← 0 TO 1 BY 0.01for 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)ENDFORplt.show()