1、基于MATLAB的滤波器设计本科毕业设计论文目 录1 任务和要求 12 MATLAB软件的简述 23 基于MATLAB的模拟滤波器设计 23.1 利用MATLAB确定低通滤波器的阶数和幅频特性曲线 23.2 利用MATLAB设计带通滤波器 24 基于MATLAB的数字滤波器设计 34.1 FIR数字滤波器设计原理 34.2 窗函数法设计及MATLAB实现 44.3 程序设计法 44.4 IIR数字滤波器的设计 65 设计总结 7参考文献 91 任务和要求(1)任务:运用MATLAB软件针对性地进行实例分析,设计巴特沃斯模拟滤波器和切比雪夫模拟滤波器,对于数字滤波器通过FIR滤波器和IIR滤波器
2、实例,使其绘制出相应的图形。 (2)基本要求 了解并掌握MATLAB软件。 利用MATLAB确定低通滤波器的阶数和幅频特性曲线。 利用MATLAB设计带通滤波器。 在数字滤波器的设计中,通过FIR滤波器和IIR滤波器的实例,绘制出相应的图形。2 MATLAB软件的简述MATLAB软件具有很强的开放性和适应性,是国际公认的优秀科技应用软件,是计算机辅助分析与设计、算法研究和应用开发的基础工具和首选平台,是目前科学研究领域最流行的应用软件,其特点概括为:(1)高效的数字计算方法及符号计算功能,使用户从繁杂的数学运算分析中解脱出来。(2) 完备的图形处理功能,实现计算结果和编程的可视化。(3) 友好
3、的用户界面及接近数学表达式的自然化语言,使学习者易于学习和掌握。(4) 功能丰富的应用工具箱,为用户提供了大量方便而实用的处理工具。(5)SIMULINK动态建模与仿真系统,丰富而功能强大的器件库,提供了实时方便的仿真手段。MATLAB软件是由美国MATHWORKS公司推出的用于数值计算和图形处理的科学计算系统环境。MATLAB是英文Matrix LABORUTORY(矩阵实验室)的缩写。是现今国际公认的最优秀的科技应用软件,它具有强大的数值计算和工程运算功能、符号计算功能和科学数据可视化能力。广泛应用于数值计算、图形分析、过程控制、系统识别、实时控制和动态仿真等领域。成为大学生、硕士生和博士
4、生必须掌握的基本技能。同时,MATLAB也被研究单位和工业部门广泛应用,使科学研究和解决各种具体问题的效率大大提高。MATLAB集成环境主要包括五个部分2:MATLAB语言、MATLAB工作环境、句柄图形、MATLAB数学函数库和数学建模、小波分析、MATLAB API(App LICATION Program Interface)。MATLAB语言是以数组为基本数据单位,包括控制流程语句、函数、数据结构、输人输出及面向对象等特点的高级语言。利用SIMULINK对系统进行仿真与分析3,在进入虚拟实验环境后,不需要书写代码,只需使用鼠标拖动库中的功能模块并将它们连接起来,再按照实验要求修改各元器
5、件的参数。通过虚拟实验环境建立实验仿真电路模型,可使一些枯燥的电路变得有趣味,复杂的波形变得形象生动,使得各种复杂的能量转换过程比较直观地呈现。3 基于MATLAB的模拟滤波器设计3.1利用MATLAB确定低通滤波器的阶数和幅频特性曲线设计要求: 模拟信号输入滤波器, 要求在50Hz处的衰减为1dB, 在400Hz处的最小衰减为60dB带内增益为4, 通带内无波纹, 而且要减小截止频率后波形的起伏。根据对设计要求的分析,低通滤波器采用Butterworth滤波器, 因为它具有较平坦的幅频特性, 而且其元件值比较合乎实际、对精度要求稍宽。下面利用MATLAB 确定该低通滤波器的阶数, 并画出其幅
6、频特性(图1),程序代码如下4:Wp= 50*2*pi;Ws=400*2*pi;Rp=1;Rs=60;N,Wn=buttord(Wp,Ws,Rp,Rs,s)Fc=Wn/(2*pi) ;b,a=butter(N,Wn,s);w=linspace(1,800,10000)*2*pi;H=freqs(b,a,w);magH =abs(H);plot(w/(2*pi),20*log10(magH) ;x label( 频率(Hz);y label( 幅度(dB);title( 幅频特性);运行结果:N=4Wn=446.9304 图1 4阶Butterworth滤波器的幅频特性由图1可以看出, 由MAT
7、LAB所设计的5阶Butterworth滤波器波形在通带内平直、没有波纹, 阻带内陡降, 符合我们对滤波特性的实际要求, 所以滤波器的阶数选为4阶。在MATLAB中,用N,Wn=buttord(Wp,Ws,Rp,Rs,s)语句实现Butterworth滤波器阶数和边缘频率的确定;b,a=butter(N,Wn,s)语句来实现Butterworth滤波器的设计。其中Wp为通带截止频率;Rp为通带截止频率处的衰减;Ws为阻带截止频率;Rs为阻带截止频率处的衰减; b,a是滤波器传递函数多项式的系数;n为滤波器的阶数;Wn为截止频率;s表示模拟滤波器的。3.2 利用MATLAB设计带通滤波器带通滤波
8、器是指能通过某一频率范围内的频率分量、但将其他范围的频率分量衰减到极低水平的滤波器,与带阻滤波器的概念相对。它是一种用来过滤时间离散信号的过滤系统。设计高通、带通、带阻滤波器的传统方法是: 根据对高通、带通、带阻滤波器的特性指标要求, 导出相应的低通原型的指标来, 然后确定低通原型的传递函数H(s) ,再根据一定变换关系得出高通、带通、带阻滤波器的传递函数。而用MATLAB可以像设计低通滤波器一样直接得出高通、带通、带阻滤波器的参数和特性曲线。设计一带通滤波器, 设计要求为: 通带频率2 3 kHz、两边的过渡带宽为0.5 kHz、通带纹波为1dB、阻带衰减大于100dB, 并画出幅频特性曲线
9、5(如图2所示)。程序如下:wp=2000 3000*2*pi;ws=1500 3500*2*pi;Rp=1;Rs=100;N,Wn = buttord(wp,ws,Rp,Rs,s);%计算阶数和截止频率Fc= Wn/( 2* pi);b,a=butter(N,Wn,s);%计算滤波器传递函数多项式系数w=linspace(1,4000,1000)*2*pi;H=freqs(b,a,w);magH=abs(H);phaH=unwrap(angle(H) );plot(w/2*pi),20*log10(magH),b);xlabel(频率/Hz);ylabel(幅度/dB);grid on运行结
10、果:N=22Wn=1.0e+004*1.9070 图2 巴特沃思带通滤波器的幅频特性因此该带通滤波器的阶数为N=224 基于MATLAB的数字滤波器设计数字滤波器又分为无限冲击响应数字滤波器(IIR)和有限冲击响应数字滤波器(FIR),在此举例基于MATLAB的FIR滤波器的设计和IIR滤波器的设计来讨论数字滤波器的设计。4.1 FIR数字滤波器设计原理FIR 数字滤波器可以用下面的差分方程来描述6其中x(n)是输入序列,y(n)是输出序列,h(n)是系统的单位脉冲响应。由于其采用卷积的方法得到输出,故可以采用快速算法FFT进行卷积计算,提高信号处理速度。FIR 数字滤波器满足线性相位的条件是
11、其乘法器的系数关于中点对称,又因为其结构无反馈的回路,所以是无条件的稳定系统。4.2 窗函数法设计及MATLAB实现FIR 滤波器目前常用的设计方法有窗函数法和频率采样法,窗函数法是从时域进行设计,而频率采样法是从频域进行设计。窗函数法由于简单、物理意义清晰,因而得到了较为广泛的应用。窗函数法设计的基本思想是:首先根据技术指标要求,选取合适的阶数N和窗函数的类型,使其幅频特性逼近理想滤波器幅频特性。其次,因为理想滤波器的是无限长的,所以需要对进行截断,数学上称这种方法为窗函数法1。其中是希望逼近的滤波器的单位脉冲响应,是希望逼近的滤波器的幅频特性,是所设计的滤波器的单位脉冲响应,是窗函数。在截
12、断的过程中要保证FIR滤波器的稳定性与线性相位的特性。由于截断效应使所设计滤波器的幅频特性存在误差,称之为吉布斯效应。最后,验证所设计的滤波器是否满足要求,若不满足,重新设计。常用的窗函数有矩形窗、三角窗、汉宁窗和凯塞窗等。窗函数的选择一般要满足以下三个条件7:(1)具有较低的旁瓣幅度,尤其是第一旁瓣幅度。(2)旁瓣幅度下降速度要快,以利于增加阻带衰减。(3)主瓣宽度要窄,以获得较陡的过渡带。FIR 滤波器的设计任务是选择有限长度的 h(n), 使函数H(ej)满足技术要求。本文将针对一个含有 1000Hz 和 2000Hz 的正弦波信号, 设计一个FIR低通滤波器。参数要求: 采样频率 FS
13、=8000Hz, 通带为 01200Hz, 阻带16004000Hz, 通带波纹为 1%,阻带波纹 10%。下面将利用程序设计法, SPTool 设计法和 FDA-Tool 设计法对上述滤波器进行设计。4.3 程序设计法 在 MATLAB 下设计 FIR 滤波器有多种函数, 如 fir1, fir2, fir ls, remez, fircls, firclsl, cremez, firrcos 。下面以 remez 函数设计滤波器8。 程序如下:Fs=8000; %采样频率f=1200 1600;a=1 0;dev=0.01 0.1;n,fo,ao,w=remezord(f,a,dev,Fs
14、); %估计滤波器的参数b=remez(n,fo,ao,w); %用 remez 函数设计滤波器freqz(b,1,1024,Fs); %滤波器的频率响应, 如图 1t=(0:100)/Fs;x=sin(2*pi*t*1000)+sin(2*pi*t*2000); %设置输入信号 xx1=filter(b,1,x); %对信号 x 进行滤波,得输出信号 x1figuresubplot(211);plot(t,x);grid;subplot(212);plot(t,x1);grid;程序运行结果如图3,图4所示:图3 上图为幅频特性,下图为相频特性 图4 上图为输入信号x,下图为输出信号x1 4
15、.4 IIR数字滤波器的设计IIR数字滤波器冲激响应无限宽,与模拟滤波器相匹配。因此可采取在模拟滤波器设计的基础上进一步变换的方法设计IIR滤波器,即通过已知的模拟滤波器系统的系统函数H(s)来设计数字滤波器的系统函数H(z),主要是通过脉冲响应不变法或双线性变换法完成s平面到Z平面的变换。通过典型的模拟滤波器(如巴特沃斯滤波器、切比雪夫滤波器等)可实现一定参数要求的数字滤波器。IIR数字滤波器的设计具体步骤9:(1)按照既定规则将数字滤波器技术指标转为模拟低通滤波器技术指标。(2)以转换后的技术指标为依据设计模拟低通滤波器H(s)(传递函数) 。(3)再按照一定规则将H(s)转换成H(z)(
16、数字滤波器的传递函数)。若设计的是高通、带通或带阻滤波器,还需进行以下步骤:将高通、带通或带阻数字滤波器的技术指标转换为低通模拟滤波器的技术指标, 然后设计出低通H(s), 再将H(s)转换为H(z)。 (1)程序如下10:wp0=0.5*pi; wp1=0.4*pi; wp2=0.6*pi; Ap=3; ws2=0.7*pi; As=15;T=5*pi*10(-6);% 用双线性变换法设计滤波器% 频率预畸变ws1=wp0-(ws2-wp0) ;wc1=(2/T)*tan(wp1/2); wc2=(2/T)*tan(wp2/2);wr1=(2/T)*tan(ws1/2); wr2=(2/T)
17、*tan(ws2/2);w0=(2/T)*tan(wp0/2);B=wc2-wc1;% 将指标转换成归一化模拟低通滤波器的指标nowr1=(wr12)-(w02)/(B*wr1);nowr2=(wr22)-(w02)/(B*wr2);nowc1=(wc12)-(w02)/(B*wc1);nowc2=(wc22)-(w02)/(B*wc2);% 设计归一化的模拟低通滤波器if(abs(nowr1)-abs(nowr2)0nowr=abs(nowr2);elsenowr=abs(nowr1);endnowc=1;N=buttord(nowc,nowr,Ap,As,s);bLP,aLP=butter
18、(N,nowc,s);bBP,aBP=lp2bp(bLP,aLP,w0,B);% 用双线性变换法转换成数字滤波器Fs=1/T;b,a=bilinear(bBP,aBP,Fs);w=linspace(0,pi,500) ;h=freqz(b,a,w );plot(w,20*log10(abs(h);axis(0,pi,-120,20);grid;xlabel(frequency ( rad);ylabel(gain( db) ;sys=tf(b,a,T) (2)其图形如图5所示: 图5 MATLAB程序设计法仿真波形5 设计总结课程设计通过利用MATLAB来设计数字滤波器和模拟滤波器,对于不同的
19、设计要求, 只需修改程序中的参数, 运行后即可得到相应的阶数和截止频率, 避免了复杂的运算及查表,使得滤波器的设计与实现趋于方便。其中给出了巴特沃斯滤波器低通滤波器和巴特沃斯带通滤波器的实现程序、FIR数字滤波器的实现程序、IIR数字滤波器的实现程序以及各种滤波实现的滤波图形。MATLAB软件使得工程设计中滤波器技术更加趋于完善,通过论文设计掌握了MATLAB的基本使用方法。参考文献1 郑君里.应启衍.杨为理.信号与系统M.北京:高等教育出版社,2000.2 张维玺.巴特沃斯数字陷波滤波器的设计M.北京:现代电子技术出版社,2002.3 郑阿奇.MATLAB实用教程M.浙江:浙江电子出版社,2003. 4 姜春玲.史玲.基于MATLAB的模拟滤波器的设计M.山东:山东交通学院学报,2004.5 张春生.钱萌.MATLAB在数字滤波器设计中的应用探索M.北京:现代电子技术出版社,2008.6 林炜鹏.基于MATLAB的FIR数字滤波器的设计M.广东:广东科技出版社,2009.7 周学军.基于MATLAB的模拟滤波器的设计与仿真M.陕西:西安电子科技大学出版社,2010.
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1