首页 > 代码库 > FIR滤波器设计
FIR滤波器设计
FIR滤波器的优越性:
相位相应为严格的线性,不存在延迟失真,只有固定的时间延迟;
由于不存在稳定性问题,设计相对简单;
只包含实数算法,不涉及复数算法,不需要递推运算,长度为M,阶数为M-1,计算值约为M/2。
关于FIR滤波器的幅频特性和相频特性。在人们不关心相位时,可以让幅频特性常为正,原来为负的部分只需相位加上pi来补偿。
但当相位很重要,不允许随便增减时,幅频特性就必须区分正负。我们这里称为符幅特性。
符幅特性负值部分向上反褶就和我们平时看到的幅频特性一样,还是满足对称性的。
4类FIR的比较(摘自百度文库):
不同类型要注意他们在w=0和pi时的取值是否为0,对滤波器选型有影响。
另外要注意到FIR极点在原点,零点则是成对出现,而且极点数等于零点数。
实际中用窗函数截断法设计FIR滤波器。
矩形窗缺点:
突然截断引起吉布斯效应,因为矩形窗在频谱上的旁瓣相对幅度过大,导致滤波器波动大。
因此要采用平滑截断的窗,旁瓣相对小。但平滑窗主瓣宽度大,主瓣宽度是决定过渡带的关键因素。因此用提高阶数的方法解决。
matlab中各种窗函数:
wd = boxcar(N);%矩形窗
wd = triang(N);%三角窗
wd = hanning(N);&汉宁窗
wd = hamming(N);%汉明窗
wd = blackman(N);%布莱克曼窗
wd = kaiser(N,beta);%凯泽-贝塞尔窗,最优的窗结构之一,对于给定的波动,提供最小的主瓣宽度。
另外有个现成的设计函数:
b = fir1(M,wn,‘type‘,window);
b为待设计的滤波器系数向量,长度为N = M+1;
M为阶数;
wn为滤波器给定的边缘频率,标量或数组;
type滤波器类型,低通,高通……
window为窗函数类型,默认汉明窗。
例如b = fir1(32,0.7,high‘,kaiser(33,4));
注意0.7是指边界数字频率0.7*pi。
滤波器设计也可以利用matlab的fdatool工具设计,更为直观。
FIR滤波器设计