用matlab制作带通滤波器.docx
《用matlab制作带通滤波器.docx》由会员分享,可在线阅读,更多相关《用matlab制作带通滤波器.docx(14页珍藏版)》请在冰豆网上搜索。
用matlab制作带通滤波器
学科分类号(二级)510.8020
本科学生毕业论文(设计)
题 目 用MATLAB设计带通滤波器
姓 名 杨洪斌
学 号 *********
院、 系 物理与电子信息学院
专 业 物理学
指导教师 王六玲
职称(学历) 副教授
用MATLAB设计带通滤波器
摘要:
关于滤波器设计的传统思路,本文借助Matlab软件中滤波器设计工具,探讨一种更为简洁、高效的设计方式。
传统的数字滤波器的设计过程复杂,计算工作量大,滤波特性调整困难,影响了它的应用。
本文介绍了一种利用MATLAB信号处理工具箱(SignalProcessingToolbox)快速有效的设计由软件组成的常规数字滤波器的设计方法。
本文给出了使用MATLAB语言进行程序设计和利用信号处理工具箱的FDATool工具进行界面设计的方法。
利用MATLAB设计滤波器,可以随时对比设计要求和滤波器特性调整参数,直观简便,极大的减轻了工作量,有利于滤波器设计的最优化。
关键词:
带通滤波器;MATLAB;设计工具
随着信息科学与计算技术的迅速发展,数字信号处理的理论与应用得到飞跃式发展,形成了一门极为重要的学科[1]。
滤波技术是信号分析、处理技术的重要分支。
无论是信号的获取、传输,还是信号的处理和交换都离不开滤波技术,它对信号安全可靠和有效灵活地传递是至关重要的。
故滤波技术是极为敏感与热门的课题,对滤波器的研制也历来为各国所重视[3]。
1MATLAB软件简介和滤波器概述
1.1MATLAB软件简介
MATLAB软件具有很强的开放性和适应性。
在保持内核不变的情况下,MATLAB可以针对不同的应用学科推出相应的工具箱(toolbox),目前己经推出了图象处理工具箱、信号处理工具箱、小波工具箱、神经网络工具箱以及通信工具箱等多个学科的专用工具箱,极大地方便了不同学科的研究工作。
国内已有越来越多的科研和技术人员认识到MATLAB的强大作用,并在不同的领域内使用MATLAB来快速实现科研构想和提高工作效率。
MATLAB提供了20类图像处理函数,涵盖了图像处理的包括近期研究成果在内的几乎所有的技术方法,是学习和研究图像处理的人员难得的宝贵资料和加工工具箱。
这些函数按其功能可分为:
图像显示;图像文件I/O;图像算术运算;几何变换;图像登记;像素值与统计;图像分析;图像增强;线性滤波;线性二元滤波设计;图像去模糊;图像变换;邻域与块处理;灰度与二值图像的形态学运算;结构元素创建与处理;基于边缘的处理;色彩映射表操作;色彩空间变换;图像类型与类型转换。
1.2滤波器
滤波器,顾名思义,其作用是对输入信号起到滤波的作用,数字滤波器可以理解为是一个计算程序或算法,将代表输入信号的数字时间序列转化为代表输出信号的数字时间序列,并在转化过程中,使信号按预定的形式变化。
数字滤波器有多种分类,根据数字滤波器冲激响应的时域特征,可将数字滤波器分为两种,即无限长冲激响应(IIR)滤波器和有限长冲激响应(FIR)滤波器。
IIR数字滤波器具有无限宽的冲激响应,与模拟滤波器相匹配。
所以iir滤波器的设计可以采取在模拟滤波器设计的基础上进一步变换的方法。
FIR数字滤波器的单位脉冲响应是有限长序列。
它的设计问题实质上是确定能满足所要求的转移序列或脉冲响应的常数问题,设计方法主要有窗函数法、频率采样法和等波纹最佳逼近法等。
我们平时所要设计的数字滤波器,阶数和类型并不一定是完全给定的,很多时候都是要根据设计要求和滤波效果不断的调整,以达到设计的最优化。
在这种情况下,滤波器的设计就要进行大量复杂的运算,单纯的靠公式计算和编制简单的程序很难在短时间内完成设计。
利用MATLAB强大的计算功能进行计算机辅助设计,可以快速有效的设计数字滤波器,大大的简化了计算量,直观简便。
1.3带通滤波器
带通滤波器是指能通过某一频率范围内的频率分量、但将其他范围的频率分量衰减到极低水平的滤波器,与带阻滤波器的概念相对。
一个模拟带通滤波器的例子是电阻-电感-电容电路(RLCcircuit)。
这些滤波器也可以用低通滤波器同高通滤波器组合来产生。
除了电子学和信号处理领域之外,带通滤波器应用的一个例子是在大气科学领域,很常见的例子是使用带通滤波器过滤最近3到10天时间范围内的天气数据,这样在数据域中就只保留了作为扰动的气旋。
还有,许多音响装置的频谱分析器均使用此电路作为带通滤波器,以选出各个不同频段的信号,在显示上利用发光二极管点亮的多少来指示出信号幅度的大小。
带通滤波器是一种用来过滤时间离散信号的数字系统,通过对抽样数据进行数学处理来达到频域滤波的目的。
在高保真的信号处理,如数字音频、图像处理、数据传输、生物医学等领域得到广泛应用。
2滤波器设计工具
2.1基本功能
滤波器设计工具以MATLAB的计算环境和信号处理工具箱(SPTool)为基础。
主要功能包括:
仿真分析滤波器、FFT和IFFT计算、滤波器设计计算(包括自适应滤波器)、支持滤波器的频带变换。
操作该工具可以设计出满足各种性能指标的滤波器,并可方便的查看它们的各性能分析图形。
设计完成后,可以把其系数结果直接导出为MATLAB变量保存记录。
2.2基本操作
在安装了MATLAB的PC机上运行该软件,在其命令窗口输入FDATool便可打开该设计工具,如图1所示:
图1滤波器设计分析工具
Fig.1filterdesignanalysistools
FDATool界面总共分两大部分,一部分是designfilter,在界面的下半部,用来设置滤波器的设计参数,另一部分则是特性区,在界面的上半部分,用来显示滤波器的各种特性。
designfilter部分主要分为:
filtertype(滤波器类型)选项,包括lowpass(低通)、highpass(高通)、bandpass(带通)、bandstop(带阻)和特殊的fir滤波器。
designmethod(设计方法)选项,包括iir滤波器的butterworth(巴特沃思)法、chebyshevtypei(切比雪夫i型)法、chebyshevtypeii(切比雪夫ii型)法、elliptic(椭圆滤波器)法和fir滤波器的equiripple法、least-squares(最小乘方)法、window(窗函数)法。
filterorder(滤波器阶数)选项,定义滤波器的阶数,包括specifyorder(指定阶数)和minimumorder(最小阶数)。
在specifyorder中填入所要设计的滤波器的阶数(n阶滤波器,specifyorder=n-1),如果选择minimumorder则matlab根据所选择的滤波器类型自动使用最小阶数。
frenquencyspecifications选项,可以详细定义频带的各参数,包括采样频率fs和频带的截止频率。
它的具体选项由filtertype选项和designmethod选项决定,例如bandpass(带通)滤波器需要定义fstop1(下阻带截止频率)、fpass1(通带下限截止频率)、fpass2(通带上限截止频率)、fstop2(上阻带截止频率),而lowpass(低通)滤波器只需要定义fstop1、fpass1。
采用窗函数设计滤波器时,由于过渡带是由窗函数的类型和阶数所决定的,所以只需要定义通带截止频率,而不必定义阻带参数。
magnitudespecifications选项,可以定义幅值衰减的情况。
例如设计带通滤波器时,可以定义wstop1(频率fstop1处的幅值衰减)、wpass(通带范围内的幅值衰减)、wstop2(频率fstop2处的幅值衰减)。
当采用窗函数设计时,通带截止频率处的幅值衰减固定为6db,所以不必定义。
windowspecifications选项,当选取采用窗函数设计时,该选项可定义,它包含了各种窗函数。
3带通滤波器设计
3.1设计要求
在小电流接地系统中注入83.3hz的正弦信号,对其进行跟踪分析,要求设计一带通滤波器,滤除工频及整次谐波,以便在非常复杂的信号中分离出该注入信号。
参数要求:
96阶fir数字滤波器,采样频率1000hz,采用hamming窗函数设计。
3.2设计工具
本例中,首先在filtertype中选择bandpass(带通滤波器);
(1)在designmethod选项中选择firwindow(fir滤波器窗函数法),接着在windowspecifications选项中选取hamming;
(2)指定filterorder项中的specifyorder=95;
(3)由于采用窗函数法设计,只要给出通带下限截止频率fc1和通带上限截止频率fc2,选取fc1=70hz,fc2=84hz。
(4)设置完以后点击designfilter即可得到所设计的fir滤波器。
(5)通过菜单选项analysis可以在特性区看到所设计滤波器的幅频响应、相频响应、零极点配置和滤波器系数等各种特性。
设计完成后保存为1.fda文件。
在设计过程中,可以对比滤波器幅频相频特性和设计要求,随时调整参数和滤波器类型,以便得到最佳效果。
其它类型的fir滤波器和iir滤波器也都可以使用fdatool来设计。
3.3设计编程
MATLAB内部有丰富的函数可供调用,使用者只需要根据自己的需要查到所需要的函数名,那就可以直接调用使用了.不需要自己把函数详细的编写出来.使编写内部程序变的简单。
MATLAB信号工具箱主要提供了以下几种窗函数,如表1所示:
程序法只以hanning窗为示例,其他窗函数的程序大体相同,只是在window=hanning(N)和hn=fir1(N-1,wc,hanning(N))处要调自己的窗函数即可。
表1MATLAB窗函数
Tab.1MATLABwindowfunction
窗
窗函数
矩形窗
Boxcar
巴特利特窗
Barlett
三角窗
Triang
布莱克曼窗
Blackman
海明窗
Hamming
汉宁窗
Hanning
凯塞窗
Kaiser
切比雪夫窗
Chebwin
hanning窗设计程序:
wls=0.2*pi;
wlp=0.35*pi;
whp=0.65*pi;
wc=[wlp/pi,whp/pi];
B=wlp-wls;
N=ceil(8/0.15);
n=0:
N-1;
window=hanning(N);
[h1,w]=freqz(window,1);
figure
(1);
stem(window);
axis([06001.2]);
grid;
xlabel('n');
title('Hanning窗函数');
figure
(2);
plot(w/pi,20*log(abs(h1)/abs(h1
(1))));
axis([01-3500]);
grid;
xlabel('w/pi');
ylabel('幅度(dB)');
title('Hanning窗函数的频谱');
hn=fir1(N-1,wc,hanning(N));
[h2,w]=freqz(hn,1,512);
figure(3);
stem(n,hn);
axis([060-0.250.25]);
grid;
xlabel('n');
ylabel('h(n)');
title(‘Hanning窗函数的单位脉冲响应’);
figure(4);
plot(w/pi,20*log(abs(h2)/abs(h2
(1))));
grid;
xlabel('w/pi');
ylabel('幅度(dB)');
title(‘Hanning窗函数的单位幅频响应’);
4仿真结果与分析
4.1仿真结果
图2汉宁窗函数波形图
Fig.2hanningwindowfunctionwaveformfigure
汉宁窗(Hanning)函数时域形式表示为:
(公式1)
汉宁窗是典型的升余弦窗,在运行程序后得到Hanning窗函数波形类似余弦函数波形,基本符合汉宁窗函数的时域表达式。
图3汉宁窗函数频谱图
Fig.3hanningwindowfunctionspectrumdiagram
利用傅利叶变换的调制特性,由公式1可得汉宁窗的频谱函数为:
(公式2)
上式中,
(公式3)
当N远大于1时,上式可近似表示为:
(公式4)
这三部分之和使旁瓣互相抵消,能量更集中在主瓣。
在运行程序后得到的Hanning窗函数的频谱图中阻带衰减大约在-70db到-300db。
主瓣宽度也比旁瓣宽度大,能量更集中在主瓣。
图4汉宁窗设计带通滤波器的冲击响应图
Fig.4hanningwindowdesignbandpassfiltergraphofshockresponse
在matlab环境下运行汉宁窗设计程序,可得到Hanning窗函数的单位脉冲响应图,知道带通滤波器单位脉冲响应为偶对称。
图5汉宁窗设计带通滤波器的幅频响应图
Fig.5hanningwindowdesignband-passfiltertheamplitude-frequencyresponsefigure
运行程序后得到的Hanning窗函数的单位幅频响应图,清楚看到在频率0.35π-0.65π的信号会平稳输出,而在通带之外的频率的信号会大大衰减。
4.2结果分析
由仿真波形图可以得出以下几个方面的分析结果:
由图2可以看出,汉宁窗是典型的升余弦窗,基本符合汉宁窗函数的时域表达式,所加的窗口是余弦函数(类似余弦函数)。
由图3可以看出,汉宁窗函数的阻带衰减大约在-70dB到-300dB,也就是说旁瓣幅度远小于主瓣幅度,能量全部集中在主瓣,主瓣宽度也有所增加,效果比较明显。
由图4可以看出,汉宁窗设计的带通滤波器的单位冲击响应为偶对称,也就是说当N为偶数时,单位冲击响应序列为偶函数,这说明FIR带通滤波器相位是严格的线性关系。
由图5可以看出,汉宁窗设计的带通滤波器带通下限截止频率大约为0.35π,带通上线截止频率大约为0.65π,在通带频率之外的频率的信号的幅度将受到很大的衰减,以致信号不能通过滤波器。
根据以上的结果分析可以得到:
利用matlab设计的带通滤波器,经仿真成像后,与理论实际相符,本次设计结果符合设计要求。
利用matlab的强大运算功能,基于matlab信号处理工具箱的数字滤波器设计法可以快速有效的设计滤波器,设计方便、快捷,极大的减轻了工作量。
在设计过程中可以对比滤波器特性,随时更改参数,以达到滤波器设计的最优化,可以反映实际情况。
参考文献
[1]丁玉美,高西全.数字信号处理[M].第三版.西安:
西安电子科技大学出版社,2008,6.
[2]刘令普.数字信号处理[M].哈尔滨:
哈尔滨工业大学出版社,2002,4.
[3]邓重一.滤波技术的发展现状[J].中国仪器仪表.2004,2
(2):
1-4.
[4]王世一.数字信号处理[M].北京:
北京理工大学出版社,2005,6.
[5]郑南宁,程洪.数字信号处理[M].北京:
清华大学出版社,2007,9.
[6]刘正士,王勇,陈恩伟等.一种数字滤波器的设计方法及其应用[J].中国机械工程.2006,1,17
(1):
88-91.
[7]凌燮亭,秦巍,胡波.对数域积分电路的分析与应用[J].电子学报,2000,28
(2):
46-48.
[8]蔡理,马西奎.一种基于平衡式对数域积分器的高阶滤波器[J].固体电子学研究与进展,2002,22
(1):
68-71.
[9]赵录怀.高阶对数域滤波器设计的一种新方法[J].电工技术学报,1999,14(5):
27-30.
[10]WhiteSA.ApplicationsofDistributedArithmetictoDigitalSgnalProcessing[J].IEEEASSPMagazine,1989,6(3):
4210.
[11]R.Mahesh,A.P.Vinod,EdmundM-K.Lai,etal.FilterBankChannelizersforMulti-StandardSoftwareDefinedRadioReceivers[J].JournalofSignalProcessingSystems,2010,10,61(3):
251-387.
DesignofbandpassfilterusingMATLAB
Abstract:
Aimingatthetraditionalwayofthefilterdesignintheexisitingsituationoftheteachingmaterialabouttheprocessofdigitalsignal,thepaperpresentsadesignwaythatiseasierandmoreeffectivethroughthetoolofMatlab.
Conventionaldigitalfilterdesignprocessiscomplex,computingworkload,difficultiesinadjustmentoffiltercharacteristics,affectingitsapplication.ThispaperintroducesaMATLABSignalProcessingToolbox(SignalProcessingToolbox)quicklyandefficientlydesignformedbythesoftwareofconventionaldigitalfilterdesignmethods.ThisarticlepresentsuseMATLABlanguageforprogrammingandutilizationofsignalprocessingToolboxFDAToolforinterfacedesign.AfilterwasdesignedusingMATLAB.Youcanalwayscomparethedesignrequirementsandadjusttheparametersoffiltercharacteristics,visualsimpleandgreatlyreducedtheworkloadwillhelpfilterdesignoptimized.
Keywords:
bandpassfilter;MATLAB;designtool