7 数字滤波器的结构

来源:互联网 发布:淘宝模特奶奶 编辑:程序博客网 时间:2024/06/05 18:42

有人可能会很纠结,滤波不就是输入信号和一组抽头系数做卷积么,滤波器的结构是来干什么的?

总体上说,是为了减少抽头系数和时延器。比如,由于某些特殊要求,可以使得滤波器的抽头的系数可以有某种对称性质,(比如线性相位的FIR滤波器的系数就是这样),为了节省乘法单元,就可以使用一些特殊的结构来巧妙地实现原来较多的运算。再比如,对于IIR滤波器,可以让输入信号的时延与反馈信号的时延公用时延器。

先说FIR,FIR的最大特点在于它可以做成线性相位的。当你需要使用信号的相位信息时,这就很关键了。FIR线性相位滤波器,可以按照,初相(=0或=π),阶数(奇数或者偶数)组合成4类。最终的结果是,当滤波器为奇数(或者偶数)阶,冲击响应关于N/2奇对称(或者偶对称)。通过观察它们的频率特性,可以看到它们的频率响应会在某些部分为0,因此当滤波器如果在这个频段上为通带时,就不能选择响应的结构。

对于FIR滤波器,还有一种特殊的结构,称为频率采样结构。它的特点是由连续的频谱推出采样点上的频率结构,然后反变换出时域系数,最后利用时域系数,求Z变换获取频率采样结构。最终是由N个1阶IIR并联而成,这个结构的最大问题在于,由于量化误差,有可能导致滤波器不稳定。

说完了FIR,再来说IIR。由频率采样结构可以看出,IIR滤波器有可能不稳定。不仅如此,IIR滤波器还会面临不能作出线性相位的问题,这限制了它的应用,但是IIR的好处在于,对于同样的幅度特性,它的阶数要比FIR少很多,所以如果不需要考虑相位时,IIR也是不错的选择。IIR的主要类型有直接(I,II,转置),并联、级联以及格型这么几种。其中直接型就是按照系统函数实现的,只不过在公用延迟单元上略有区别。级联是将系统函数写成连乘的形式,依次实现每个小的系统函数,并联是将系统函数写成部分分式展开的形式,依次实现各个小的系统函数。格型滤波器则是完全由最优滤波器的准则推导出来的结构,跟前3个不是1种门路。

不论是FIR还是IIR不同的滤波器对于有限字长效应的敏感度是不同的,这里先不讨论这个问题,先讨论不同结构之间的转化。先看代码:

clear all;close all;clc;% 直接结构b = 5*[1 -2.4412 2.4412 -1];a = [1 -1.7728 1.4464 -0.405];% 级联结构[sos,g] = tf2sos(b,a);% 并联结构[r1,p1,k1] = residue(b,a);R1 = [r1(1),r1(2)];P1 = [p1(1),p1(2)];[b1,a1] = residue(R1,P1,0);% 格型结构系数[v,k] = tf2latc(b,a);

由于FIR与IIR的区别在于分子部分(a)是否为1,所以matlab并没有为这俩种滤波器分别设计相关的函数。下面对于其中原理进行解释:、

1.直接-》级联的时候,sos是二阶子系统矩阵它是一个n*6的矩阵,其中每1行代表了1个二阶子系统的b0,b1,b2,a0(恒等于1),a1,a2的系数。至于为什么要搞2阶子系统,是因为很多时候,写成连乘以后,滤波器的系数就成了复数,这无疑增大了运算量,所以,通过将复系数合并为2阶的实系数,可以避免这个麻烦。

2.直接-》并联时,residue实际上是求部分分式展开的。但是如果反过来用,就是将站来的部分分式合并为多项式相除的样子。通过[r1,p1,k1] = residue(b,a);,发现r1,r2,p1,p2都是复数,所以将它们合并成1个二阶子系统。

3.对于格型结构,没啥花样,但是要注意的是a的系数必须用a(1)归一化。


至于有限字长效应对于不同滤波器结构的影响,下次再讨论吧。

0 0
原创粉丝点击