数字信号处理课程设计报告_第1页
数字信号处理课程设计报告_第2页
数字信号处理课程设计报告_第3页
数字信号处理课程设计报告_第4页
数字信号处理课程设计报告_第5页
已阅读5页,还剩20页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课程设计报告书数字信号处理课程设计报告书基于matlab对语音信号进行频谱分析及滤波学 院: 专 业: 设 计 者: 学 号: 设计周数: 完成日期: 目录目录2一、课程设计目的2二、课程设计题目3三、课程设计题目描述和要求3五、课程设计流程5六、基于matlab的滤波器设计结果分析18八、设计经验总结4七、参考资料及网址4八、附录4作 者 钟伟雄机 构 广东工业大学在校本科生摘要:数字信号处理是通信工程专业的一门相当重要的学科,对日后就业和科研有重大意义,通过matlab,我们可以清晰地理解数字信号处理中难以理解的一面,对理论的知识加以深化。关键字:matlab 数字信号处理 gui 频谱

2、相位 滤波器一、课程设计题目应用matlab对语音信号进行频谱分析及滤波二、课程设计目的数字信号处理是一门以算法为核心,理论和实践性较强的学科。是电子信息工程、通信工程专业、电子信息科学与技术专业的一门重要的专业技术基础课。数字信号处理课程是在学习完数字信号处理的相关理论后,进行的综合性训练课程,其目的是:1. 使学生进一步巩固数字信号处理的基本概念、理论、分析方法和实现方法;2. 增强学生应用matlab语言编写数字信号处理的应用程序及分析、解决实际问题的能力;三、课程设计内容描述和要求为了巩固所学的数字信号处理理论知识,使学生对信号的采集、处理、传输、显示和存储等有一个系统的掌握和理解,安

3、排了以下的课程设计的内容:录制一段个人自己的语音信号,并对录制的信号进行采样;画出采样后语音信号的时域波形和频谱图;给定滤波器的性能指标,采用窗函数法和双线性变换设计滤波器,并画出滤波器的频率响应;然后用自己设计的滤波器对采集的信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化;回放语音信号;最后,设计一个信号处理系统界面。下面对各步骤加以具体说明。21语音信号的采集利用windows下的录音机,录制一段自己的话音,时间在1 s内。然后基于matlab软件平台下,利用函数x,fs,bits = wavread(filename)对语音信号进行采样,记住采样

4、频率和采样点数。通过wavread函数的使用,理解采样频率、采样位数等概念。22语音信号的频谱分析首先播放读入的语音信号,画出语音信号的时域波形;然后调用fft函数对语音号进行快速傅里叶变换,得到信号的频谱特性,调用plot,从而加深对频谱特性的理解。23设计数字滤波器和画出其频率响应给出各滤波器的性能指标: (1)低通滤波器性能指标fb1 000 hz,fc1 200 hz,as100 db,ap1 db。(2)高通滤波器性能指标fc4 800 hz,fb5 000 hz as100 db,ap1 db。(3)带通滤波器性能指标fb11 200 hz,fb23 000 hz,fc11 000

5、 hz,fc23 200 hz,as100 db,ap1 db。要求用窗函数法和双线性变换法设计上面要求的3种滤波器。在matlab中,可以利用函数fir1设计fir滤波器,可以利用函数butte,cheby1和ellip设计iir滤波器;利用matlab中的函数freqz画出各滤波器的频率响应。24用滤波器对信号进行滤波要求用自己设计的各滤波器分别对采集的信号进行滤波,在matlab中,fir滤波器利用函数fftfilt对信号进行滤波,iir滤波器利用函数filter对信号进行滤波。25比较滤波前后语音信号的波形及频谱要求在一个窗口同时画出滤波前后的波形及频谱。26回放语音信号在matlab

6、中,调用函数sound对声音进行回放。其调用格式:sound(x,fs,bits);可以感觉滤波前后的声音有变化。27设计系统界面为了使编制的程序操作方便,设计处理系统的用户界面。在所设计的系统界面上可以选择滤波器的类型,滤波方式,输入滤波器的参数,显示滤波器的频率响应,选择音频信号等。这里选用matlab的gui工具进行界面设计。四、课程设计进度安排序号设计内容所用时间1熟悉matlab程序设计方法,了解数字信号处理工具箱使用1天2分析题目,设计程序框图,编写程序代码1天3上机调试程序,修改并完善设计,并完成设计报告1天合 计3天五、课程设计基本流程51熟悉matlab基本操作,基本语法,以

7、及gui界面设计中各控件的调用方式。matlab是一款功能超强的数学软件,应用于各个行业。而其基本操作却很大众化,操作起来很人性化。其中所附带的gui面向对象的友好编程方式更便于学术交流和设计开发。52熟悉各种滤波器设计方案以及和收集与滤波器相关的matlab函数及其调用格式。一iir数字滤波器(一)iir数字滤波器的传递函数及特点设iir滤波器的输入序列为x(n),则iir滤波器的输入序列x(n)与输出序列y(n)之间的关系可以用下面的方程式表示:其中,和是滤波器的系数,其中中至少有一个非零。与之相对应的差分方程为:由传递函数可以发现无限常单位冲激响应滤波器有如下特点:a.单位冲激响应h(n

8、)是无限长的。 b.系统传递函数h(z)在有限z平面上有极点存在。c.结构上存在着输出到输入的反馈,也就是结构上是递归型的。(二) iir数字滤波器的设计与实现iir数字滤波器的设计有多种方法,如频率变换法、数字域直接设计以及计算辅助设计等。下面只介绍频率变换设计法。首先考虑由模拟低通滤波器到数字低通滤波器的转换,其基本的设计过程如下:a.将数字滤波器的技术指标转换为模拟滤波器的技术指标;b.设计模拟滤波器g(s);c.将g(s)转换成数字滤波器h(z);在低通滤波器的设计基础上,可以得到数字高通、带通、带阻滤波器的设计流程如下:a.给定数字滤波器的设计要求(高通、带阻、带通);b.转换为模拟

9、(高通、带阻、带通)滤波器的技术指标;c.转换为模拟低通滤波器的指标;d.设计得到满足第三步要求的低通滤波器传递函数;e.通过频率转换得到模拟(高通、带阻、带通)滤波器;f.变换为数字(高通、带阻、带通)滤波器。(三)在matlab中设计iir滤波器的方法及其它们所用到的函数如表所示。表1. 基于matlab中设计iir滤波器的方法列表方法描述函数模拟原型法采用经典低通滤波器作为连续域上的设计模型,通过频率变换得到iir数字滤波器,最后进行离散化处理完整设计函数:beself,butter,cheby1,cheby2,ellip滤波器的阶估计函数:buttord,cheb1ord,cheb2o

10、rd,ellipord低通模拟滤波器原型函数:beselap,buttap,cheb1ap,cheb2ap,ellipap频域变换函数:lp2bp,lp2bs,lp2hp,lp2lp其他函数:bilinear,impinvar直接设计方法直接在离散时域上估计线性的幅度响应yulewalk通用butterworth设计方法使用butterworth设计低通数字滤波器maxflat参数建模方法寻找接近于所需要设计的滤波器的通用原型时域上的建模函数:lpc,prony,stmcb频域上的建模函数:invfreqs,invfreqz 表2 频率转换函数列表频率转换转换函数低通到低通numt,dent=

11、lp2lp(num.den,w0)at,bt,ct,dt=lp2lp(a,b,c,d,w0)低通到高通numt,dent=lp2hp(num.den,w0)at,bt,ct,dt=lp2hp(a,b,c,d,w0)低通到带通numt,dent=lp2bp(num.den,w0)at,bt,ct,dt=lp2bp(a,b,c,d,w0)低通到带阻numt,dent=lp2bs(num.den,w0)at,bt,ct,dt=lp2bs(a,b,c,d,w0)(四)标准数字滤波器设计函数matlab提供了一组标准的数字滤波器设计函数,大大简化了滤波器的设计过程。butter功能:butterwort

12、h模拟/数字滤波器设计格式:b,a=butter(n,wn,ftype,s)b,a=butter(n,wn,ftype)说明:选项中加入s用于设计各种模拟butterworth滤波器;不加设计各种数字butterworth滤波器ftype为缺省,设计低通滤波器ftypehign,设计高通滤波器ftypestop,设计带阻滤波器【实例1】设计一个5阶butterworth数字高通滤波器,阻带截止频率为250hz。设采样频率为1000hz。源代码如下:b,a=butter(5,250/500,high)z,p,k=butter(5,250/500,high)freqz(b,a,512,1000)程

13、序运行后,产生结果如下所示。b = 0.0528 -0.2639 0.5279 -0.5279 0.2639 -0.0528a = 1.0000 -0.0000 0.6334 -0.0000 0.0557 -0.0000z = 1 1 1 1 1 p = 0.0000 + 0.7265i 0.0000 - 0.7265i 0.0000 + 0.3249i 0.0000 - 0.3249i 0.0000 k = 0.0528图1 5阶butterworth数字高通滤波器cheby1、cheby2功能:chebyshevi、chebyshevii型模拟/数字滤波器设计格式:b,a= cheby1(

14、n,rp,wn,ftype,)b,a= cheby2(n,rs,wn,ftype)【实例2】设计一个7阶chebyshevii型数字低通滤波器,截止频率为3000hz,rs30db。设采样频率为1000hz。解:源程序如下:b,a=cheby2(7,30,300/500);z,p,k=butter(5,250/500,high);freqz(b,a,512,1000) 程序运行后,产生如图62所示的波形。图2 7阶chebyshevii型数字低通滤波器(五) 冲激响应不变法一般来说,在要求时域冲激响应能模仿模拟滤波器的场合,一般使用冲激响应不变法。冲激响应不变法一个重要特点是频率坐标的变换是线

15、性的,因此如果模拟滤波器的频响带限于折叠频率的话,则通过变换后滤波器的频响应可不失真的反映原响应与频率的关系。【实例3】设计一个中心频率为500hz,带宽为600hz的数字带通滤波器,采样频率为1000hz。解:源代码如下:z,p,k=buttap(3);b,a=zp2tf(z,p,k);bt,at=lp2bp(b,a,500*2*pi,600*2*pi);bz,az=impinvar(bt,at,1000); %将模拟滤波器变换成数字滤波器freqz(bz,az,512,whole,1000)程序运行后,产生如图63所示的波形。图3 用冲激响应不变法设计数字低通滤波器(六)双线性变换法与冲激

16、响应不变法比较,双线性变换的主要优点是靠频率的非线性关系得到s平面与z平面的单值一一对应关系,整个值对应于单位圆一周。所以从模拟传递函数可直接通过代数置换得到数字滤波器的传递函数。【实例4】设计一个截止频率为200hz的数字低通滤波器,采用频率为1000hz。解:源代码如下:z,p,k=buttap(3);b,a=zp2tf(z,p,k);bt,at=lp2lp(b,a,200*2*pi);bz,az=bilinear(bt,at,1000);freqz(bz,az,512,1000)结果如图64所示:bz = 0.0753 0.2259 0.2259 0.0753az = 1.0000 -0

17、.8266 0.5154 -0.0865图4 用双线性变换法设计数字低通滤波器【实例5】基于butterworth模拟滤波器原型,使用双线性转换设计数字滤波器,其中参数指标为:通带截止频率: 通带波动值:阻带截止频率: 阻带波动值:解:首先确定滤波器的阶数n,同时根据确定0.5。接着使用bilinear进行双线性转换,最后绘制在频域上的各种图像,其源代码如下:数字滤波器指标wp=0.2*pi;ws=0.3*pi;rp=1;as=15;将数字滤波器指标反转变化为模拟滤波器的参数t=1;fs=1/t;omegap=(2/t)*tan(wp/t);omegas=(2/t)*tan(ws/t);ep=

18、sqrt(10(rp/10)-1);ripple=sqrt(1/(1+ep*ep);attn=1/(10(as/20);butterworth原型模拟滤波器的设计cs,ds=afd_butt(omegap,omegas,rp,as);双线性变换b,a= bilinear(cs,ds,t,fs);频域图像的绘制freqz(b,a);程序运行后,产生4阶的butterworth数字滤波器,频率响应如图5所示的波形。图5 4阶butterworth数字滤波器二fir低通数字滤波器(一)设计原理如果系统的冲激响应为已知,则系统的输入/输出关系为:对于低通滤波器,只要设计出低通滤波器的冲激响应函数,就可

19、以由上式得到系统的输出了。假设所希望的数字滤波器的频率响应为,它是频域的周期函数,周期为2,那么它与相对应的傅立叶系数为以为冲激响应的数字滤波器将具有频域响。但是将作为滤波器脉冲响应有两个问题:(1) 它是无限长的,与fip滤波器脉冲响应有限长这一前提不一致(2) 它是非因果的,对此,要采取以下的措施,(1) 将截短 (2)将其往右平移,由此得到的实际频域响应,与理想频域响应相近,但不完全一致。理论证明上述现象是对进行简单截短处理的必然结果,一般称为吉布斯现象,为尽可能的减少吉布斯现象,应对进行加窗截取,即以作为fir滤波器的系数。常用的窗函数有矩形窗、海明窗和布莱克曼窗等。(二)用窗函数法设

20、计fir滤波器matlab设计fir滤波器有多种方法和对应的函数,见表71。表71 matlab设计fir滤波器的方法和函数方法描述函数窗方法使用窗函数和逆傅立叶变换实现fir1,fir2,kaiserord等多带方法包含子带频率域firls,remez等最小二乘法使用最小二乘法将整个频率域上的错误几率压缩到最小fircls ,fircls1等任意响应法使用任意响应,包括非线性相位以及复滤波器cremez等余弦法使用三角函数的低通响应firrcos等窗函数方法不仅在数字滤波器的设计中占有重要的地位,同时可以用于功率谱的估计,从根本上讲,使用窗函数的目的就是消除由无限序列的截短而引起的gibbs

21、现象所带来的影响。窗函数设计线性相位fir滤波器步骤如下:(1) 确定数字滤波器的性能要求,临界频率,滤波器单位脉冲响应长度n(2) 根据性能要求,合理选择单位脉冲响应h(n)的奇偶对称性,从而确定理想频率响应的幅频特性和相频特性(3) 求理想单位脉冲响应,在实际计算中,可对采样,并对其求idft的,用代替(4) 选择适当的窗函数w(n),根据求所需设计的fir滤波器单位脉冲响应(5) 求,分析其幅频特性,若不满足要求,可适当改变窗函数形式或长度n,重复上述设计过程,以得到满意的结果【实例1】 设计一个34阶的高通滤波器,截止频率为0.48,使用具有30db波纹的chebyshev窗。解:源程

22、序如下: b=fir1(34,0.48,high,chebwin(35,30);freqz(b,1,512)其响应波形如图6所示。图6 带通fir滤波器【实例2】 设计具有下面指标的低通fir滤波器由于其最小阻带衰减为50db,因此可以选择hamming窗来实现这个滤波器,因为它具有较小的过渡带。解:matlab源程序为% 数字滤波器指标wp=0.2*pi;ws=0.3*pi;tr_width=ws-wp;m=ceil(6.6*pi/tr_width)+1;n=0:1:m-1;wc=(ws+wp)/2;hd=ideal_lp(wc,m);% 生成hamming窗w_ham=(hamming(m

23、);% 频域图像的绘制h=hd.*w_ham;freqz (h,1)figure(2);subplot(2,2,1),stem(n,hd);title(理想脉冲响应)axis(0 m-1 -0.3 0.3);xlabel(n);ylabel(hd(n)xa=0.*n;hold onplot(n,xa,k);hold offsubplot(2,2,2),stem(n,w_ham);title(hamming窗)axis(0 m-1 -0.3 1.2);xlabel(n);ylabel(w(n)subplot(2,2,3),stem(n,h);title(实际脉冲响应)axis(0 m-1 -0.

24、3 0.3);xlabel(n);ylabel(h(n)hold onplot(n,xa,k);hold off其响应波形如图7所示。 图7 hamming窗函数设计fir滤波器【实例3】设带通滤波器的指标为选择blackman窗来实现这个滤波器。解:matlab源程序为% 数字滤波器指标ws1=0.2*pi; wp1=0.35*pi;ws2=0.65*pi; wp2=0.8*pi;as=60;tr_width=min(wp1-ws1),(wp2-ws2);m=ceil(11*pi/tr_width)+1;n=0:1:m-1;wc1=(ws1+wp1)/2;wc2=(ws2+wp2)/2;hd

25、=ideal_lp(wc2,m)-ideal_lp(wc1,m);% 生成blackman窗w_bla=(blackman(m);h=hd.*w_bla% 频域图像的绘制freqz(h,1)figure(2);subplot(2,2,1),stem(n,hd);title(idael impulse response)axis(0 m-1 -0.4 0.5);xlabel(n);ylabel(hd(n)xa=0.*n;hold onplot(n,xa,k);hold offsubplot(2,2,2),stem(n,w_bla);title(blackman window)axis(0 m-1

26、 0 1.1);xlabel(n);ylabel(w(n)subplot(2,2,3),stem(n,h);title(actual impulse response)axis(0 m-1 -0.4 0.5);xlabel(n);ylabel(h(n)hold onplot(n,xa,k);hold off其响应波形如图8所示。图8 blackman窗函数设计fir滤波器53基于matlab的gui界面设计。54基于matlab的gui滤波器设计方案实现。55运行调试和界面美化以及方案优化改进。六、基于matlab的滤波器结果设计分析61滤波器实现展示: 1fir低通滤波器频率相位特性响应图及

27、滤波图:2fir高通滤波器频率相位特性响应图及滤波图:3. fir带通滤波器频率相位特性响应图及滤波图:4iir低通滤波器频率相位特性响应图及滤波图:5iir高通滤波器频率相位特性响应图及滤波图:6iir带通滤波器频率相位特性响应图及滤波图:62结果分析:(详见设计流程)。本次数字信号处理课程设计,gui只是一个工具,一个托体,通过gui面向对象的人性化简化了信号处理的抽象性;便于理解。对matlab函数的调用设计滤波器以及对读入音频处理滤波,得到其时域,频域图。七、设计经验总结malta无疑是一款功能超强的数学软件,基于它可实现多领域的科学研究和开发。在本次课程设计中,收获最多的是如何看待问

28、题以及如何解决问题。一个很现实的问题就是搞科研开发,遇到问题是必不可免,关键是如何看待这样的问题,持怎样的心态,持怎样的目的。再就是问题是遇到了,要如何解决以及用怎样最优的方案去处理,都得下心思去思考和摸索。再一个很现实的问题是,要学会学习,学会自学。毕竟社会日新月异,科技蓬勃发展,新领域新知识不断涌现,怎么样才能在社会保持有效的立足,怎样才能翻弄潮流,面对社会变迁做到运筹帷幄之中呢?在我看来,关键要保持良好心态,保持一种积极永不妥协永不放弃的信念,不断进取不断开拓。在学好基本课内的专业知识之外,应尽量多补充课外的和本专业相协调的专业知识。强势未来就业利剑。参考文献:【1】 matlab与科学

29、计算【2】 精通基于matlab的gui设计【3】 matlab在电子类学科的应用参考网址:【1】【2】【3】附录:方案主体代码:global y1;global fs;global fe;global bits;fname,dirpath=uigetfile(*.wav);myfile=dirpath fnamey1,fe,bits = wavread(myfile);h,f=freqz(b,1,512,fs); %axes(handles.axes4);plot(f,20*log10(abs(h); xlabel(频率/hz);ylabel(幅值);grid on;title(滤波器频率响应曲线); fb=str2num(get(handles.edit1,string); fc=str2num(get(handles.edit2,string);fb=str2num(get(handle

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论