最新FIR滤波器的研究与实现.docx
- 文档编号:25005388
- 上传时间:2023-06-03
- 格式:DOCX
- 页数:31
- 大小:233.91KB
最新FIR滤波器的研究与实现.docx
《最新FIR滤波器的研究与实现.docx》由会员分享,可在线阅读,更多相关《最新FIR滤波器的研究与实现.docx(31页珍藏版)》请在冰豆网上搜索。
最新FIR滤波器的研究与实现
FIR滤波器的研究与实现
1引言
随着信息技术的迅猛发展,数字信号处理已成为一个极其重要的学科和技术领域。
在通信、语音、图像、自动控制和家用电器等众多领域得到了广泛的应用。
数字滤波是数字信号处理的重要环节,它在数字信号处理中占有着重要的地位,它具有可靠性好、精度高、灵活性大、体积小、重量轻等优点。
随着数字技术的发展,数字滤波器越来越受到人们的重视,广泛地应用于各个领域。
数字滤波器的输入输出信号都是数字信号,它是通过一定的运算过程改变输入信号所含频率成分的相对比例或者滤除某些频率成分来实现滤波的,这种运算过程是由乘法器、加法器和单位延迟器组成的。
数字滤波器是数字信号处理技术的重要内容,其对数字信号进行的最常见处理是保留数字信号中的有用频率成分和去除信号中的无用频率成分。
按照时间域的特性,数字滤波器可以分为无限冲激脉冲响应数字滤波器(IIR滤波器)和有限冲激脉冲响应数字滤波器(FIR滤波器)«SkipRecordIf...»。
从性能上来说,IIR滤波器传输函数的极点可位于单位圆内的任何地方,因此可用较低的阶数获得高的选择性,所用的存贮单元少,所以经济而效率高。
但是这个高效率是以相位的非线性为代价的。
选择性越好,则相位非线性越严重。
相反,FIR滤波器却可以得到严格的线性相位,然而由于FIR滤波器传输函数的极点固定在原点,所以只能用较高的阶数达到高的选择性。
对于同样的滤波器设计指标,FIR滤波器所要求的阶数可以比IIR滤波器高5~10倍。
结果,成本较高,信号延时也较大;如果按相同的选择性和相同的线性要求来说,则IIR滤波器就必须加全通网络进行相位较正,同样要增加滤波器的节数和复杂性。
从结构上来说,IIR滤波器必须采用递归结构,极点位置必须在单位圆内,否则系统将不稳定。
另外,在这种结构中,由于运算过程中对序列的舍入处理,这种有限字长效应有时会引入寄生振荡。
相反,FIR滤波器主要采用非递归结构,不论在理论上还是在实际的有限精度运算中都不存在稳定性问题,运算误差也较小«SkipRecordIf...»。
此外,FIR滤波器可以采用快速傅里叶变换算法,在相同阶数的条件下,运算速度可以快得多。
从设计工具上来说,IIR滤波器可以借助模拟滤波器的成果,因此一般都有有效的封闭形式的设计公式可供参考,计算工作量比较小,而且对计算工具的要求不高;FIR滤波器一般没有封闭形式的设计工具。
窗函数法设计FIR滤波器也仅给出了窗函数的计算公式,但是在计算通带阻带衰减时无明显表达式。
一般FIR滤波器的设计只有计算程序可循,因此它对计算工具要求较高。
另外,相比IIR,FIR系统只有零点,因此系统总是稳定的,所以能够获得严格的线性相位。
IIR滤波器虽然设计简单,但主要用于设计具有片段常数特性的滤波器,如低通、高通、带通及带阻等,往往脱离不了模拟滤波器的格局。
而FIR滤波器则要灵活得多,易于实现某些特殊功能的应用。
综上所述,IIR和FIR滤波器各有所长,所以在实际应用中,选择滤波器型号时,应该从多方面加以考虑。
FIR数字滤波器的实现,大体可以分为软件和硬件实现两种。
软件方法速度慢,难以对信号进行实时处理,虽然可以用快速傅立叶变换算法来加快计算速度,但很难达到实时处理的要求,因而多用于教学与科研。
硬件实现主要采用以下两种方法:
(1)采用DSP(DigitalSignalProcessing)处理器来实现。
(2)采用固定功能的专用信号处理器。
但这两种方法实现起来比较困难。
FIR相对于IIR滤波器有许多独特的优越性,在保证满足滤波器幅频响应要求的同时还可获得严格的线性相位特性,从而保持稳定。
对非线性相位FIR滤波器一般可以用IIR滤波器来代替。
由于在数据通信、语音信号处理、图像处理以及自适应处理等领域往往要求信号在传输过程中不能有明显的相位失真,而IIR存在频率色散的问题,所以FIR滤波器获得了更广泛的应用。
随着通信与信息技术的发展,数字信号处理在该领域显得越来越重要。
同时数字信号处理在语音、自动控制、航空航天和家用电器等领域也得到了广泛应用,它已成为当今一门极其重要的学科和技术。
在数字信号处理中起重要作用并获得广泛应用的是数字滤波器,数字滤波器是数字信号处理的基础。
MatlabMatrixlaborator是美国MathWorks公司推出的具有强大数值分析、矩阵运算、图形绘制和数据处理等功能的软件,现已广泛应用到教学、科研、工程设计等领域«SkipRecordIf...»。
随着Matlab软件信号处理工具箱的推出,Matlab已成为信息处理,特别是数字信号处理DSP应用中分析和设计的主要工具。
就Matlab信号处理中的滤波器设计而言,在很大程度上能快速有效地实现滤波器的分析、设计及仿真,大大节约了设计时间,相对传统设计而言,简化了滤波器设计难度。
2FIR数字滤波器的特性
FIR数字滤波器的冲激响应«SkipRecordIf...»的Z变换为:
«SkipRecordIf...»(2-1)
其中滤波器最重要的两个特性为线性相位特性和幅度特性。
2.1FIR滤波器的线性相位特性
由式(2-1)可以看出,H(z)是«SkipRecordIf...»的N-1次多项式,它在z平面内有N-1个零点,同时在原点有N-1个重极点。
因为FIR数字滤波器的单位冲激响应是有限长的,所以它永远都是稳定的。
在数字信号处理的许多领域中,常常要求滤波器具有线性相位,达到这一要求,仅需要对FIR数字滤波器的冲激响应«SkipRecordIf...»施加一定的约束«SkipRecordIf...»。
令«SkipRecordIf...»,就可由«SkipRecordIf...»得到FIR数字滤波器的频率响应:
«SkipRecordIf...»(2-2)
式中«SkipRecordIf...»是«SkipRecordIf...»的幅频特性,«SkipRecordIf...»是«SkipRecordIf...»的相频特性
«SkipRecordIf...»(2-3)
当要求滤波器具有严格的线性相位,或者说具有相位不失真时,应有:
«SkipRecordIf...»(2-4)
即«SkipRecordIf...»(2-5)
也即«SkipRecordIf...»(2-6)
将式(2-6)展开可得:
«SkipRecordIf...»(2-7)
式(2-7)的左边具有傅里叶级数的形式。
由于FIR数字滤波器的冲激响应«SkipRecordIf...»为实数,若«SkipRecordIf...»呈偶对称,即
«SkipRecordIf...»(2-8a)
其对称中心在
«SkipRecordIf...»(2-9)
此时有
«SkipRecordIf...»(2-10)
因此:
«SkipRecordIf...»(2-11)
根据式(2-2),有
«SkipRecordIf...»(2-12a)
«SkipRecordIf...»(2-12b)
若«SkipRecordIf...»呈奇对称,
«SkipRecordIf...»(2-8b)
其对称中心也在«SkipRecordIf...»处。
此时有:
«SkipRecordIf...»(2-13a)
«SkipRecordIf...»(2-13b)
即«SkipRecordIf...»呈奇对称的滤波器相位与«SkipRecordIf...»呈偶对称的相位产生了«SkipRecordIf...»的相移。
式(2-8)和式(2-9)是FIR数字滤波器具有线性相位的充要条件。
即它要求FIR数字滤波器的单位冲激响应«SkipRecordIf...»的序列必须满足式(2-8)所表示的特定的对称性,其相位延迟等于«SkipRecordIf...»长度的一半,即«SkipRecordIf...»个采样周期。
具有线性相位的FIR数字滤波器既有恒定的延迟群,又有恒定的相延迟。
2.2FIR滤波器的幅频特性
FIR滤波器的幅频特性可以分为以下4种情况:
(1)«SkipRecordIf...»为偶对称,且N为奇数(Ⅰ型滤波器)
当«SkipRecordIf...»为偶对称,且N为奇数时,根据式(2-12)滤波器的幅频函数可以表示为:
«SkipRecordIf...»(2-14)
其中«SkipRecordIf...»,«SkipRecordIf...»。
此时,«SkipRecordIf...»对«SkipRecordIf...»呈偶对称。
Ⅰ型滤波器的幅频函数可以通过例程2-1的MATLAB语言实现,曲线图如图2.1所示。
例程2-1Ⅰ型滤波器幅频函数
Function[Hr,w,a,L]=hr_type1(h);
%计算所设计的Ⅰ型滤波器的振幅响应
%Hr=振幅响应
%a=Ⅰ型滤波器的系数
%L=Hr的阶次
%h=Ⅰ型滤波器的单位冲激响应
M=length(h);
L=(M-1)/2;
a=[h(L+1)2*h(L:
-1:
1)];
n=[0:
1:
L];
w=[0:
1:
500]'*2*pi/500;
Hr=cos(w*n)*a';
t=-3.14:
0.314:
3.14;
h=cos(t);
[Hr,w,a,L]=hr_type1(h);
plot(Hr)
图2.1Ⅰ型滤波器幅频函数
(2)«SkipRecordIf...»为偶对称,且N为偶数(Ⅱ型滤波器)
当«SkipRecordIf...»为偶对称,且N为偶数时,根据式(2-12)滤波器的幅频函数可以表示为:
«SkipRecordIf...»(2-15)
其中:
«SkipRecordIf...»。
此时«SkipRecordIf...»对«SkipRecordIf...»呈奇对称。
但是«SkipRecordIf...»,故高通滤波器不能用这种方法实现。
Ⅱ型滤波器的幅频函数可以通过例程2-2的MATLAB语言实现,曲线图如图2.2所示。
例程2-2Ⅱ型滤波器幅频函数
function[Hr,w,b,L]=hr_type2(h);
%计算所设计的Ⅱ型滤波器的振幅响应
%Hr=振幅响应
%a=Ⅱ型滤波器的系数
%L=Hr的阶次
%h=Ⅱ型滤波器的单位冲激响应
M=length(h);
L=M/2;
b=2*h(L:
-1:
1);
n=[1:
1:
L];
n=n-0.5;
w=[0:
1:
500]’*2*pi/500;
Hr=cos(w*n)*b’;
t=-3.14:
0.33:
3.14;
h=cos(t);
[Hr,w,b,L]=hr_type2(h);
plot(Hr)
图2.2Ⅱ型滤波器幅频函数
(3)«SkipRecordIf...»为奇对称,且N为奇数(Ⅲ型滤波器)
当«SkipRecordIf...»为奇对称,且为奇数时,根据式(2-13)滤波器的幅频函数可以表示为:
«SkipRecordIf...»(2-16)
其中«SkipRecordIf...»。
此时«SkipRecordIf...»对«SkipRecordIf...»呈奇对称。
但是当«SkipRecordIf...»时,«SkipRecordIf...»,所以低通、高通滤波器不能采用这种形式。
Ⅲ型滤波器的幅频函数可以通过例程2-3的MATLAB语言实现,曲线图如图2.3所示。
例程2-3Ⅲ型滤波器幅频函数
function[Hr,w,c,L]=hr_type3(h);
%计算所设计的Ⅲ型滤波器的振幅响应
%Hr=振幅响应
%b=Ⅲ型滤波器的系数
%L=Hr的阶次
%h=Ⅲ型滤波器的单位冲激响应
M=length(h);
L=(M-1)/2;
c=[2*h(L+1:
-1:
1)];
n=[0:
1:
L];
w=[0:
1:
500]’*2*pi/500;
Hr=sin(w*n)*c’;
t=-3.14:
0.314:
3.14;
h=sin(t);
[Hr,w,c,L]=hr_type3(h);
plot(Hr)
图2.3Ⅲ型滤波器幅频函数
4、«SkipRecordIf...»为奇对称,且N为偶数(Ⅳ型滤波器)
当«SkipRecordIf...»为奇对称,且N为偶数时,根据式(2-13)滤波器的幅频函数可表示为:
«SkipRecordIf...»(2-17)
其中:
«SkipRecordIf...»。
此时«SkipRecordIf...»对«SkipRecordIf...»呈奇对称,对«SkipRecordIf...»呈偶对称。
但是当«SkipRecordIf...»时,«SkipRecordIf...»,所以低通滤波器不能采用这种形式。
Ⅳ型滤波器的幅频函数可以通过例程2-4的MATLAB语言实现,曲线图如图2.4所示。
例程2-4Ⅳ型滤波器的幅频函数
function[Hr,w,d,L]=hr_type4(h);
%计算所设计的Ⅳ型滤波器的振幅响应
%Hr=振幅响应
%d=Ⅳ型滤波器的系数
%L=Hr的阶次
%h=Ⅳ型滤波器的单位冲激响应
M=length(h);
L=M/2;
d=2*[h(L:
-1:
1)];
n=[1:
1:
L];
n=n-0.5;
w=[0:
1:
500]’*2*pi/500;
Hr=sin(w*n)*d’;
t=-3.14:
0.33:
3.14;
h=sin(t);
[Hr,w,d,L]=hr_type4(h);
plot(Hr)
图2.4Ⅳ型滤波器的幅频函数
3基于窗函数的FIR数字滤波器设计
3.1常用窗函数及MATLAB实现
3.1.1矩形窗(Rectangularwindow)
矩形窗函数的时域形式可以表示为:
«SkipRecordIf...»(3-1-1)
它的频域特性为:
«SkipRecordIf...»(3-1-2)
矩形窗函数的时域幅度与频域幅度特性曲线的MATLAB实现如例程3-1所示,曲线图如图3.1所示。
例程3-1矩形窗函数的时域幅度与频域幅度特性曲线
%drawtrectanglewindowtimeandfrequencyamplitude
clearall;
N=64;
w=rectwin(N);
wvtool(w);
图3.1矩形窗函数的时域幅度与频域幅度特性曲线
3.1.2三角窗(Triangularwindow)
三角窗函数的时域形式可以表示为:
当窗长N为奇数时:
«SkipRecordIf...»(3-1-3)
当窗长N为偶数时:
«SkipRecordIf...»(3-1-4)
它的频域特性为:
«SkipRecordIf...»(3-1-5)
三角窗函数的主瓣宽度为«SkipRecordIf...»,比矩形窗函数的主瓣宽度增加一倍,但是它的旁瓣却小得多。
三角窗函数的时域幅度与频域幅度特性曲线的MATLAB实现如例程3-2所示,曲线图如图3.2所示。
例程3-2三角窗函数的时域幅度与频域幅度特性曲线
%drawtrianglewindowtimeandfrequencyamplitude
clearall;
N=64;
w=triang(N);
wvtool(w);
图3.2三角窗函数的时域幅度与频域幅度特性曲线
3.1.3汉宁窗(Hanningwindow)
汉宁窗函数是余弦平方函数,又称之为升余弦函数,它的时域形式可以表为:
«SkipRecordIf...»(3-1-6)
其中«SkipRecordIf...»。
它的频域幅度特性函数为:
«SkipRecordIf...»(3-1-7)
其中«SkipRecordIf...»为矩形窗函数的幅度频率特性函数。
汉宁窗函数的最大旁瓣值比主瓣值低31dB,但是主瓣宽度比矩形窗函数的主瓣宽度增加了一倍,为«SkipRecordIf...»。
汉宁窗函数的时域幅度与频域幅度特性曲线的MATLAB实现如例程3-3所示,曲线图如图3.3所示。
例程3-3汉宁窗函数的时域幅度与频域幅度特性曲线
%%drawhanningwindowtimeandfrequencyamplitude
clearall;
N=64;
w=hann(N);
wvtool(w);
图3.3汉宁窗函数的时域幅度与频域幅度特性曲线
3.1.4海明窗(Hammingwindow)
海明窗函数是一种改进的升余弦函数,定义为:
«SkipRecordIf...»(3-1-8)
其中«SkipRecordIf...»。
它的幅度频率特性为:
«SkipRecordIf...»(3-1-9)
和汉宁窗(Hanningwindow)函数相比,海明窗函数的主瓣宽度和汉宁窗相同,但是它的旁瓣又被进一步压低,其最大旁瓣值比主瓣值低41dB。
海明窗函数的时域幅度与频域幅度特性曲线的MATLAB实现如例程3-4所示,曲线图如图3.4所示。
例程3-4海明窗函数的时域幅度与频域幅度特性曲线
%drawhanningwindowtimeandfrequencyamplitude
clearall;
N=64;
w=hanning(N);
wvtool(w);
图3.4海明窗函数的时域幅度与频域幅度特性曲线
3.1.5布拉克曼窗(Blackmanwindow)
为了进一步抑制旁瓣,对升余弦函数再加上一个二次谐波的余弦分量,便得到了布拉克曼窗函数,也称之为二阶升余弦函数。
它的时域形式可以表示为:
«SkipRecordIf...»(3-1-10)
其中«SkipRecordIf...»。
其幅度频率特性为:
«SkipRecordIf...»(3-1-11)
其中«SkipRecordIf...»为矩形窗函数的幅度频率特性函数。
布拉克曼窗函数主瓣的宽度是矩形窗函数主瓣宽度的三倍,为«SkipRecordIf...»。
它的最大旁瓣值比主瓣值低57dB。
布拉克曼窗函数的时域幅度与频域幅度特性曲线的MATLAB实现如例程3-5所示,曲线图如图3.5所示。
例程3-5布拉克曼窗函数的时域幅度与频域幅度特性曲线
%drawblackmanwindowtimeandfrequencyamplitude
clearall;
N=64;
w=blackman(N);
wvtool(w);
图3.5布拉克曼窗函数的时域幅度与频域幅度特性曲线
3.1.6切比雪夫窗(Chebyshevwindow)
切比雪夫窗又称Dolph-Chebyshev窗,它是由一个切比雪夫多项式在单位圆上作N点等间隔抽样,然后再作DFT反变换得到的。
当给定窗的长度N,最大旁瓣衰减r(切比雪夫窗函数傅里叶变换旁瓣幅度比主瓣低rdB),则其3dB带宽B的表达式为:
«SkipRecordIf...»(3-1-12)
切比雪夫窗函数的时域幅度与频域幅度特性曲线的MATLAB实现如例程3-6所示,曲线图如图3.6所示。
例程3-6切比雪夫窗函数的时域幅度与频域幅度特性曲线
%drawchebyshevwindowtimeandfrequencyamplitude
clearall;
N=64;
w=chebwin(N);
wvtool(w);
图3.6切比雪夫窗函数的时域幅度与频域幅度特性曲线
3.2数字低通滤波器的窗函数设计
假设理想低通数字滤波器的频率响应«SkipRecordIf...»如图3.7所示,其幅频特性为«SkipRecordIf...»。
那么该滤波器的:
«SkipRecordIf...»(3-2-1)
式中«SkipRecordIf...»表示截止频率(rad),«SkipRecordIf...»表示采样延迟。
«SkipRecordIf...»
«SkipRecordIf...»«SkipRecordIf...»«SkipRecordIf...»
«SkipRecordIf...»
«SkipRecordIf...»
0
«SkipRecordIf...»
«SkipRecordIf...»
«SkipRecordIf...»
低通
«SkipRecordIf...»
1
«SkipRecordIf...»
图3.7理想低通数字滤波器幅频特性
由此可得理想数字低通滤波器的单位冲激响应«SkipRecordIf...»为:
«SkipRecordIf...»(3-2-2)
根据式(3-2-2),可知«SkipRecordIf...»为无限非因果序列,关于«SkipRecordIf...»对称。
为了从«SkipRecordIf...»得到一个因果线性相位的FIR滤波器,必须利用有限长度N的窗函数«SkipRecordIf...»对«SkipRecordIf...»进行截取,截取后的冲激响应函数«SkipRecordIf...»可表示为:
«SkipRecordIf...»(3-2-3)
此时«SkipRecordIf...»为关于«SkipRecordIf...»偶对称的有限因果序列。
当N为奇数时,所设计的FIR数字高通滤波器为Ⅰ型滤波器;当N为偶数时,为Ⅱ型滤波器。
而«SkipRecordIf...»表示的滤波器的频率特性为:
«SkipRecordIf...»(3-2-4)
«SkipRecordIf...»是否能够很好地逼近«SkipRecordIf...»取决于窗函数的频率特性«SkipRecordIf...»。
若将理想滤波器的频率响应写成:
«SkipRecordIf...»(3-2-5)
其中幅度频率特性:
«SkipRecordIf...»(3-2-6)
此时,«SkipRecordIf...»滤波器的频率特性可表述为:
«SkipRecordIf...»(3-2-7)
由此可以得到所设计的滤波器的幅度频率特性为:
«SkipRecordIf...»(3-2-8)
由式(3-2-8)可见,对实际FIR滤波器«SkipRecordIf...»有影响的只是窗函数的幅度频率特性«SkipRecordIf...»。
实际中的FIR滤波器的幅度频率特性,是理想低通滤波器的幅度频率特性和窗函数的幅度频率特性的复卷积。
复卷积给«SkipRecordIf...»带来过冲和波动,所以加窗函数后,对滤波器的理想特性的影响有以下几点:
(1)«SkipRecordIf...»在截止频率的间断点变成了连续的曲线,使得«SkipRecordIf...»出现了一个过渡带,它的宽度等于窗函数的主瓣宽度。
由此可知,如果窗函数的主瓣越宽,过渡带就越宽。
(2)由于窗函数旁瓣的影响,使得滤波器
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 FIR 滤波器 研究 实现