此条目需要精通或熟悉电子学 、数学 、计算机科学 的编者 参与及协助编辑。(2021年7月19日 ) 请邀请 适合的人士改善本条目 。更多的细节与详情请参见讨论页 。需要电子学专家关注的页面 。  
有限冲激响应 (英语:Finite impulse response ,缩写FIR)滤波器是其冲激响应 为有限长度的滤波器 ,脉冲输入信号的响应会在有限时间内变为零,此特性和无限冲激响应 (IIR)滤波器相反,无限冲激响应滤波器存在反馈回路,其冲激响应 可能是无限长度的(不过一般会衰减)。
N阶离散时间的FIR滤波器,其冲激响应 (对应克罗内克δ函数 输入的输出)在变为零之前,最多只持续
  
    
      
        N 
        + 
        1 
       
     
    {\displaystyle N+1} 
    
FIR滤波器可以是连续时间的,也可能是离散时间的,可以是数字 的,也可能是模拟 的。
定义 
  直接型的N阶离散FIR滤波器。最上层是N阶的延迟线(delay line)和N + 1个抽头,每一个单元延迟是
Z变换 下的 
z −1 运算子
  格子型的N阶离散FIR滤波器。每一个单元延迟是
Z变换 下的 
z −1 运算子
针对因果 
  
    
      
        
          
            
              
                y 
                [ 
                n 
                ] 
               
              
                = 
                
                  b 
                  
                    0 
                   
                 
                x 
                [ 
                n 
                ] 
                + 
                
                  b 
                  
                    1 
                   
                 
                x 
                [ 
                n 
                − 
                1 
                ] 
                + 
                ⋯ 
                + 
                
                  b 
                  
                    N 
                   
                 
                x 
                [ 
                n 
                − 
                N 
                ] 
               
             
            
              
                = 
                
                  ∑ 
                  
                    i 
                    = 
                    0 
                   
                  
                    N 
                   
                 
                
                  b 
                  
                    i 
                   
                 
                ⋅ 
                x 
                [ 
                n 
                − 
                i 
                ] 
                , 
               
             
           
         
       
     
    {\displaystyle {\begin{aligned}y[n]&=b_{0}x[n]+b_{1}x[n-1]+\cdots +b_{N}x[n-N]\\&=\sum _{i=0}^{N}b_{i}\cdot x[n-i],\end{aligned}}} 
      其中
  
    
      
        x 
        [ 
        n 
        ] 
       
     
    {\textstyle x[n]} 
      
  
    
      
        y 
        [ 
        n 
        ] 
       
     
    {\textstyle y[n]} 
      
  
    
      
        N 
       
     
    {\textstyle N} 
      
  
    
      
        N 
       
     
    {\textstyle N} 
      th 阶滤波器表示在右边有
  
    
      
        N 
        + 
        1 
       
     
    {\textstyle N+1} 
      
  
    
      
        
          b 
          
            i 
           
         
       
     
    {\textstyle b_{i}} 
      
  
    
      
        
          N 
          
            th 
           
         
       
     
    {\textstyle N^{\text{th}}} 
      
  
    
      
        0 
        ≤ 
        i 
        ≤ 
        N 
       
     
    {\textstyle 0\leq i\leq N} 
      
  
    
      
        
          b 
          
            i 
           
         
       
     
    {\textstyle b_{i}} 
      计算也称为离散卷积 。
上述项中的
  
    
      
        x 
        [ 
        n 
        − 
        i 
        ] 
       
     
    {\textstyle x[n-i]} 
      tap (抽头),依数字延迟线 
滤波器的冲激响应定义为有限区间内的非零值。包括零值在内,冲激响应是无限数列:
  
    
      
        h 
        [ 
        n 
        ] 
        = 
        
          ∑ 
          
            i 
            = 
            0 
           
          
            N 
           
         
        
          b 
          
            i 
           
         
        ⋅ 
        δ 
        [ 
        n 
        − 
        i 
        ] 
        = 
        
          
            { 
            
              
                
                  
                    b 
                    
                      n 
                     
                   
                 
                
                  0 
                  ≤ 
                  n 
                  ≤ 
                  N 
                 
               
              
                
                  0 
                 
                
                  
                    otherwise 
                   
                  . 
                 
               
             
             
         
       
     
    {\displaystyle h[n]=\sum _{i=0}^{N}b_{i}\cdot \delta [n-i]={\begin{cases}b_{n}&0\leq n\leq N\\0&{\text{otherwise}}.\end{cases}}} 
      若FIR滤波器是非因果的,其冲激响应上的非零值范围可能从
  
    
      
        n 
        = 
        0 
       
     
    {\displaystyle n=0} 
      
 特性 
FIR滤波器相较于IIR滤波器,有以下的优点:
不需要反馈,因此舍去误差不会因为连续的加总而累计。每一次的计算其相对误差都是一样的,因此在实现上比较简单。 
在本质上稳定 ,因为其输出是有限个输入值乘以有限倍数的和,因此不会大于
  
    
      
        ∑ 
        
          | 
         
        
          b 
          
            i 
           
         
        
          | 
         
       
     
    {\textstyle \sum |b_{i}|} 
       
若让系数对称,可以设计成线性相位 地震学 或分音器 )中是很好的特性。 FIR滤波器的主要缺点是若要求要求低频(相对于采样率)截止频率,在相同的锐利程度或是选择性 
 频率响应 
数列
  
    
      
        x 
        [ 
        n 
        ] 
       
     
    {\displaystyle x[n]} 
      卷积定理 ,在频域上描述:
  
    
      
        
          
            
              
                
                  
                    F 
                   
                 
                { 
                x 
                ∗ 
                h 
                } 
               
              ⏟ 
             
           
          
            Y 
            ( 
            ω 
            ) 
           
         
        = 
        
          
            
              
                
                  
                    F 
                   
                 
                { 
                x 
                } 
               
              ⏟ 
             
           
          
            X 
            ( 
            ω 
            ) 
           
         
        ⋅ 
        
          
            
              
                
                  
                    F 
                   
                 
                { 
                h 
                } 
               
              ⏟ 
             
           
          
            H 
            ( 
            ω 
            ) 
           
         
       
     
    {\displaystyle \underbrace {{\mathcal {F}}\{x*h\}} _{Y(\omega )}=\underbrace {{\mathcal {F}}\{x\}} _{X(\omega )}\cdot \underbrace {{\mathcal {F}}\{h\}} _{H(\omega )}} 
      
  
    
      
        y 
        [ 
        n 
        ] 
        = 
        x 
        [ 
        n 
        ] 
        ∗ 
        h 
        [ 
        n 
        ] 
        = 
        
          
            
              F 
             
           
          
            − 
            1 
           
         
        
          
            { 
           
         
        X 
        ( 
        ω 
        ) 
        ⋅ 
        H 
        ( 
        ω 
        ) 
        
          
            } 
           
         
        , 
       
     
    {\displaystyle y[n]=x[n]*h[n]={\mathcal {F}}^{-1}{\big \{}X(\omega )\cdot H(\omega ){\big \}},} 
      其中运算子
  
    
      
        
          
            F 
           
         
       
     
    {\displaystyle {\mathcal {F}}} 
      
  
    
      
        
          
            
              F 
             
           
          
            − 
            1 
           
         
       
     
    {\displaystyle {\mathcal {F}}^{-1}} 
      
  
    
      
        H 
        ( 
        ω 
        ) 
       
     
    {\displaystyle H(\omega )} 
      频率响应 ,可以用以下的傅里叶级数 定义:
  
    
      
        
          H 
          
            2 
            π 
           
         
        ( 
        ω 
        ) 
          
        ≜ 
        
          ∑ 
          
            n 
            = 
            − 
            ∞ 
           
          
            ∞ 
           
         
        h 
        [ 
        n 
        ] 
        ⋅ 
        
          
            ( 
            
              
                e 
                
                  i 
                  ω 
                 
               
             
            ) 
           
          
            − 
            n 
           
         
        = 
        
          ∑ 
          
            n 
            = 
            0 
           
          
            N 
           
         
        
          b 
          
            n 
           
         
        ⋅ 
        
          
            ( 
            
              
                e 
                
                  i 
                  ω 
                 
               
             
            ) 
           
          
            − 
            n 
           
         
        , 
       
     
    {\displaystyle H_{2\pi }(\omega )\ \triangleq \sum _{n=-\infty }^{\infty }h[n]\cdot \left({e^{i\omega }}\right)^{-n}=\sum _{n=0}^{N}b_{n}\cdot \left({e^{i\omega }}\right)^{-n},} 
      其中加上下标表示2π周期性。此处的
  
    
      
        ω 
       
     
    {\displaystyle \omega } 
      正规单位 
  
    
      
        ω 
        = 
        2 
        π 
        f 
        , 
       
     
    {\displaystyle \omega =2\pi f,} 
      
  
    
      
        ( 
        f 
        ) 
       
     
    {\displaystyle (f)} 
      [A] 
  
    
      
        
          f 
          
            s 
           
         
       
     
    {\displaystyle f_{s}} 
      samples/second ,
  
    
      
        ω 
        = 
        2 
        π 
        f 
        
          / 
         
        
          f 
          
            s 
           
         
       
     
    {\displaystyle \omega =2\pi f/f_{s}} 
      
  
    
      
        ( 
        f 
        ) 
       
     
    {\displaystyle (f)} 
      cycles/second (赫兹 ),周期性是
  
    
      
        
          f 
          
            s 
           
         
       
     
    {\displaystyle f_{s}} 
      
  
    
      
        ω 
        = 
        π 
       
     
    {\displaystyle \omega =\pi } 
      
  
    
      
        f 
        = 
        
          
            
              
                f 
                
                  s 
                 
               
              2 
             
           
         
       
     
    {\displaystyle f={\tfrac {f_{s}}{2}}} 
      Hz  
  
    
      
        = 
        
          
            
              1 
              2 
             
           
         
       
     
    {\displaystyle ={\tfrac {1}{2}}} 
      cycles/sample 的频率,也就是奈奎斯特频率 。
  
    
      
        
          H 
          
            2 
            π 
           
         
        ( 
        ω 
        ) 
       
     
    {\displaystyle H_{2\pi }(\omega )} 
      离散时间傅里叶变换 表示:
  
    
      
        
          
            
              H 
              ^ 
             
           
         
        ( 
        z 
        ) 
          
        ≜ 
        
          ∑ 
          
            n 
            = 
            − 
            ∞ 
           
          
            ∞ 
           
         
        h 
        [ 
        n 
        ] 
        ⋅ 
        
          z 
          
            − 
            n 
           
         
        . 
       
     
    {\displaystyle {\widehat {H}}(z)\ \triangleq \sum _{n=-\infty }^{\infty }h[n]\cdot z^{-n}.} 
      
  
    
      
        
          H 
          
            2 
            π 
           
         
        ( 
        ω 
        ) 
        = 
        
          
            
              
                
                  
                    H 
                    ^ 
                   
                 
               
              ( 
              z 
              ) 
               
            | 
           
          
            z 
            = 
            
              e 
              
                j 
                ω 
               
             
           
         
        = 
        
          
            
              H 
              ^ 
             
           
         
        ( 
        
          e 
          
            j 
            ω 
           
         
        ) 
        . 
       
     
    {\displaystyle H_{2\pi }(\omega )=\left.{\widehat {H}}(z)\,\right|_{z=e^{j\omega }}={\widehat {H}}(e^{j\omega }).} 
       滤波器设计 
在设计有限冲激响应滤波器时,要找到符合特定规格的系数以及阶数,规格可能是时域的(匹配滤波器 ),也可能是频域的(较常见的情形)。匹配滤波器是将输入信号和已知形状的脉冲进行互相关(cross-correlation)。FIR卷积(FIR convolution)是脉冲响应的逆时间复本(time-reversed copy)和输入信号进行互相关。因此匹配滤波器的脉冲是用针对已知脉冲进行采样,再将采样信号倒序,做为滤波器的系数[1] 
若希望有特定的频率响应,以下是一些常见的滤波器设计方式:
窗函数设计法 
频率采样法 
最小MSE(均方差)法 
帕克斯-麦克莱伦算法 (也称为是等涟波法、最佳法或minimax法)常会用雷米兹算法 来找最佳等涟波的系数。使用者会标示想要的频率响应,此响应下误差的加权函数,以及滤波器阶数N。算法会找到可以将最大偏移量降到最低的
  
    
      
        N 
        + 
        1 
       
     
    {\textstyle N+1} 
      
  
    
      
        N 
        + 
        1 
       
     
    {\textstyle N+1} 
      [2] N ,得到最佳系数的程式。等涟波FIR滤波器也可以用DFT算法设计[3]  目前已有许多软件可以进行滤波器设计,例如MATLAB 、GNU Octave 、Scilab 和SciPy 等。
 移动平均滤波器的例子 
  
简单FIR滤波器的方块器(此例中是二阶三抽头的滤波器,是移动平均滤波器)
移动平均 滤波器是简单的FIR滤波器,有时会称为Boxcar 函数 滤波器(特别在之后有降采样 的情形下)。滤波器的系数
  
    
      
        
          b 
          
            0 
           
         
        , 
        … 
        , 
        
          b 
          
            N 
           
         
       
     
    {\textstyle b_{0},\ldots ,b_{N}} 
      
  
    
      
        
          b 
          
            i 
           
         
        = 
        
          
            1 
            
              N 
              + 
              1 
             
           
         
       
     
    {\displaystyle b_{i}={\frac {1}{N+1}}} 
      以下是更具体的例子,选择滤波器的阶数:
  
    
      
        N 
        = 
        2 
       
     
    {\displaystyle N=2} 
      其冲激响应如下:
  
    
      
        h 
        [ 
        n 
        ] 
        = 
        
          
            1 
            3 
           
         
        δ 
        [ 
        n 
        ] 
        + 
        
          
            1 
            3 
           
         
        δ 
        [ 
        n 
        − 
        1 
        ] 
        + 
        
          
            1 
            3 
           
         
        δ 
        [ 
        n 
        − 
        2 
        ] 
       
     
    {\displaystyle h[n]={\frac {1}{3}}\delta [n]+{\frac {1}{3}}\delta [n-1]+{\frac {1}{3}}\delta [n-2]} 
      右边的方块图是以下要讨论的二阶移动平均滤波器。其递移函数为:
  
    
      
        H 
        ( 
        z 
        ) 
        = 
        
          
            1 
            3 
           
         
        + 
        
          
            1 
            3 
           
         
        
          z 
          
            − 
            1 
           
         
        + 
        
          
            1 
            3 
           
         
        
          z 
          
            − 
            2 
           
         
        = 
        
          
            1 
            3 
           
         
        
          
            
              
                z 
                
                  2 
                 
               
              + 
              z 
              + 
              1 
             
            
              z 
              
                2 
               
             
           
         
        . 
       
     
    {\displaystyle H(z)={\frac {1}{3}}+{\frac {1}{3}}z^{-1}+{\frac {1}{3}}z^{-2}={\frac {1}{3}}{\frac {z^{2}+z+1}{z^{2}}}.} 
      下一个图是滤波器的极零点图 
  
    
      
        
          z 
          
            1 
           
         
        = 
        − 
        
          
            1 
            2 
           
         
        + 
        j 
        
          
            
              3 
             
            2 
           
         
       
     
    {\textstyle z_{1}=-{\frac {1}{2}}+j{\frac {\sqrt {3}}{2}}} 
      
  
    
      
        
          z 
          
            2 
           
         
        = 
        − 
        
          
            1 
            2 
           
         
        − 
        j 
        
          
            
              3 
             
            2 
           
         
       
     
    {\textstyle z_{2}=-{\frac {1}{2}}-j{\frac {\sqrt {3}}{2}}} 
      
若以正规化频率 ω 表示,频率响应为:
  
    
      
        
          
            
              
                H 
                
                  ( 
                  
                    e 
                    
                      j 
                      ω 
                     
                   
                  ) 
                 
               
              
                = 
                
                  
                    1 
                    3 
                   
                 
                + 
                
                  
                    1 
                    3 
                   
                 
                
                  e 
                  
                    − 
                    j 
                    ω 
                   
                 
                + 
                
                  
                    1 
                    3 
                   
                 
                
                  e 
                  
                    − 
                    j 
                    2 
                    ω 
                   
                 
               
             
            
              
                = 
                
                  
                    1 
                    3 
                   
                 
                
                  e 
                  
                    − 
                    j 
                    ω 
                   
                 
                
                  ( 
                  
                    1 
                    + 
                    2 
                    c 
                    o 
                    s 
                    ( 
                    ω 
                    ) 
                   
                  ) 
                 
                . 
               
             
           
         
       
     
    {\displaystyle {\begin{aligned}H\left(e^{j\omega }\right)&={\frac {1}{3}}+{\frac {1}{3}}e^{-j\omega }+{\frac {1}{3}}e^{-j2\omega }\\&={\frac {1}{3}}e^{-j\omega }\left(1+2cos(\omega )\right).\end{aligned}}} 
      图上有其振幅和相位的响应,不过此图也可以用冲激响应的离散傅里叶变换 得到
因为其对称性,滤波器设计或是显示软件多半只会显示 [0, π]区域。可以看出移动平均滤波器的低频增益接近1,但会衰减高频的信号,因此是简单的低通滤波器 。相位图是线性的,但在增益降到零时出现不连续,不连续的大小是π,意思是有变号的情形。最后一张图的振幅允许正负,此时的相位就都是线性的。
 参考文献 
^ Oppenheim, Alan V., Willsky, Alan S., and Young, Ian T.,1983: Signals and Systems, p. 256 (Englewood Cliffs, New Jersey: Prentice-Hall, Inc.)  ISBN  0-13-809731-3  
^ Rabiner, Lawrence R., and Gold, Bernard, 1975: Theory and Application of Digital Signal Processing (Englewood Cliffs, New Jersey: Prentice-Hall, Inc.)  ISBN  0-13-914101-4  
^ A. E. Cetin, O.N. Gerek, Y. Yardimci, "Equiripple FIR filter design by the FFT algorithm," IEEE Signal Processing Magazine, pp. 60–64, March 1997. 
 
 注解 
^ An exception is MATLAB, which prefers units of half-cycles/sample  = cycles/2-samples , because the Nyquist frequency in those units is 1, a convenient choice for plotting software that displays the interval from 0 to the Nyquist frequency. 
 
 相关条目