铁佛 发表于 2025-1-1 18:35:14

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

与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数字滤波器为例介绍窗函数设计法。
https://i-blog.csdnimg.cn/direct/ed368405e8914b6ea649102a408a844f.png
https://i-blog.csdnimg.cn/direct/deb569e1a3184990a042cf11342f1ab7.png
https://i-blog.csdnimg.cn/direct/d631adaf638e4a9e9b36e851c1b02f76.png
线性相位的理想低通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=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=2π1​
                                    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=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​
理想低通滤波器的通带幅度为 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π​)的时间。
https://i-blog.csdnimg.cn/direct/493dd62f25f04ab2b12ac3d393fb500b.png
只要确保                                 h                         (                         n                         )                              h(n)                  h(n)为偶对称或奇对称的,就可以不再“操心”线性相位的需求,“用心”思量FIR数字滤波器的幅度指标即可。
实际滤波器幅频响应升沉振荡的幅度取决于窗函数旁瓣的相对幅度,而升沉振荡的次数取决于窗函数旁瓣的数目。增加窗函数的长度(不改变窗函数的形状),过渡带的宽度变窄,振荡升沉变密,但是滤波器肩峰的相对值(相对于1大概0)保持8.95%不变,这种现象称作“吉布斯(Gibbs)效应”。
https://i-blog.csdnimg.cn/direct/455250360e1e477396e673b5075d78a1.png
我们知道信号的时域截断会引起频谱泄漏。窗函数法也是在时域进行截断,出现的“过渡带”“吉布斯效应”等其实都是频谱泄漏在FIR数字滤波器设计中的体现。只不过信号的时域截断引起的频谱泄漏主要是分析信号的频谱,这里的频谱泄露主要是分析系统(滤波器)的频谱。
这里只介绍使用窗函数法设计低通FIR数字滤波器,假如要设计其他范例的FIR数字滤波器,只需要接纳对应的理想滤波器频率响应即可,在此不再进一步讨论。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: FIR数字滤波器设计——窗函数设计法——滤波器的时域截断