FIR数字滤波器的MATLAB实现  
 
1.FIR数字滤波器的基本结构  
一个数字滤波器可以用系统函数表示为  
 
                     (1.1.1)
直接由此式可得出表示输入输出关系的常系数线性差分方程为  
 
              (1.1.2)
可以看出,数字滤波器的功能就是把输入序列通过一定的运算变换成输出序列。  
有限长单位冲激响应(FIR)滤波器有以下几个特点:  
(1) 系统的单位冲激响应h(n)在有限个n值处不为零;  
(2) 系统函数H(z)在︱z︱>0处只有零点,有限z平面只有零点,而全部极点都在z=0处(因果系统);  
(3) 结构上主要是非递归结构,没有输出到输入的反馈,但有些结构中(例如频率抽样结构)也包含有反馈的递归部分。  
设FIR滤波器的单位冲激响应h(n)为一个N点序列,  
,则滤波器的系统函数为
 
                             (1.1.3)
就是说,它有(N-1)阶极点在z=0处,有(N-1)个零点位于有限z平面的任何位置。FIR滤波器有以下几种基本结构。  
 
1.1.横截型(卷积型、直接型)  
    系统的差分方程表达式为  
                
                        (1.1.4)
很明显,这就是线性移不变系统的卷积和公式,也是x(n)的延时链的横向结构,如下图所示  
 
 
 
  x(n)          
      
                   ![]()
 ![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
        h(0)    h(1)    h(2)        h(N-2)           h(N-1)  
                                                                y(n)  
 
                   图1.1.1 FIR滤波器的横截型结构  
1.2.级联型  
将H(z)分解成实系数二阶因子的乘积形式  
 
        (1.2.1)
其中  
表示取N/2的整数部分。若N为偶数,则N-1为奇数,故系数
中有一个为零。这是因为有奇数个根,其中复数根成共轭对,必为偶数,必然有奇数个实根。
 
 ![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
 x(n)        
                
                 
          y(n)
        
    
        
    
          
     ![]()
        
 
     
       
     
         
      ![]()
 
          图1.2.1 FIR滤波器的级联型结构(N为奇数)  
这种结构的每一节控制一对零点,因而在需控制传输零点时,可以用它。但是这种结构所需的系数  
(i=0,1,2;k=1,2,…,[N/2]比卷积型的系数h(n)要多,因此所需的乘法次数也比卷积型的要多。
1.3.频率抽样型  
把一个N点有限长序列的z变换H(z)在单位圆上作N等份抽样,就得到  
,其主值序列就等于h(n)的离散傅立叶变换H(k)。用H(k)表示H(z)的内插公式为
 
      
                       (1.3.1)
其中级联的第一部分为  
 
=
                                       (1.3.2)
这是一个FIR子系统,是由N节延时单元构成的梳状滤波器,令  
 
=
=0
则有  
 ![]()
 
,  
0,1,…,N-1
即  
在单位圆上有N个等间隔角度的零点,它的频率响应为
 
                  (1.3.3)
因而幅度响应为  
 ![]()
相角为  
 
 
                              ![]()
 
 
     ![]()
                              …  
 ![]()
其子网络结构及频率响应幅度如图1-3所示。  
 
 ![]()
![]()
![]()
![]()
       x(n)                                            y(n)
 ![]()
                 
 
                        图1.3.1 梳状滤波器结构  
级联的第二部分为  
 ![]()
它是由N个一阶网络并联组成,而这每一个一阶网络都是一个谐振器  
 
                             (1.3.4)
令  
的分母为零,即令
 ![]()
可得到此一阶网络在单位圆上有一个极点  
 ![]()
也就是说,此一阶网络在频率为  
 ![]()
处响应为无穷大,故等于谐振频率为  
的无损耗谐振器。这个谐振器正好于与梳状滤波器的一个零点(i=k)相抵消,从而使这个频率(
)上的频率响应等于H(k)。这样,N个谐振器的N个极点就和梳状滤波器N个零点相互抵消,从而在N个频率抽样点(
,k=0,1,…,N-1)的频率响应就分别等于N个H(k)值。
N个并联谐振器与梳状滤波器级联后,就得到如图1-4的频率抽样结构。频率抽样结构的特点是它的系数H(k)就是滤波器在  
处的响应,因此控制滤波器的频率响应很方便。但是结构中所乘的系数H(k)及
都是复数,增加了乘法次数和存储量,而且所有极点都在单位圆上,由系数
决定,这样,当系数量化时,这些极点会移动,有些极点就不能被梳状滤波器的零点所抵消(零点由延时单元决定,不受量化影响)。如果极点移到z平面单位圆外,系统就不稳定了[4]。
为了克服系数量化后可能不稳定的缺点,可以将频率抽样结构做一点修正,即将所有零、极点都移到单位圆内某一靠近单位圆、半径为r的圆上,使系统更加稳定。限于篇幅关系,这里就不作详细介绍。图1.3.2是未修正的频率抽样结构。  
 
 
 
 
                                       
                                        H(0)  
 ![]()
![]()
![]()
![]()
![]()
![]()
                                        ![]()
 
                                        
 
                          
   H(1)
 ![]()
![]()
![]()
   x(n)                                               1/N        
 ![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
                                        
                 y(n)
 ![]()
![]()
![]()
![]()
       -
                   ![]()
 ![]()
                                       H(N-1)
 ![]()
![]()
![]()
                        
 
                                        ![]()
                                ![]()
图1.3.2 FIR滤波器的频率抽样型结构  
      
1.4.快速卷积结构  
根据圆周卷积的知识,我们知道将x(n)和h(n)都变成L点序列,即将  
点输入x(n)补L-
个零值点,将
点冲激响应h(n)补L-
个零值点,只要满足:
 
 
+
-1
则x(n)和h(n)的L点圆周卷积就代表它们的线性卷积。这样,我们就得到图1.4.1所示的快速卷积结构。  
 
 
    x(n)                   X(k)
 ![]()
![]()
![]()
![]()
                                Y(k)
 ![]()
![]()
                                                   y(n)=x(n)*h(n)
 ![]()
![]()
![]()
![]()
                           H(k)                                  
                  图1.4.1 FIR滤波器的快速卷积结构  
 
1.5.线性相位FIR滤波器结构  
    当满足h(n)=   
h(N-1-n),0
n
N。FIR滤波器具有线性相位。
下面对N分为奇数和偶数两种情况分别加以讨论。  
当N为奇数时,代入线性相位奇偶条件  
=![]()
,可得
 
       (1.5.1)
 
 ![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
x(n)         
       
             
        
 
 
 
         
1        
1       
1             
1
                                           
               
       
             
        
 
        h(0)      h(1)         
     
          
 ![]()
                                                            y(n)    
           图1.5.1 N为奇数时线性相位FIR滤波器的直接结构                                                     
 
当N为偶数时,代入线性相位奇偶条件  
=![]()
,可得
 
                     (1.5.2)
 ![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
   x(n)          
     
            
         ![]()
       
 ![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
           
1     
1    
1              
1      
1
 ![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
         
      
             
            
                                
     h(0)    h(1)   h(2) …            
  ![]()
 ![]()
![]()
![]()
![]()
![]()
                                                        y(n)
            
图1.5.2 N为偶数时线性相位FIR滤波器的直接结构  
                         
由以上流图看出线性相位FIR滤波器结构比一般直接型结构可以节省一半数量的乘法次数。  
除了上述的各种结构,还有一种新的结构形式,即格型(Lattice)结构。事实证明:① 由于它的模块化结构便于实现高速并行处理;② 一个m阶格型滤波器可以产生从1阶到m阶的m个横向滤波器的输出性能;③ 它对有限长的舍入误差不灵敏。由于这些优点,此结构在现代谱估计、语音信号处理、自适应滤波等方面得到了广泛应用[4]。限于篇幅关系,这里就不做详细介绍了。

