专业技能实训报告题目基于Matlab的数字带通和高通滤波器的设计与仿真学院信息科学与工程学院专业通信工程班级通信学生学号2009指导教师二〇一三年一月四日济南大学实训报告目录1前言......................………………………………….….…………........................….….11.1数字滤波器基本概念...……………………………….………..................……..11.2数字滤波器的主要分类.......…………………………….……........................…11.3数字滤波器的主要应用….…………………………….….….......………………12数字滤波器的设计方法………..……………………………...…...............…..………32.1数字滤波器的工作原理………………………………………………………...…33利用Matlab实现FRI滤波器设计.................................................................................53.1窗函数法Matlab的实现.......................................................................................53.2利用窗函数法设计带通滤波器............................................................................53.3利用窗函数法设计高通滤波器.........................................................................,...9结语......................……………………………………….….……..............................…....12参考文献.........................…………………………………………………….…….………….…13济南大学实训报告--1--1前言1.1数字滤波器基本概念所谓数字滤波器,是指输入、输出均为数字信号,通过数值运算处理改变输入信号所含频率成分的相对比例,或者滤除某些频率成分的数字期间或程序。因此,数字滤波器的概念和模拟滤波器的概念相同,只是信号的形式和实现滤波的方法不同。正因为数字滤波器通过数值运算实现滤波,所以数字滤波器处理精度高、稳定、体积小、重量轻、灵活、不存在阻抗匹配问题,可以实现模拟滤波器无法实现的特殊滤波功能。由于数字滤波器是一个离散时间系统,应用数字滤波器处理模拟信号时,首先须对输入模拟信号进行限带、抽样和模数转换,同样可以使用数字滤波器对模拟信号进行滤波。数字滤波器是一种用来过滤时间离散信号的数字系统,通过对抽样数据进行数学处理来达到频域滤波的目的。根据其单位冲击响应函数的时域特性可以分为两类:无限冲激响应(IIR)滤波器和有限冲激响应(FIR)滤波器。与IIR相比,FRI实现是非递归的,总是稳定的;更重要的是,FRI滤波器在满足幅频响应要求的同时,可以获得严格的线性相位特性,因此,它在高保真信号处理,如数字音频、图像处理、数据传输、生物医学等领域得到广泛应用。1.2数字滤波器的主要分类数字滤波器有许多种类,但总的来说可以分为两大类即经典滤波器和现代滤波器。经典滤波器的特点:输入的信号中所需要的信号与不需要的信号分别占有不同的频率带,选择一个合适的选频滤波器把不需要的信号过滤掉,得到一个纯净的信号,从而达到滤波的效果。现代滤波器的特点:当输入的信号中各种信号掺杂在一起时,通过这种滤波器可以得到所需要的信号,达到滤波效果。比如维纳滤波器、卡尔曼滤波器、自适应滤波器等。经典滤波器从滤波特性上分类,可以分为低通、高通、带通和带阻等滤波器它可以是时不变的或时变的、因果的或非因果的、线性的或非线性的。应用最广的是线性、时不变数字滤波器以及Fir滤波器。数字滤波器从实现的网络结构或者从单位脉冲响应长度分类可分为无限长单位脉冲响应滤波器和有限长单位脉冲响应滤波器。1.3数字滤波器的主要应用(1)语音处理语音处理是最早应用数字滤波器的领域之一,也是最早推动数字信号处理理论发展的领域之一。(2)生物医学信号处理济南大学实训报告--2--数字滤波器在医学中的应用日益广泛,如对脑电图和心电图的分析、层析X射线摄影的计算机辅助分析、胎儿心音的自适应检测等。(3)雷达在现代雷达系统中,数字信号处理部分是不可缺少的,因为从信号的产生、滤波、加工到目标参数的估计和目标成像显示都离不开数字滤波技术。济南大学实训报告--3--2带通数字滤波器的设计方法2.1数字滤波器的工作原理数字滤波器的的数学表达式:y(n)=x(n)*h(n)(2.1)如果滤波器的输入输出信号都是离散信号,那么该滤波器的脉冲响应也一定是离散信号,这样的滤波器就成了数字滤波器。其频率特性为:()()*()jjjyexehe(2.2)其中()jye,()jxe分别是数字滤波器的输出序列和输入序列的频率响应,()jhe是数字滤波器的频率响应。可以看见按照输入信号的频率特性和处理信号的目的适当选择滤波器的频率响应,使得滤波后的输出信号满足设计性能要求。由于FIR数字滤波器具有严格的相位特性,对于信号处理和数据传输是很重要的。目前FIR滤波器的设计方法主要有三种:窗函数法、频率取样法和优化设计方法。常用的是窗函数法和切比雪夫等波纹逼近的最优化设计方法。其中利用窗函数法设计FIR滤波器的基本思路是:先给定频率响应函数,利用IDFT求出理想滤波器的单位响应在时域表达()dhn,从时域出发设计h(n)逼近理想()dhn。要想得到一个因果的有限长的滤波器单位抽样响应h(n),最直接的方法是将()dhn进行截断,即利用()()()dhnhnn截取为有限长因果序列。按照线性相位滤波器的要求,线性相位FIR数字低通滤波器的单位抽样响应h(n)必须是偶对称的。矩形窗设计的FIR低通滤波器,所设计滤波器的幅度函数在通带和阻带都呈现出振荡现象,且最大波纹大约为幅度的9%,这个现象称为吉布斯(Gibbs)现象。为了消除吉布斯效应,一般采用其他类型的窗函数,Matlab设计FIR滤波器有多种方法和对应的函数。窗函数设计法不仅在数字滤波器的设计中占有重要的地位,同时可以用于功率谱的估计,从根本上讲,使用窗函数的目的就是消除由无限序列的截短而引起的Gibbs现象所带来的影响。利用频率取样法的基本思路是:设所需滤波器的频率响应为()jdHe。现要求设计一个M阶的FIR滤波器h[k],使得()jdHe在M+1个取样点上,FIR滤波器的频率响应()jdHe与所需的频率响应()jHe相等,即济南大学实训报告--4--0()()[],0,1,...,mmMjjkjdkHeHehkemM(2.3)()jdHe由设计要求给定,h[k]需要通过设计来确定。如果M+1个方程是线性无关的,则可以通过求解M+1阶的线性方程得出FIR滤波器的h[k]。对m的一些特殊取样法,上式方程的解可以直接由IDFT得到。由于要求设计出的滤波器是实系数的线性相位FIR滤波器,所以()jdHe的取样值还需要满足线性相位滤波器的约束条件。利用优化设计方法设计等波纹FIR滤波器是指在FIR滤波器的阶数M固定的条件下,利用切比雪夫误差准则设计出的FIR滤波器的幅度响应在通带和阻带都会呈现等波纹的波动。所以这类滤波器称为等波纹FIR滤波器。等波纹FIR滤波器的设计方法是由Parks-McClellan提出。在解决问题过程中使用了数学优化中的Remez交换算法。济南大学实训报告--5--3利用Matlab实现FRI滤波器设计在利用Matlab设计FIR滤波器时,分别采用窗函数法、频率取样法和优化设计方法去设计所需的滤波器。在设计的过程中,用设计的滤波器对加有噪声的语音信号或不同频率叠加的正弦输入信号进行滤波,对比输入前后的图像,以此验证滤波器的性能。在程序绘制的图像中,有滤波器的特性图、输入信号的时域频域图和输出信号的时域频域图。3.1窗函数法Matlab的实现在窗函数法的Matlab实现中,程序中经常使用的函数有fir1和kaiserord。程序中fir1函数的用法:b=fir1(n,Wn,’ftype’,window)①n为滤波器的阶数②Wn为滤波器的截止频率,它是一个0到1的数。如果Wn是一个含有两个数的向量,则函数返回一个带通滤波器③ftype为滤波器的类型,ftype=’high’时,设计的是高通滤波器;ftype=’stop’时,设计的是带阻滤波器;没有此参数时,设计的是低通滤波器④window为指定的窗函数,矩形窗为boxcar(n),汉宁窗为hanning(n),海明窗为hamming(n),布莱克曼窗为blackman(n),凯撒窗为kaiser(n,beta),没有此参数时,默认为hamming窗程序中kaiserord函数的用法:[n,Wn,beta,ftype]=kaiserord(f,a,dev,Fs)①f是一个向量,为设计滤波器过渡带的起始点和结束点②a是一个向量,指定频率段的幅度值②dev是一个向量,长度和a相同,为各个通带和阻带内容许的幅度最大误差④n为能够满足要求的滤波器的最小阶数⑤Wn为滤波器的截止频率⑥ftype为根据待设计滤波器的要求得到的滤波器的类型3.2利用窗函数法设计带通滤波器设计要求:①使用Kaiser窗,采样频率8000Hz②通带截频0.325与0.5525,阻带截频0.25与0.6025③阻带衰减大于等于40dB,通带和阻带波纹0.01程序代码:Rs=0.01;fs=8000;%采样频率fcuts=[1000130022102410];a=[010];dev=Rs*ones(1,length(a));济南大学实训报告--6--[M,Wc,beta,ftype]=kaiserord(fcuts,a,dev,fs);%M为能够满足设计要求的滤波器的最小阶数,Wc为滤波器的截止频率点%第一个元素f为待设计滤波器的过渡带的起始点和结束点%第二个元素a指定第一个元素频率段的理想幅度值%第三个元素dev中的元素为各通带和阻带内允许的幅度最大误差M=mod(M,2)+M;window=Kaiser(M+1,beta);b=fir1(M,Wc,ftype,window);%输入的第一个参数是滤波器的阶数%第二个参数是滤波器的截止频率%第三个参数是滤波器的类型,stop为带阻滤波器%第四个参数是采用的窗函数[h,f]=freqz(b,1,512);%滤波器的幅频特性图%[H,W]=freqz(B,A,N)当N是一个整数时函数返回N点频率向量和幅频响应向量figure(1)plot(f*fs/(2*pi),20*log10(abs(h)))%参数分别是频率与幅值xlabel('频率/赫兹');ylabel('增益/分贝');title('滤波器的增益响应');f1=500;f2=1500;f3=2000;f4=3000;%待滤波正弦信号频率t=(0:200)/fs;%定义时间的步长s=sin(2*f1*pi*t)+sin(2*f2*pi*t)+sin(2*f3*pi*t)+sin(2*f4*pi*t);sf=filter(b,1,s);%使用filter函数对信号进行滤波figure(2)subplot(211)plot(t,s);%滤波前的信号图像xlabel('时间/秒');ylabel('幅度');title('信号滤波前时域图');subplot(212)Fs=fft(s,512);AFs=abs(Fs);f=fs/512*(0:255);plot(f,AFs(1:256));%滤波前的信号频