FIR滤波器设计

FIR滤波器的优越性:

相位相应为严格的线性,不存在延迟失真,只有固定的时间延迟;

由于不存在稳定性问题,设计相对简单;

只包含实数算法,不涉及复数算法,不需要递推运算,长度为M,阶数为M-1,计算值约为M/2。


关于FIR滤波器的幅频特性和相频特性。在人们不关心相位时,可以让幅频特性常为正,原来为负的部分只需相位加上pi来补偿。

但当相位很重要,不允许随便增减时,幅频特性就必须区分正负。我们这里称为符幅特性。

符幅特性负值部分向上反褶就和我们平时看到的幅频特性一样,还是满足对称性的。


4类FIR的比较(摘自百度文库):

FIR滤波器设计_第1张图片

     FIR滤波器设计_第2张图片

不同类型要注意他们在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工具设计,更为直观。





你可能感兴趣的:(matlab,FIR滤波器,窗函数)