FIR数字滤波器设计——窗函数设计法——滤波器的时域截断 ...

打印 上一主题 下一主题

主题 1823|帖子 1823|积分 5469

与IIR数字滤波器的设计类似,设计FIR数字滤波器也需要事先给出理想滤波器频率响应                                             H                            ideal                                  (                                   e                                       j                               ω                                            )                              H_{\text{ideal}}(e^{j\omega})                  Hideal​(ejω),用实际的频率响应                                   H                         (                                   e                                       j                               ω                                            )                              H(e^{j\omega})                  H(ejω)去逼近                                             H                            ideal                                  (                                   e                                       j                               ω                                            )                              H_{\text{ideal}}(e^{j\omega})                  Hideal​(ejω),在此以低通FIR数字滤波器为例介绍窗函数设计法。



线性相位的理想低通FIR数字滤波器频率响应为
                                                    H                               ideal                                      (                                       e                                           j                                  ω                                                 )                            =                                       {                                                                                                                      e                                                                   −                                                    j                                                    ω                                                    τ                                                                               ,                                                                                                                            0                                              ⩽                                              ∣                                              ω                                              ∣                                              ⩽                                                               ω                                                 c                                                                                                                                                                  0                                              ,                                                                                                                                             ω                                                 c                                                              <                                              ∣                                              ω                                              ∣                                              ⩽                                              π                                                                                                             H_{\text{ideal}}(e^{j\omega}) = \begin{cases} e^{-j\omega\tau}, & 0 \leqslant |\omega| \leqslant \omega_c \\ 0, & \omega_c < |\omega| \leqslant \pi \end{cases}                     Hideal​(ejω)={e−jωτ,0,​0⩽∣ω∣⩽ωc​ωc​<∣ω∣⩽π​
此中,                                             ω                            c                                       \omega_c                  ωc​为停止频率,幅度函数为
                                                    H                               ideal                                      (                            ω                            )                            =                                       {                                                                                                     1                                              ,                                                                                                                            0                                              ⩽                                              ∣                                              ω                                              ∣                                              ⩽                                                               ω                                                 c                                                                                                                                                                  0                                              ,                                                                                                                                             ω                                                 c                                                              <                                              ∣                                              ω                                              ∣                                              ⩽                                              π                                                                                                             H_{\text{ideal}}(\omega) = \begin{cases} 1, & 0 \leqslant |\omega| \leqslant \omega_c \\ 0, & \omega_c < |\omega| \leqslant \pi \end{cases}                     Hideal​(ω)={1,0,​0⩽∣ω∣⩽ωc​ωc​<∣ω∣⩽π​
对应的滤波器单位脉冲响应                                             h                            ideal                                  (                         n                         )                              h_{\text{ideal}}(n)                  hideal​(n)为

                                                    h                               ideal                                      (                            n                            )                            =                            IDTFT                                       [                                           H                                  ideal                                          (                                           e                                               j                                     ω                                                      )                               ]                                      =                                       1                                           2                                  π                                                            ∫                                           −                                               ω                                     c                                                                  ω                                  c                                                            e                                           −                                  j                                  ω                                  τ                                                            e                                           j                                  ω                                  n                                                 d                            ω                            =                                                   sin                                  ⁡                                  [                                               ω                                     c                                              (                                  n                                  −                                  τ                                  )                                  ]                                                      π                                  (                                  n                                  −                                  τ                                  )                                                       h_{\text{ideal}}(n) = \text{IDTFT} \left[ H_{\text{ideal}}(e^{j\omega}) \right] = \frac{1}{2\pi} \int_{-\omega_c}^{\omega_c} e^{-j\omega\tau} e^{j\omega n} d\omega = \frac{\sin[\omega_c(n - \tau)]}{\pi(n - \tau)}                     hideal​(n)=IDTFT[Hideal​(ejω)]=2π1​∫−ωc​ωc​​e−jωτejωndω=π(n−τ)sin[ωc​(n−τ)]​
可以看出,                                             h                            ideal                                  (                         n                         )                              h_{\text{ideal}}(n)                  hideal​(n)为偶对称序列,对称中心为                                   n                         =                         τ                              n = \tau                  n=τ。
但                                             h                            ideal                                  (                         n                         )                              h_{\text{ideal}}(n)                  hideal​(n)也是一个无穷长的非因果序列,这在计算机或 DSP 中是无法实现的。轻便的办法就是对                                             h                            ideal                                  (                         n                         )                              h_{\text{ideal}}(n)                  hideal​(n)进行截断,也就是用一个有限时长的窗函数                                   w                         (                         n                         )                              w(n)                  w(n)与                                             h                            ideal                                  (                         n                         )                              h_{\text{ideal}}(n)                  hideal​(n)相乘。设窗函数长度为                                   N                              N                  N,则在时域截断后的滤波器单位脉冲响应                                   h                         (                         n                         )                              h(n)                  h(n)为
                                         h                            (                            n                            )                            =                                       h                               ideal                                      (                            n                            )                            ⋅                            w                            (                            n                            )                                  h(n) = h_{\text{ideal}}(n) \cdot w(n)                     h(n)=hideal​(n)⋅w(n)
此中,窗函数长度和形状是两个非常紧张的设计参数。
为保证                                   h                         (                         n                         )                              h(n)                  h(n)为因果序列,时域截断时取                                   n                         =                         τ                              n = \tau                  n=τ为对称中心,并且设                                   τ                         =                                              N                               −                               1                                      2                                       \tau = \frac{N-1}{2}                  τ=2N−1​。这种截断方式就好比用一个                                   N                              N                  N点矩形窗                                             R                            N                                  (                         n                         )                              R_N(n)                  RN​(n)与                                             h                            ideal                                  (                         n                         )                              h_{\text{ideal}}(n)                  hideal​(n)相乘,即
                                         h                            (                            n                            )                            =                                       h                               ideal                                      (                            n                            )                            ⋅                                       R                               N                                      (                            n                            )                            =                                       {                                                                                                                      h                                                 ideal                                                              (                                              n                                              )                                              ,                                                                                                                            0                                              ⩽                                              n                                              ⩽                                              N                                              −                                              1                                                                                                                                                  0                                              ,                                                                                                                            其他                                               n                                                                                                             h(n) = h_{\text{ideal}}(n) \cdot R_N(n) = \begin{cases} h_{\text{ideal}}(n), & 0 \leqslant n \leqslant N-1 \\ 0, & \text{其他 } n \end{cases}                     h(n)=hideal​(n)⋅RN​(n)={hideal​(n),0,​0⩽n⩽N−1其他 n​
由频域卷积定理可知,时域相乘对应频域卷积,故实际滤波器的频率响应为
                                         H                            (                                       e                                           j                                  ω                                                 )                            =                            DTFT                                       [                                           h                                  ideal                                          (                               n                               )                               ⋅                               w                               (                               n                               )                               ]                                      =                                       1                                           2                                  π                                                            [                                           H                                  ideal                                          (                                           e                                               j                                     ω                                                      )                               ∗                                           W                                  N                                          (                                           e                                               j                                     ω                                                      )                               ]                                            H(e^{j\omega}) = \text{DTFT} \left[ h_{\text{ideal}}(n) \cdot w(n) \right] = \frac{1}{2\pi} \left[ H_{\text{ideal}}(e^{j\omega}) * W_N(e^{j\omega}) \right]                     H(ejω)=DTFT[hideal​(n)⋅w(n)]=2π1​[Hideal​(ejω)∗WN​(ejω)]
                                    N                              N                  N点矩形窗                                             R                            N                                  (                         n                         )                              R_N(n)                  RN​(n)的 DTFT 结果为
                                                    W                               N                                      (                                       e                                           j                                  ω                                                 )                            =                            DTFT                                       [                                           R                                  N                                          (                               n                               )                               ]                                      =                                       e                                           −                                  j                                                             N                                        −                                        1                                                  2                                              ω                                                                        sin                                  ⁡                                  (                                  ω                                  N                                  /                                  2                                  )                                                      sin                                  ⁡                                  (                                  ω                                  /                                  2                                  )                                                       W_N(e^{j\omega}) = \text{DTFT} \left[ R_N(n) \right] = e^{-j\frac{N-1}{2}\omega} \frac{\sin(\omega N/2)}{\sin(\omega/2)}                     WN​(ejω)=DTFT[RN​(n)]=e−j2N−1​ωsin(ω/2)sin(ωN/2)​
                                    N                              N                  N点矩形窗也是严格线性相位的 FIR 数字滤波器,其幅度函数为
                                                    W                               N                                      (                            ω                            )                            =                                                   sin                                  ⁡                                  (                                  ω                                  N                                  /                                  2                                  )                                                      sin                                  ⁡                                  (                                  ω                                  /                                  2                                  )                                                       W_N(\omega) = \frac{\sin(\omega N/2)}{\sin(\omega/2)}                     WN​(ω)=sin(ω/2)sin(ωN/2)​
由 DTFT 的时移特性可知,相位函数只会对                                   h                         (                         n                         )                              h(n)                  h(n)起时移作用,因此                                   H                         (                                   e                                       j                               ω                                            )                              H(e^{j\omega})                  H(ejω)的幅度函数只取决于理想低通的幅度函数                                             H                            ideal                                  (                         ω                         )                              H_{\text{ideal}}(\omega)                  Hideal​(ω)和矩形窗的幅度函数                                             W                            N                                  (                         ω                         )                              W_N(\omega)                  WN​(ω),即
                                         H                            (                            ω                            )                            =                                       1                                           2                                  π                                                            [                                           H                                  ideal                                          (                               ω                               )                               ∗                                           W                                  N                                          (                               ω                               )                               ]                                            H(\omega) = \frac{1}{2\pi} \left[ H_{\text{ideal}}(\omega) * W_N(\omega) \right]                     H(ω)=2π1​[Hideal​(ω)∗WN​(ω)]
理想低通滤波器的通带幅度为 1,阻带幅度为 0,但实际的低通滤波器在通带和阻带都出现升沉振荡的现象,在其过渡带的边缘出现了正、负肩峰,即极大值和极小值。正肩峰出现在窗函数主瓣刚刚全部进入理想低通滤波器                                   (                         ω                         =                         −                                   ω                            c                                  +                                              2                               π                                      N                                  )                              \left(\omega = -\omega_c + \frac{2\pi}{N}\right)                  (ω=−ωc​+N2π​),以及窗函数主瓣即将移出理想低通滤波器                                   (                         ω                         =                                   ω                            c                                  −                                              2                               π                                      N                                  )                              \left(\omega = \omega_c - \frac{2\pi}{N}\right)                  (ω=ωc​−N2π​)的时间。负肩峰表现卷积结果的极小值,负肩峰出现在窗函数主瓣即将进入理想低通滤波器                                   (                         ω                         =                         −                                   ω                            c                                  −                                              2                               π                                      N                                  )                              \left(\omega = -\omega_c - \frac{2\pi}{N}\right)                  (ω=−ωc​−N2π​),以及窗函数主瓣刚刚全部移出理想低通滤波器                                   (                         ω                         =                                   ω                            c                                  +                                              2                               π                                      N                                  )                              \left(\omega = \omega_c + \frac{2\pi}{N}\right)                  (ω=ωc​+N2π​)的时间。

只要确保                                   h                         (                         n                         )                              h(n)                  h(n)为偶对称或奇对称的,就可以不再“操心”线性相位的需求,“用心”思量FIR数字滤波器的幅度指标即可。
实际滤波器幅频响应升沉振荡的幅度取决于窗函数旁瓣的相对幅度,而升沉振荡的次数取决于窗函数旁瓣的数目。增加窗函数的长度(不改变窗函数的形状),过渡带的宽度变窄,振荡升沉变密,但是滤波器肩峰的相对值(相对于1大概0)保持8.95%不变,这种现象称作“吉布斯(Gibbs)效应”。

我们知道信号的时域截断会引起频谱泄漏。窗函数法也是在时域进行截断,出现的“过渡带”“吉布斯效应”等其实都是频谱泄漏在FIR数字滤波器设计中的体现。只不过信号的时域截断引起的频谱泄漏主要是分析信号的频谱,这里的频谱泄露主要是分析系统(滤波器)的频谱。
这里只介绍使用窗函数法设计低通FIR数字滤波器,假如要设计其他范例的FIR数字滤波器,只需要接纳对应的理想滤波器频率响应即可,在此不再进一步讨论。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

铁佛

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表