有人可能会很纠结,滤波不就是输入信号和一组抽头系数做卷积么,滤波器的结构是来干什么的?
总体上说,是为了减少抽头系数和时延器。比如,由于某些特殊要求,可以使得滤波器的抽头的系数可以有某种对称性质,(比如线性相位的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;
c