文章目录

  • FIR滤波器
  • 线性相位FIR滤波器的条件及特点
    • 线性相位FIR滤波器
    • 线性相位条件
    • 线性相位FIR滤波器幅度特性
      • 类型1:h(n)=h(N-n-1),N=奇数
      • 类型2:h(n)=h(N-n-1),N=偶数
      • 类型3:h(n)=-h(N-n-1),N=奇数
      • 类型4:h(n)=-h(N-n-1),N=偶数
      • 奇偶对称的单位脉冲响应
  • FIR滤波器的窗函数设计法
    • 窗函数设计法的原理
    • 典型窗函数及其特性
    • 窗函数法设计FIR滤波器步骤
  • FIR滤波器的频率采样设计法
    • 频率采样法的原理

FIR滤波器

滤波器的单位脉冲响应h(n)是有限长序列,N-1阶FIR数字滤波器的系统函数为:
H(z)=∑n=0N−1h(n)z−nH(z)=\sum_{n=0}^{N-1}h(n)z^{-n} H(z)=n=0N1h(n)zn
稳定线性相位特性是FIR滤波器最突出的优点

线性相位FIR滤波器的条件及特点

线性相位FIR滤波器

对于长度为N的h(n),频率响应函数为:
H(ejω)=∑n=0N−1h(n)e−jωn=Hg(ω)ejθ(ω)H(e^{j\omega})=\sum_{n=0}^{N-1}h(n)e^{-j\omega n}=H_g(\omega)e^{j\theta(\omega)} H(ejω)=n=0N1h(n)ejωn=Hg(ω)ejθ(ω)
式中,Hg(ω)H_g(\omega)Hg(ω)幅度特性,为ω\omegaω的实函数,可能取负值,不同于∣H(ejω)∣|H(e^{j\omega})|H(ejω)(只为正值);θ(ω)\theta(\omega)θ(ω)相位特性

线性相位条件

H(ejω)H(e^{j\omega})H(ejω)线性相位是指θ(ω)\theta(\omega)θ(ω)ω\omegaω的线性函数,即
θ(ω)=−τω,τ为常数,该式属于严格线性相位(第一类线性相位)\theta(\omega)=-\tau\omega,\tau为常数,该式属于严格线性相位(第一类线性相位) θ(ω)=τω,τ线(线)
但是,如果θ(ω)\theta(\omega)θ(ω)满足下式:
θ(ω)=θ0−τω,θ0是初始相位,该式属于广义线性相位(第二类线性相位)\theta(\omega)=\theta_0-\tau\omega,\theta_0是初始相位,该式属于广义线性相位(第二类线性相位) θ(ω)=θ0τω,θ0广线(线)
严格地说,此时θ(ω)\theta(\omega)θ(ω)不具有线性相位

但以上两种情况都满足群时延是一个常数,即:−dθ(ω)dω=τ-\frac{d\theta(\omega)}{d\omega}=\taudωdθ(ω)=τ

为了使滤波器对实信号的处理结果仍然是实信号,一般要求h(n)为实序列:

  • 满足第一类线性相位的时域约束条件是:h(n)是实序列,且对(N-1)/2偶对称,即:τ=(N−1)/2,h(n)=h(N−n−1)\tau=(N-1)/2,h(n)=h(N-n-1)τ=(N1)/2,h(n)=h(Nn1)
  • 满足第二类线性相位的时域约束条件是:h(n)是实序列,且对(N-1)/2奇对称,即:τ=(N−1)/2,h(n)=−h(N−n−1)\tau=(N-1)/2,h(n)=-h(N-n-1)τ=(N1)/2,h(n)=h(Nn1)

线性相位FIR滤波器幅度特性

当N取奇数和偶数时,对Hg(ω)H_g(\omega)Hg(ω)的约束不同,因此,对于两类线性相位特性,分四种情况讨论其幅度特性的特点

类型1:h(n)=h(N-n-1),N=奇数

推导其频率响应:
数字信号处理(七)FIR数字滤波器的设计-编程知识网
令m=N-1-n,有:
H(ejω)=∑n=0(N−3)/2h(n)e−jωn+h(N−12)⋅e−j(N−1)ω/2+∑m=0(N−3)/2h(N−1−m)e−j(N−1−m)ωH(e^{j\omega})=\sum_{n=0}^{(N-3)/2}h(n)e^{-j\omega n}+h(\frac{N-1}2)\cdot e^{-j(N-1)\omega/2}+\sum_{m=0}^{(N-3)/2}h(N-1-m)e^{-j(N-1-m)\omega} H(ejω)=n=0(N3)/2h(n)ejωn+h(2N1)ej(N1)ω/2+m=0(N3)/2h(N1m)ej(N1m)ω
利用h(n)的对称性:h(N-1-m)=h(m),并提取e−j(N−1)ω/2e^{-j(N-1)\omega /2}ej(N1)ω/2
H(ejω)=∑n=0(N−3)/2h(n)e−jωn+h(N−12)⋅e−j(N−1)ω/2+∑m=0(N−3)/2h(N−1−m)e−j(N−1−m)ω=e−j(N−1)ω/2[∑m=0(N−3)/2h(m)e−jωmej(N−1)ω/2+∑m=0(N−3)/2h(m)ejωme−j(N−1)ω/2+h(N−12)]=e−j(N−1)ω/2[2∑m=0(N−3)/2h(m)cos[(N−12−m)ω]+h(N−12)]H(e^{j\omega})=\sum_{n=0}^{(N-3)/2}h(n)e^{-j\omega n}+h(\frac{N-1}2)\cdot e^{-j(N-1)\omega/2}+\sum_{m=0}^{(N-3)/2}h(N-1-m)e^{-j(N-1-m)\omega}\\ =e^{-j(N-1)\omega /2}[\sum_{m=0}^{(N-3)/2}h(m)e^{-j\omega m}e^{j(N-1)\omega/2}+\sum_{m=0}^{(N-3)/2}h(m)e^{j\omega m}e^{-j(N-1)\omega/2}+h(\frac{N-1}2)]\\ =e^{-j(N-1)\omega /2}[2\sum_{m=0}^{(N-3)/2}h(m)cos[(\frac{N-1}2-m)\omega]+h(\frac{N-1}2)] H(ejω)=n=0(N3)/2h(n)ejωn+h(2N1)ej(N1)ω/2+m=0(N3)/2h(N1m)ej(N1m)ω=ej(N1)ω/2[m=0(N3)/2h(m)ejωmej(N1)ω/2+m=0(N3)/2h(m)ejωmej(N1)ω/2+h(2N1)]=ej(N1)ω/2[2m=0(N3)/2h(m)cos[(2N1m)ω]+h(2N1)]
再令m=(N-1)/2-n,得:
H(ejω)=e−j(N−1)ω/2[2∑n=1(N−1)/2h(N−12−n)cos(ωn)+h(N−12)]H(e^{j\omega})=e^{-j(N-1)\omega /2}[2\sum_{n=1}^{(N-1)/2}h(\frac{N-1}2-n)cos(\omega n)+h(\frac{N-1}2)] H(ejω)=ej(N1)ω/2[2n=1(N1)/2h(2N1n)cos(ωn)+h(2N1)]

a(n)={h(N−12)n=02h(N−12−n)n=1,2,…,(N−1)/2a(n)=\begin{cases} h(\frac{N-1}2)&n=0\\ 2h(\frac{N-1}2-n)&n=1,2,…,(N-1)/2 \end{cases} a(n)={h(2N1)2h(2N1n)n=0n=1,2,...,(N1)/2

H(ejω)=e−j(N−1)ω/2∑n=0(N−1)/2a(n)cos(ωn)H(e^{j\omega})=e^{-j(N-1)\omega /2}\sum_{n=0}^{(N-1)/2}a(n)cos(\omega n) H(ejω)=ej(N1)ω/2n=0(N1)/2a(n)cos(ωn)
对比:H(ejω)=Hg(ω)ejθ(ω)H(e^{j\omega})=H_g(\omega)e^{j\theta(\omega)}H(ejω)=Hg(ω)ejθ(ω)

因此:
θ(ω)=−N−12ω,Hg(ω)=∑n=0(N−1)/2a(n)cos(ωn)\theta(\omega)=-\frac{N-1}2\omega,H_g(\omega)=\sum_{n=0}^{(N-1)/2}a(n)cos(\omega n) θ(ω)=2N1ω,Hg(ω)=n=0(N1)/2a(n)cos(ωn)
数字信号处理(七)FIR数字滤波器的设计-编程知识网
(上图中,低通滤波器满足在ω=0\omega=0ω=0对称,高通滤波器满足在ω=π\omega=\piω=π对称,带阻滤波器满足在ω=0和ω=π\omega=0和\omega=\piω=0ω=π均对称,带通滤波器无要求)

由于Hg(ω)中cosωnH_g(\omega)中cos\omega nHg(ω)cosωn项对ω=0,π,2π\omega=0,\pi,2\piω=0,π,2π皆为偶对称,因此幅度特性的特点是对ω=0,π,2π\omega=0,\pi,2\piω=0,π,2π为偶对称,如上图所示,因此类型1可用于设计各种滤波器

类型2:h(n)=h(N-n-1),N=偶数

H(ejω)=e−jωτ∑n=0(N−1)/22h(n)cos[ω(n−τ)],式中,τ=(N−1)/2H(e^{j\omega})=e^{-j\omega \tau}\sum_{n=0}^{(N-1)/2}2h(n)cos[\omega( n-\tau)],式中,\tau=(N-1)/2 H(ejω)=ejωτn=0(N1)/22h(n)cos[ω(nτ)],τ=(N1)/2

因此
Hg(ω)=∑n=0(N−1)/22h(n)cos[ω(n−τ)]H_g(\omega)=\sum_{n=0}^{(N-1)/2}2h(n)cos[\omega( n-\tau)] Hg(ω)=n=0(N1)/22h(n)cos[ω(nτ)]
ω=π\omega=\piω=π时,cos[ω(n−τ)]=cos[π(n−N2)+π2]=−sin[π(n−N2)]=0(N2为整数)cos[\omega(n-\tau)]=cos[\pi(n-\frac N2)+\frac\pi2]=-sin[\pi(n-\frac N2)]=0(\frac N2为整数)cos[ω(nτ)]=cos[π(n2N)+2π]=sin[π(n2N)]=0(2N)

所以Hg(π)=0H_g(\pi)=0Hg(π)=0,说明Hg(ω)H_g(\omega)Hg(ω)关于ω=π\omega=\piω=π奇对称,当ω=2π\omega=2\piω=2π时,Hg(ω)H_g(\omega)Hg(ω)关于ω=0和ω=2π\omega=0和\omega=2\piω=0ω=2π偶对称。因此类型2不能实现高通和带阻滤波器

类型3:h(n)=-h(N-n-1),N=奇数

Hg(ω)=∑n=0(N−1)/22h(n)sin[ω(n−τ)]H_g(\omega)=\sum_{n=0}^{(N-1)/2}2h(n)sin[\omega(n-\tau)] Hg(ω)=n=0(N1)/22h(n)sin[ω(nτ)]

式中,N为奇数,τ=(N−1)/2\tau=(N-1)/2τ=(N1)/2是整数,说明Hg(ω)H_g(\omega)Hg(ω)关于ω=0,ω=π和ω=2π\omega=0,\omega=\pi和\omega=2\piω=0ω=πω=2π奇对称,因此类型3只能用来实现带通滤波器

类型4:h(n)=-h(N-n-1),N=偶数

Hg(ω)=∑n=0(N−1)/22h(n)sin[ω(n−τ)]H_g(\omega)=\sum_{n=0}^{(N-1)/2}2h(n)sin[\omega(n-\tau)] Hg(ω)=n=0(N1)/22h(n)sin[ω(nτ)]

式中,N为奇数,τ=(N−1)/2\tau=(N-1)/2τ=(N1)/2

当ω=0和ω=2π时,sin[ω(n−τ)]=0当\omega=0和\omega=2\pi时,sin[\omega(n-\tau)]=0ω=0ω=2πsin[ω(nτ)]=0

当ω=π时,sin[ω(n−τ)]取得最大值当\omega=\pi时,sin[\omega(n-\tau)]取得最大值ω=π,sin[ω(nτ)]

说明,Hg(ω)H_g(\omega)Hg(ω)关于ω=0和ω=2π\omega=0和\omega=2\piω=0ω=2π奇对称,关于ω=π\omega=\piω=π偶对称,因此类型4不能用来实现低通和带阻滤波器

奇偶对称的单位脉冲响应

偶对称单位脉冲响应:
数字信号处理(七)FIR数字滤波器的设计-编程知识网
奇对称单位脉冲响应:
数字信号处理(七)FIR数字滤波器的设计-编程知识网

FIR滤波器的窗函数设计法

窗函数设计法的原理

如果滤波器的单位取样响应hd(n)h_d(n)hd(n)无限长,要用FIR滤波器实现,就必须截断无限长的序列,以得到有限长的单位取样响应h(n)

为了构造一个长度为N的线性相位滤波器,由hd(n)h_d(n)hd(n)截取h(n)时,必须保证截取的一段对(N−1)/2(N-1)/2(N1)/2对称

  • 将h(n)表示为hd(n)h_d(n)hd(n)和窗函数w(n)w(n)w(n)的乘积:

    h(n)=w(n)⋅hd(n)h(n)=w(n)\cdot h_d(n)h(n)=w(n)hd(n)

  • 当w(n)的取值区间在0至N-1时,截断后滤波器的频率响应为有限项级数和:
    H(ejω)=∑n=0N−1h(n)e−jw=∑n=−∞+∞w(n)⋅hd(n)⋅e−jωnH(e^{j\omega})=\sum_{n=0}^{N-1}h(n)e^{-jw}=\sum_{n=-\infty}^{+\infty}w(n)\cdot h_d(n)\cdot e^{-j\omega n} H(ejω)=n=0N1h(n)ejw=n=+w(n)hd(n)ejωn
    H(ejω)是Hd(ejω)H(e^{j\omega})是H_d(e^{j\omega})H(ejω)Hd(ejω)在均方误差最小下的最优逼近

典型窗函数及其特性

1、矩形窗
数字信号处理(七)FIR数字滤波器的设计-编程知识网

w(n)=RN(n)={10≤n≤N−10其他WR(ejω)=∑n=0N−1e−jωn=sin(ωN/2)sin(ω/2)e−jω(N−12)w(n)=R_N(n)=\begin{cases} 1&0\leq n\leq N-1\\ 0&其他 \end{cases} \\ W_R(e^{j\omega})=\sum_{n=0}^{N-1}e^{-j\omega n}=\frac{sin(\omega N/2)}{sin(\omega /2)}e^{-j\omega(\frac{N-1}2)} w(n)=RN(n)={100nN1WR(ejω)=n=0N1ejωn=sin(ω/2)sin(ωN/2)ejω(2N1)
2、三角窗(又称Bartlett窗)
数字信号处理(七)FIR数字滤波器的设计-编程知识网

w(n)={2nNn=0,1,…,N2w(N−n)n=N2,…,N−1或w(n)=1−2∣n∣N,n=−N2,…,0,…N2w(n)=\begin{cases} \frac{2n}N&n=0,1,…,\frac N2\\ w(N-n)&n=\frac N2,…,N-1 \end{cases} \\或w(n)=1-\frac{2|n|}N,n=-\frac N2,…,0,…\frac N2 w(n)={N2nw(Nn)n=0,1,...,2Nn=2N,...,N1w(n)=1N2n,n=2N,...,0,...2N

W(ejω)=2Ne−jN−12ω[sin(ωN4)sin(ω2)]2W(e^{j\omega})=\frac2Ne^{-j\frac{N-1}{2}\omega}[\frac{sin(\frac{\omega N}4)}{sin(\frac\omega2)}]^2 W(ejω)=N2ej2N1ω[sin(2ω)sin(4ωN)]2

3、汉宁(Hanning)窗(升余弦窗)
数字信号处理(七)FIR数字滤波器的设计-编程知识网

w(n)=0.5−0.5cos(2πnN),n=0,1,…,N−1或w(n)=0.5+0.5cos(2πnN),n=−N2,…,0,…,N2w(n)=0.5-0.5cos(\frac{2\pi n}N),n=0,1,…,N-1\\ 或w(n)=0.5+0.5cos(\frac{2\pi n}N),n=-\frac N2,…,0,…,\frac N2 w(n)=0.50.5cos(N2πn),n=0,1,...,N1w(n)=0.5+0.5cos(N2πn),n=2N,...,0,...,2N

W(ejω)=0.5U(ω)+0.25[U(ω−2πN)+U(ω+2πN)],式中U(ω)=ejω/2sin(ωN2)/sin(ω2)W(e^{j\omega})=0.5U(\omega)+0.25[U(\omega-\frac{2\pi}N)+U(\omega+\frac{2\pi}N)],式中U(\omega)=e^{j\omega/2}sin(\frac{\omega N}2)/sin(\frac \omega2) W(ejω)=0.5U(ω)+0.25[U(ωN2π)+U(ω+N2π)],U(ω)=ejω/2sin(2ωN)/sin(2ω)

4、汉明(Hamming)窗(改进升余弦窗)
数字信号处理(七)FIR数字滤波器的设计-编程知识网

w(n)=0.54−0.46cos(2πnN),n=0,1,…,N−1或w(n)=0.54+0.46cos(2πnN),n=−N2,…,0,…,N2w(n)=0.54-0.46cos(\frac{2\pi n}N),n=0,1,…,N-1\\ 或w(n)=0.54+0.46cos(\frac{2\pi n}N),n=-\frac N2,…,0,…,\frac N2 w(n)=0.540.46cos(N2πn),n=0,1,...,N1w(n)=0.54+0.46cos(N2πn),n=2N,...,0,...,2N

W(ejω)=0.54U(ω)+0.23[U(ω−2πN)+U(ω+2πN)]W(e^{j\omega})=0.54U(\omega)+0.23[U(\omega-\frac{2\pi}N)+U(\omega+\frac{2\pi}N)] W(ejω)=0.54U(ω)+0.23[U(ωN2π)+U(ω+N2π)]

5、布莱克曼(Blackman)窗
数字信号处理(七)FIR数字滤波器的设计-编程知识网

w(n)=0.42−0.5cos(2πnN)+0.08cos(4πnN),n=0,1,…,N−1或w(n)=0.42−0.5cos(2πnN)+0.08cos(4πnN),n=−N2,…,0,…,N2w(n)=0.42-0.5cos(\frac{2\pi n}N)+0.08cos(\frac{4\pi n}N),n=0,1,…,N-1\\ 或w(n)=0.42-0.5cos(\frac{2\pi n}N)+0.08cos(\frac{4\pi n}N),n=-\frac N2,…,0,…,\frac N2 w(n)=0.420.5cos(N2πn)+0.08cos(N4πn),n=0,1,...,N1w(n)=0.420.5cos(N2πn)+0.08cos(N4πn),n=2N,...,0,...,2N
6、上述5种窗函数的频谱
数字信号处理(七)FIR数字滤波器的设计-编程知识网

窗名称 近似过渡带宽 精确过渡带宽 最小阻带衰减
矩形窗 4π/N4\pi/N4π/N 1.8π/N1.8\pi/N1.8π/N 21dB
三角窗 8π/N8\pi/N8π/N 6.1π/N6.1\pi/N6.1π/N 25dB
汉宁窗 8π/N8\pi/N8π/N 6.2π/N6.2\pi/N6.2π/N 44dB
汉明窗 8π/N8\pi/N8π/N 6.6π/N6.6\pi/N6.6π/N 51dB
布莱克曼窗 12π/N12\pi/N12π/N 11π/N11\pi/N11π/N 74dB

窗函数法设计FIR滤波器步骤

1、根据所需设计的数字滤波器类型(低通,高通,带通,带阻),确定线性相位数字滤波器类型(I,II,III,IV)(I,II,III,IV)(I,II,III,IV)

2、选择合适的窗函数w(n)w(n)w(n):根据滤波器阻带衰减αs\alpha_sαs选择窗函数w(n)w(n)w(n)的种类,然后根据滤波器过渡带宽度,确定所选窗函数的长度N。用窗函数设计的FIR数字滤波器的通带波纹幅度近似等于阻带波纹幅度,所以通常只考虑阻带最小衰减就可以。

3、确定理想数字滤波器的频率响应函数:
Hd(ejω)=Hd(ω)ejθd(ω)H_d(e^{j\omega})=H_d(\omega)e^{j\theta_d(\omega)} Hd(ejω)=Hd(ω)ejθd(ω)
对严格线性相位FIR数字滤波器θd(ω)=−ω(N−1)/2\theta_d(\omega)=-\omega(N-1)/2θd(ω)=ω(N1)/2

对广义线性相位FIR数字滤波器θd(ω)=−π/2−ω(N−1)/2\theta_d(\omega)=-\pi/2-\omega(N-1)/2θd(ω)=π/2ω(N1)/2

理想数字滤波器的截止频率ωc\omega_cωc近似为最终设计的FIR数字滤波器的过渡带中心频率,所以一般取ωc=(ωp+ωs)/2\omega_c=(\omega_p+\omega_s)/2ωc=(ωp+ωs)/2ωp和ωs\omega_p和\omega_sωpωs分别为通带边界频率和阻带边界频率。

4、计算理想数字滤波器的单位脉冲响应
hd(n)=12π∫−ππHd(ejω)ejωndωh_d(n)=\frac1{2\pi}\int_{-\pi}^{\pi}H_d(e^{j\omega})e^{j\omega n}d\omega hd(n)=2π1ππHd(ejω)ejωndω
5、加窗得到设计结果
h(n)=hd(n)w(n)h(n)=h_d(n)w(n) h(n)=hd(n)w(n)

FIR滤波器的频率采样设计法

频率采样法的原理

根据频域采样定理, 一个长度为M的有限长序列x(n)x(n)x(n),可通过其频谱函数的N≥MN\geq MNM点等间隔采样值X(k)X(k)X(k)准确的恢复原信号x(n)x(n)x(n),即x(n)=xN(n)=IDFT[X(k)]x(n)=x_N(n)=IDFT[X(k)]x(n)=xN(n)=IDFT[X(k)]。设待设计的滤波器的传输函数用Hd(ejω)H_d(e^{j\omega})Hd(ejω)表示,对它在ω=0∽2π\omega=0 \backsim2\piω=02π之间等间隔采样N点,得到Hd(k)H_d(k)Hd(k)
Hd(k)=Hd(ejω)∣ω=2πNk,k=0,1,2,…,N−1H_d(k)=H_d(e^{j\omega})|_{\omega=\frac{2\pi}Nk},k=0,1,2,…,N-1 Hd(k)=Hd(ejω)ω=N2πk,k=0,1,2,...,N1
再对N点Hd(k)H_d(k)Hd(k)进行IDFT,得到h(n)h(n)h(n),即为所设计的滤波器的单位取样响应:
h(n)=1N∑k=0N−1Hd(k)ej2πNkn,k=0,1,2,…,N−1h(n)=\frac1N\sum_{k=0}^{N-1}H_d(k)e^{j\frac{2\pi}Nkn},k=0,1,2,…,N-1 h(n)=N1k=0N1Hd(k)ejN2πkn,k=0,1,2,...,N1
根据频域采样定理,其系统函数H(z)H(z)H(z)可写成:
H(z)=∑n=0N−1h(n)z−n=1−z−NN∑k=0N−1Hd(k)1−ej2πNkz−1H(z)=\sum_{n=0}^{N-1}h(n)z^{-n}=\frac{1-z^{-N}}N\sum_{k=0}^{N-1}\frac {H_d(k)}{1-e^{j\frac{2\pi}Nk}z^{-1}} H(z)=n=0N1h(n)zn=N1zNk=0N11ejN2πkz1Hd(k)
用频率采样法设计线性相位滤波器的条件:
Hd(k)=Hg(k)ejθ(k)θ(k)=−N−1NπkHg(k)=Hg(N−k),N=奇数Hg(k)=−Hg(N−k),N=偶数H_d(k)=H_g(k)e^{j\theta(k)} \\ \theta(k)=-\frac{N-1}N\pi k \\ H_g(k)=H_g(N-k),N=奇数 \\ H_g(k)=-H_g(N-k),N=偶数 Hd(k)=Hg(k)ejθ(k)θ(k)=NN1πkHg(k)=Hg(Nk),N=Hg(k)=Hg(Nk),N=