您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > IIR数字滤波――数字信号处理课程设计
1华北水利水电学院课程设计1.数字信号课程设计概述课程设计目的程设计教学所要达到的目的是:使学生进一步巩固数字信号处理的基本概念、理论、分析方法和实现方法;使学生掌握的基本理论和分析方法方面的知识得到进一步扩展;使学生能有效地将理论和实际紧密结合;增强学生软件编程实现能力和解决实际问题的能力。要求学生能够熟练地用Matlab等语言编写数字信号处理的应用程序;编程实现IIR数字滤波器和FIR数字滤波器;了解各种窗函数对滤波器特性的影响等,进一步明确数字信号处理的工程应用。2.课程设计内容及原理题目:基于matlab的IIR滤波器设计目标:(1)语音采集(2)设计滤波器,将采集的语音信号进行IIR滤波.(3)回放语音信号2.1butterworth低通滤波器的特性:所谓低通滤波器,就是只能让低频分量通过。在低通滤波器的设计中,有许多不同的逼近方法:巴特沃斯逼近,切比雪夫逼近,椭圆逼近方法等。其中,最简单的逼近为巴特沃斯逼近。巴特沃斯低通滤波器的平方幅度响应为2211ncHj其中,n为滤波器的阶数,cw为低通滤波器的截止频率。该滤波器具有一些特殊的性质:①对所有的n,都有当0w时,201Hj;2②对所有的n,都有当cww时,20.5cHjw;③2Hjw是的单调递减函数,即不会出现幅度响应的起伏;④当n时,巴特沃斯滤波器趋向于理想的低通滤波器;⑤在0w处平方幅度响应的各级导数均存在且等于0,因此2Hjw在该点上取得最大值,且具有最大平坦特性。图1展示了2阶、4阶、8阶巴特沃斯低通滤波器的幅频特性。可见阶数n越高,其幅频特性越好,低频检测信号保真度越高,过渡带变窄,即衰减加剧,但半功率点不变。图1巴特沃斯低通滤波器的幅频特性2.2IIR数字滤波器的性质无限长冲激响应(IIR)数字滤波器是数字滤器的一种,数字滤波器根据其冲激响应函数的时域特性,还包括有限长冲激响应(FIR)数字滤波器。IIR数字滤波器的特征是:①具有无限持续时间冲激响应;②需要用递归模型来实现,这可以从其差分方程00MNikikynbxniaynk得出,也可以从其系数函数为:10101MiiNkkbzHzaz得出。数字巴特沃思滤波器属于IIR滤波器,该类滤波器具有特定的性质和设计方法。目前比较成熟的IIR数字滤波器设计方法有两种:1)直接法目前所用的方法主要是:零极点累试法、频域幅度平方误差最小法和时域单位脉冲响应逼近法。直接法的最大优点在于可以设计任意幅频特征的滤波器。2)间接法,目前所用的3方法主要是:冲激响应不变法、阶跃响应不变法和双线性法。它们都是借助于已经成熟的现有低通滤波器原型进行设计,即对数字低通数字滤波器,先将数字低通滤波器的技术指标按希望的设计方法转换为模拟低通滤波器的技术指标,再按指定的模拟低通滤波器的类型设计模拟滤波器H(s),然后,将模拟滤波器的系统函数H(s)从s平面转换到z平面,得到数字低通滤波器的系统函数H(z);如所设计的数字滤波器为高通、带通或带阻滤波器,则可借助模拟滤波器的频带变换转换为低通模拟滤波器。由于直接法设计巴特沃思滤波器相对复杂,在不需要任意幅频特征的情况下,一般采用问接法,同时由于冲激响应不变法和阶跃响应不变法,从s平面转换到z平面的映射为多值映射,容易造成频谱混叠,故而本文采用不会产生频谱混叠的双线性变换法。2.3butterworth滤波器的双线性变换法设计设计IIR滤波器的任务就是寻求一个因果、物理上可实现的系统函数H(z)使其频率响应jwHe满足所希望得到的频域指标,即符合给定的通带截止频率、阻带截止、通带衰减和阻带衰减等指标。双线性变换法的基本步骤如下:(1)根据任务,确定性能指标:在设计之前,首根据工程实际的需要确定巴特沃思滤波器的技术指标:边界频率:pw,sw,cw;通带最大衰减p和阻带最小衰减s;(2)将数字滤波器的技术指标转换成模拟滤波器指标。双线性变换法的转换关系为:22tanTw,w为数字角频率,为模拟角频率,T为取样周期;(3)用模拟滤波器设计方法得到模拟巴特沃斯滤波器的传输函数H(s),这可借助巴特沃思滤波器相关的严格的设计公式、现成的曲线和图表得到;(4)映射实现:利用双线性变换法关系式11211zsTz将模拟巴特沃思滤波器H(s)转换成数字巴特沃思滤波器H(z);(5)用有限精度算法实现这个系统函数H(z),同时要确定该滤波器的结构,4因为如果在硬件上实现该滤波器必须考虑计算的复杂度、存储容量限制等因素,而用Matlab实现无此影响;(6)用合适的软、硬件技术实现该滤波器。3.课程设计具体过程3.1总体设计思路1语音信号的采集及频谱分析利用WINDOWSXP下的录音机,用单声道录制一段自己的声音,时间在2S内。然后MATLAB软件平台下,利用函数WAVREAD对语音信号进行采样,记住采样频率和采样点数(fs,n)。在MATLAB软件平台下,在3000HZ以上频段产生一个白噪声,叠加到采集的原始语音信号中,在一个窗口同时画出白噪声的时域波形及频谱,在另一个窗口同时画出叠加噪声前后语音信号的波形及频谱;2语音信号与干扰信号叠加后进行频谱分析通过扬声器可以明显听到原始语音信号下伴随较尖锐的干扰啸叫声。对原始语音信号和受噪声干扰的信号再进行FFT频谱分析。3设计数字滤波器和画出其频率响应给出个滤波器的性能指标:1)低通滤波器性能指标fb=1000HZ,fc=1200HZ,As=100dB,Ap=1dB2)高通滤波器性能指标fb=2800HZ,fc=3000HZ,As=100dB,Ap=1dB3)带通滤波器性能指标fb1=1200HZ,fc1=1000HZ,fb2=2800HZ,fc2=3000HZAs=100dB,Ap=1dB用窗函数法和双线性变换法设计上面要求的3种滤波器。在Matlab中,可以利用函数butter,cheby1和ellip设计IIR滤波器;利用Matlab中的函数freqz画出各滤波器的频率响应4用滤波器对信号进行滤波设计的个滤波器对采集信号进行滤波,1)利用自己设计的IIR数字滤波器分别对采集的信号进行滤波处理,在一个窗口同时画出滤波前后语音信号的波形及频谱。注释(对语音信号加入噪声后的频谱分析,在MATLAB中,FIR滤波器利用函数fftfilt对信号进行滤波,IIR滤波器利用filter对信号进行滤波)。5比较滤波前后语音信号的波形及频谱,并进行分析比较滤波前后语音信号的波形及频谱,对滤波器性能进行频谱分析。在一个窗口同时画出滤波前后语音信号的波形及频谱6回放语音信号5在Matlab中,函数sound可以对声音进行回放。其调用格式:sound(x,fs,bits);可以感觉滤波前后的声音有变化。7设计系统界面为了使编制的程序操作方便,设计处理系统的用户界面。在所设计的系统界面上可以选择滤波器的类型,显示滤波器的频率响应,选择信号等。3.2整体实现过程及分析3.2.1语音的采集在matlab软件平台下,利用wavread函数对语音信号进行采样,记住采样频率和采样点数。通过使用wavread函数,理解采样频率、采样位数等概念。wavread函数调用格式:y=wavread(file),读取file所规定的wav文件,返回采样值放在向量y中。[y,fs,nbits]=wavread(file),采样值放在向量y中,fs表示采样频率(hz),nbits表示采样位数。y=wavread(file,N),读取钱N点的采样值放在向量y中。y=wavread(file,[N1,N2]),读取从N1到N2点的采样值放在向量y中。对语音信号“hutaotune.wav”进行采样其程序如下:[y,fs,nbits]=wavread('hutaotune.wav')y有20000个采样值,fs=8000Hz,nbits=8.由于在windowxp下面录音是单声道,8000Hz,采样8位。从matlab获取的跟实际相符。63.2.2噪声的产生产生一个余弦4000Hz的噪声t=linspace(0,0.5,n);%t=0:0.5/n-1:0.5;noise=(0.3*cos(2*pi*4000*t))';其中n就是语音信号的采样个数,为了保证噪声和语音采样个数相同,用linspace也产生相同的采样的。noise是时域的函数。用plot直接可以画出用fft(noise)快速计算噪声频谱。3.2.3语音与噪声叠加y=x+noise;y就是叠加后的。用plot直接画出加噪后的时域波形,用fft可以转化频域。73.2.4低通butterworth设计fs=8000;fb=1000;fc=1200;As=100;Ap=1;Fp=2*pi*fb/fs;Fs=2*pi*fc/fs;wp=tan(Fp/2);ws=tan(Fs/2);[N,wc]=buttord(wp,ws,Ap,As,'s');[num,den]=butter(N,wc,'s');[numd,dend]=bilinear(num,den,0.5);[h,w]=freqz(numd,dend);plot(w*8000*0.5/pi,abs(h));title('IIR低通滤波器');grid;经过调试发现滤波器波形滤波效果不好,将As=100改为As=55滤波器效果比较好:83.2.5用低通butterworth滤波器对信号进行滤波x=wavread('hutaotune.wav');n=length(x);t=linspace(0,1,n);noise=(0.3*cos(2*pi*4000*t))';y=x+noise;subplot(2,2,1);plot(y);title('滤波前的时域波形');Y=fft(y,512);subplot(2,2,2);plot(abs(Y));title('滤波前的频域波形');fs=8000;fb=1000;fc=1200;As=50;Ap=1;Fp=2*pi*fb/fs;Fs=2*pi*fc/fs;wp=tan(Fp/2);ws=tan(Fs/2);[N,wc]=buttord(wp,ws,Ap,As,'s');%低通巴特沃斯[num,den]=butter(N,wc,'s');[numd,dend]=bilinear(num,den,0.5);%双线性变换法[h,w]=freqz(numd,dend);%计算频率响应z=filter(numd,dend,y);Z=fft(z,512);subplot(2,2,3);plot(z);title('滤波后的时域波形');subplot(2,2,4);plot(abs(Z));title('滤波后的频域波形');9滤波前后时域及频域的波形对比:可以发现低通butterworth效果比较好,几乎把4000Hz余弦噪声滤去。通过研究noise=(0.3*cos(2*pi*4000*t))'如果把幅度改大后会把语音信号覆盖。但是滤波后,还能获得语音信号。3.2.6回放语音信号在Matlab中,函数sound可以对声音进行回放。其调用格式:sound(x,fs,bits);可以感觉滤波前后的声音有变化。比较前后两次声音发现有些区别,看看前后波形可以发现微妙变化。3.2.7GUI设计系统界面在matlab界面上单击‘file’中的‘new’的gui跳出界面点击‘ok’如下:在可视化界面可以添加按钮,在按钮可以设计参数和添加程序。然后运行就10能完成相应按钮的功能。设计后的效果图(在附件里面)。4.课程设计总结通过对语音信号处理的课程设计,我进一步理解了滤波器,之前实验只是设计滤波器,没有感觉到滤波器真正的作用。通过对语音信号的处理加深了滤波器的作用。同时在这次试验中我做了butterworth及双线性变换法的低通,带通,高通,通过对比发现低通滤波效果比较好,这跟理论一致。同时自学了一下GUI可视化界面,发
本文标题:IIR数字滤波――数字信号处理课程设计
链接地址:https://www.777doc.com/doc-3995306 .html