标签: 影响滤波器实现结构的三大因素 2010-03-01 22:33
影响滤波器实现结构的三大因素
发表于 2009/12/29 20:30:30
在对数字信号进行滤波时,在根据信号的特性计算出滤波器系数之后,还要考虑用何种结构来实现所设计的滤波器。通常,人们往往更注重滤波器系数的求解,而经常忽略滤波器的实现结构。理论上,相同的滤波器,采用不同的实现结构,其结果是完全相同的。但在工程实际中,不同的实现结构,结果可能相差很大。而且,在不同的应用场合,对滤波器的实现结构也有不同的要求。这些到底是为什么呢?
一方面,在理论分析中,有一个基本的假定即数据是无限精确的,但在实际的数字系统中,数是有限精度的,这也即是通常所说的字长有限。比如说,滤波器有一个系数是0.999,在实际的系统实现时,可能会量化为0.998985。这样,实际实现的滤波器与理论分析得到的滤波器性能会有所差别。另外,在不同的应用场合,对系统的运算速度要求不尽相同,对系统的造价要求也不尽相同,这时,也要尽量选择合适的实现结构。
那么,在工程实践中,到底哪些因素影响滤波器实现结构的选择呢?就一般的情况来看,主要有如下三个主要因素:运算复杂度、存储量需求和有限字长影响。
运算复杂度主要是指运算量的要求。在实时系统中,希望运算效率尽量高,在滤波器设计阶段,往往要求滤波器的阶数尽量低。在滤波器结构选择阶段,则是希望对于相同阶数的滤波器,所需的算术运算尽量少。比如说,在工程实际中,FIR滤波器通常要求线性相位,这时候滤波器的系数是对称的,如果直接用横向结构,所需的算术运算与FIR的阶数N成正比。但如果采用改进型的横向实现结构,充分利用系数的对称性,所需的算术运算与N/2成正比。这样,不同的实现结构其运算量就相差了一倍。
存储量需求主要设计到系统硬件资源的开销,从而影响系统的造价。在选择实现结构的时候,希望所要求的存储量尽量小。还是上面的这个例子,在两种不同的结构下,对滤波器系数的存储量要求也相差一倍。在滤波器系数不是很多的情况下,这样的差别可能关系不是很大,但如果滤波器系数很多,则对系统资源的开销差别就会比较明显。而且,在有些场合,比如雷达声纳等军事应用领域,价格因素相对不是很重要,但在手机等商业性竞争领域,价格因素是致命的,这时候系统资源的节约就有重要的价值。
有限字长的影响是滤波器实现结构选择时的另外一个非常重要的考虑。有些实现结构非常便于理解,也易于实现,可是对有限字长造成的影响非常敏感。比如说对IIR滤波器而言,如果极点位于单位圆附近,系统的量化误差很容易就会使极点从单位圆内变成单位圆外,从而导致系统的不稳定。这时候,采用对有限字长影响不敏感的实现结构就至关重要。
此外,是否易于并行运算以及是否能够实现流水线运算也常影响滤波器的实现结构。
滤波器的时域理解
发表于 2009/12/23 20:53:59
刚接触数字滤波器概念的时候,从频域理解是最直观的。但是在很多时候,比如说大部分的教科书在描述数字滤波器的时候,往往是从时域描述开始的。在时域来描述滤波器的工具是卷积。
卷积可以说是数字信号处理中最重要也最基本的概念之一了,但由于其更多依赖数学公式,因此也往往不易被理解。要在时域理解滤波器的工作过程,其实质就是理解卷积的工作过程。
卷积的概念通常可以从两个方面来理解。一是从输入信号的角度来看,卷积的过程相当于是把一个相对复杂的信号分解成多个单位冲激信号之和,输出则是多个单位冲激响应之和。单位冲激信号是最简单的信号,每个信号都可以分解成不同幅度及不同延时的单位冲激信号之和,根据线性时不变系统的特征,不同幅度及不同延时的单位冲激信号其对应的系统响应是对应幅度及延时的单位冲激响应。对这些不同幅度及延时的单位冲激响应求和即得到系统的输出,及卷积的结果。这种思路的实质是将一个相对复杂的信号分解为相对简单的信号,再利用相对简单的信号其系统响应也相对简单的特点,在线性时不变系统的框架下,在输出端再重新相加得到最终的结果。这种“分解——分析——叠加”的思路是数字信号处理最基本的思路之一。
卷积的另一种是从输出信号的角度看,每个输出信号是对输入信号乘以不同的权值,然后累加的结果。我们通常的数学描述多是从这个角度来看的。
初学卷积概念的时候,很不好理解为什么要将一个信号翻转呢?实际上,从输入信号的角度看,对单位冲激响应的翻转是很自然的。假定输入信号为x(m), m="0",1,…,M-1,单位冲激响应为h(n), n="0",1,…,N-1。对x(0)来说,对输出端造成的系统响应是x(0)h(n),即是说,x(0)造成的系统响应仅仅是对单位冲激响应乘上了一个幅度,这个幅度值为x(0),响应的长度为N。对x(1)来说,因为延迟了单位时间,因此除考虑幅度的影响外,还要考虑延时的影响,根据线性时不变系统的特性可知,此时的系统响应为x(1)h(n-1)。同理,对任意一个m值来说,其对应的系统响应为x(m)h(n-m)。由此可以看出,在计算卷积时要将h(n)先翻转实在是最自然不过的事。最终的系统响应是要把所有上述响应相加,这正好与通用的卷积公式是完全一样的。
再回到数字滤波器,在时域的理解即是输入信号与单位冲激响应的卷积,也即是说,当前时刻的滤波结果,是对当前及之前若干个输入信号加上不同系数的权值,然后再累加的结果。权系数的不同,代表了不同的滤波特性。
标签: 影响滤波器实现结构的三大因素 2010-03-01 22:33
影响滤波器实现结构的三大因素
发表于 2009/12/29 20:30:30
在对数字信号进行滤波时,在根据信号的特性计算出滤波器系数之后,还要考虑用何种结构来实现所设计的滤波器。通常,人们往往更注重滤波器系数的求解,而经常忽略滤波器的实现结构。理论上,相同的滤波器,采用不同的实现结构,其结果是完全相同的。但在工程实际中,不同的实现结构,结果可能相差很大。而且,在不同的应用场合,对滤波器的实现结构也有不同的要求。这些到底是为什么呢?
一方面,在理论分析中,有一个基本的假定即数据是无限精确的,但在实际的数字系统中,数是有限精度的,这也即是通常所说的字长有限。比如说,滤波器有一个系数是0.999,在实际的系统实现时,可能会量化为0.998985。这样,实际实现的滤波器与理论分析得到的滤波器性能会有所差别。另外,在不同的应用场合,对系统的运算速度要求不尽相同,对系统的造价要求也不尽相同,这时,也要尽量选择合适的实现结构。
那么,在工程实践中,到底哪些因素影响滤波器实现结构的选择呢?就一般的情况来看,主要有如下三个主要因素:运算复杂度、存储量需求和有限字长影响。
运算复杂度主要是指运算量的要求。在实时系统中,希望运算效率尽量高,在滤波器设计阶段,往往要求滤波器的阶数尽量低。在滤波器结构选择阶段,则是希望对于相同阶数的滤波器,所需的算术运算尽量少。比如说,在工程实际中,FIR滤波器通常要求线性相位,这时候滤波器的系数是对称的,如果直接用横向结构,所需的算术运算与FIR的阶数N成正比。但如果采用改进型的横向实现结构,充分利用系数的对称性,所需的算术运算与N/2成正比。这样,不同的实现结构其运算量就相差了一倍。
存储量需求主要设计到系统硬件资源的开销,从而影响系统的造价。在选择实现结构的时候,希望所要求的存储量尽量小。还是上面的这个例子,在两种不同的结构下,对滤波器系数的存储量要求也相差一倍。在滤波器系数不是很多的情况下,这样的差别可能关系不是很大,但如果滤波器系数很多,则对系统资源的开销差别就会比较明显。而且,在有些场合,比如雷达声纳等军事应用领域,价格因素相对不是很重要,但在手机等商业性竞争领域,价格因素是致命的,这时候系统资源的节约就有重要的价值。
有限字长的影响是滤波器实现结构选择时的另外一个非常重要的考虑。有些实现结构非常便于理解,也易于实现,可是对有限字长造成的影响非常敏感。比如说对IIR滤波器而言,如果极点位于单位圆附近,系统的量化误差很容易就会使极点从单位圆内变成单位圆外,从而导致系统的不稳定。这时候,采用对有限字长影响不敏感的实现结构就至关重要。
此外,是否易于并行运算以及是否能够实现流水线运算也常影响滤波器的实现结构。
滤波器的时域理解
发表于 2009/12/23 20:53:59
刚接触数字滤波器概念的时候,从频域理解是最直观的。但是在很多时候,比如说大部分的教科书在描述数字滤波器的时候,往往是从时域描述开始的。在时域来描述滤波器的工具是卷积。
卷积可以说是数字信号处理中最重要也最基本的概念之一了,但由于其更多依赖数学公式,因此也往往不易被理解。要在时域理解滤波器的工作过程,其实质就是理解卷积的工作过程。
卷积的概念通常可以从两个方面来理解。一是从输入信号的角度来看,卷积的过程相当于是把一个相对复杂的信号分解成多个单位冲激信号之和,输出则是多个单位冲激响应之和。单位冲激信号是最简单的信号,每个信号都可以分解成不同幅度及不同延时的单位冲激信号之和,根据线性时不变系统的特征,不同幅度及不同延时的单位冲激信号其对应的系统响应是对应幅度及延时的单位冲激响应。对这些不同幅度及延时的单位冲激响应求和即得到系统的输出,及卷积的结果。这种思路的实质是将一个相对复杂的信号分解为相对简单的信号,再利用相对简单的信号其系统响应也相对简单的特点,在线性时不变系统的框架下,在输出端再重新相加得到最终的结果。这种“分解——分析——叠加”的思路是数字信号处理最基本的思路之一。
卷积的另一种是从输出信号的角度看,每个输出信号是对输入信号乘以不同的权值,然后累加的结果。我们通常的数学描述多是从这个角度来看的。
初学卷积概念的时候,很不好理解为什么要将一个信号翻转呢?实际上,从输入信号的角度看,对单位冲激响应的翻转是很自然的。假定输入信号为x(m), m="0",1,…,M-1,单位冲激响应为h(n), n="0",1,…,N-1。对x(0)来说,对输出端造成的系统响应是x(0)h(n),即是说,x(0)造成的系统响应仅仅是对单位冲激响应乘上了一个幅度,这个幅度值为x(0),响应的长度为N。对x(1)来说,因为延迟了单位时间,因此除考虑幅度的影响外,还要考虑延时的影响,根据线性时不变系统的特性可知,此时的系统响应为x(1)h(n-1)。同理,对任意一个m值来说,其对应的系统响应为x(m)h(n-m)。由此可以看出,在计算卷积时要将h(n)先翻转实在是最自然不过的事。最终的系统响应是要把所有上述响应相加,这正好与通用的卷积公式是完全一样的。
再回到数字滤波器,在时域的理解即是输入信号与单位冲激响应的卷积,也即是说,当前时刻的滤波结果,是对当前及之前若干个输入信号加上不同系数的权值,然后再累加的结果。权系数的不同,代表了不同的滤波特性。