1/14数字信号处理课程设计报告题目:数字滤波器的设计院系:专业:电子信息科学与技术班级:姓名:学号:联系方式:指导教师:报告成绩:2016年12月16日2/141、课程设计的目的和意义1.MATLAB软件功能简介MATLAB的名称源自MatrixLaboratory,1984年由美国Mathworks公司推向市场。它是一种科学计算软件,专门以矩阵的形式处理数据。MATLAB将高性能的数值计算和可视化集成在一起,并提供了大量的内置函数,从而被广泛的应用于科学计算、控制系统和信息处理等领域的分析、仿真和设计工作。MATLAB软件包括五大通用功能,数值计算功能(Nemeric)、符号运算功能(Symbolic)、数据可视化功能(Graphic)、数字图形文字统一处理功能(Notebook)和建模仿真可视化功能(Simulink)。其中,符号运算功能的实现是通过请求MAPLE内核计算并将结果返回到MATLAB命令窗口。该软件有三大特点,一是功能强大;二是界面友善、语言自然;三是开放性强。目前,Mathworks公司已推出30多个应用工具箱。MATLAB在线性代数、矩阵分析、数值及优化、数值统计和随机信号分析、电路与系统、系统动力学、次那好和图像处理、控制理论分析和系统设计、过程控制、建模和仿真、通信系统以及财政金融等众多领域的理论研究和工程设计中得到了广泛应用。MATLAB在信号与系统中的应用主要包括符号运算和数值计算仿真分析。由于信号与系统课程的许多内容都是基于公式演算,而MATLAB借助符号数学工具箱提供的符号运算功能,能基本满足信号与系统课程的需求。例如解微分方程、傅里叶正反变换、拉普拉斯正反变换和z正反变换等。MATLAB在信号与系统中的另一主要应用是数值计算与仿真分析,主要包括函数波形绘制、函数运算、冲击响应与阶跃响应仿真分析、信号的时域分析、信号的频谱分析、系统的S域分析和零极点图绘制等内容。数值计算仿真分析可以帮助学生更深入地理解理论知识,并为将来使用MATLAB进行信号处理领域的各种分析和实际应用打下基础。2.本题目的意义本次课程设计的课题为《基于MATLAB的语音信号采集与处理》,学会运用MATLAB的信号处理功能,采集语音信号,并对语音信号进行滤波及变换处理,观察其时域和频域特性,加深对信号处理理论的理解,并为今后熟练使用MATLAB进行系统的分析仿真和设计奠定基础3/142实验原理1.理论原理利用MATLAB对语音信号进行分析和处理,采集语音信号后,利用MATLAB软件平台进行频谱分析;并对所采集的语音信号加入干扰噪声,对加入噪声的信号进行频谱分析,设计合适的滤波器滤除噪声,恢复原信号。2具体流程NO(1)语音信号的采集及分析从录制一段语音信号,经过格式工厂将格式转为wav格式,并命名为“ww.wav”。在Matlab平台下调用wavread函数可采集到语音信号。即[x1]=wavread('D:/w.wav');sound(x1,45050);%读出原始语音信号开始录制段语音信号,命名为“ww.wav”,绘制出其时域波形和频谱图。加入噪声干扰,绘制干扰后的时域波形和频谱图。利用设计合理的FI,利用窗函数hamming设计滤波器。将干扰后的语音信号通过自己设计的滤波器,进行滤波去噪。比较滤波前后的时域波形和频谱图,并回放语音信号,验证是否达到去噪效果。是否达到去噪效果?4/14原始的语音信号波形与频谱(2)给原始信号加上一个高频噪声在Matlab中设计一个高频噪声干扰信号。噪声信号通常为随机序列,在本设计中为高斯随机噪声,干扰信号构建命令函数为x2=0.01*randn(N,2),给出的干扰信号为一个高斯随机信号,针对上面的语音信号,采集了其中一段。再对噪音信号进行频谱变换得到其频谱图。在MATLAB中把语音信号与噪声信号进行叠加,并对其进行播放,然后对加入噪声后的语音信号进行频谱分析,在MATLAB中可以利用函数FFT对信号进行快速傅里叶变换。将原语音信号与噪声信号x2叠加,调用的形式为:x3=x2+x1;其中,x1为原语音信号,x2为所构造的随机高斯噪声,x3即为两者的叠加后的语音信号。5/14加入的高斯随机噪声3)滤波器的设计,滤除高频噪声在MATLAB中,利用窗函数hamming,设计FIR滤波器,利用MATLAB中的函数freqz画出滤波器的频率响应。并用设计好的滤波器对含噪语音信号进行滤波,在Matlab中,FIR滤波器利用函数filter对信号进行滤波滤波器设计程序代码:Wp=3000*2*pi;Ws=3500*2*pi;Ap=0.3;As=50;Fs=45050;wp=Wp/Fs;ws=Ws/Fs;%归一化通带截频阻带截频wdelta=ws-wp;%过渡带宽%由阻带最小衰减指标确定选用汉明窗并确定其阶数6/14N=ceil(6.6*pi/wdelta);Nw=N;n=0:N-1;wc=(wp+ws)/2;%理想截频alpha=(N-1)/2;m=n-alpha+eps;%理想滤波器脉冲响应hd=sin(wc*m)./(pi*m);%采用汉明窗设计win=hamming(Nw);h=hd.*win';b=h;[H,f]=freqz(b,1,512,Fs);%绘制滤波器的幅频响应图figure(4);plot(f,20*log10(abs(H)))xlabel('Hz');ylabel('幅值');title('滤波器幅频特性');信号滤波程序代码:x4=fftfilt(b,x3);%滤波输出sound(x4,45050);%输入输出频谱figure(1);subplot(2,2,3);plot(x4)%绘制输出信号xlabel('time(s)'),ylabel('幅值');7/14title('滤波后输出信号');Y=fft(x4);figure(3);subplot(2,2,3);plot(abs(Y));xlabel('Hz');ylabel('幅值');title('滤波后输出信号频谱')滤波后的波形和频谱3实验结果8/14滤波前后的波形比较9/144本程序运行后,一共播放四段语音信号。首先播放原语音信号,接着是噪声信号,然后是加噪后的语音信号,最后是滤波后的信号,每段语音信号大约11s。同时对语音信号的特性进行图像显示,在figure1中显示了原始语音信号、加噪后的语音信号、滤波后输出信号各自的幅值随时间的变化5心得体会通过这一个礼拜使用Matlab对语音信号进行处理,进一步熟悉了Matlab的使用,并对语音信号的格式有了更全面的认识。自己在电脑上录音并进行了语音的格式转换,变换为wav的语音格式。在程序设计中学会了一些Matlab中基本的语音运行及处理程序,比如:语音读取函数wavread()、语音播放函数sound()、快速傅里叶变换fft()、滤波处理fftfilt()。并加深了对课堂抽象概念的理解,巩固了课堂上所学的理论知识,并能很好的理解和掌握语音信号处理中运用的方法,同时掌握编程方法和解决实际问题的技巧参考文献[1]张志涌.精通MATLAB6.5版[M].北京:北京航空航天大学出版社,2003.[2]约翰·G·普罗克斯.数字信号处理[M].西安:西安交通大学出版社,2009.[3]张小虹.信号系统与数字信号处理[M].第1版.西安:西安电子10/14科技出版社,2002.[4]谢德芳.数字信号处理[M].北京:科学出版社,2005.[5]郝建军.数字通信[M].第2版.北京:北京邮电大学出版社,2010.[6]张威.MATLAB基础与编程入门[M].西安:西安电子科技大学出版社,2010.附录:[x1]=wavread('E:/w.wav');sound(x1,45050);%读出原始语音信号y1=fft(x1,1024);%对原始信号进行1024点傅里叶变换Fs=45050;频率f=Fs*(0:511)/1024;分别表示nfft个频率点figure(1)打开图形窗口subplot(2,2,1);确定第一个绘图窗口plot(x1)%显示原始信号以x1绘图title('原始语音信号');取名xlabel('time(s)');x轴名ylabel('幅值');figure(3)subplot(2,2,1);plot(f,abs(y1(1:512)));做原始语音信号的FFT频谱图title('原始语音信号频谱');xlabel('Hz');11/14ylabel('幅值');N=length(x1);%计算原始语音信号的长度x2=0.05*randn(N,2);x2为随机噪声sound(x2,45050);播放噪声figure(2)plot(x2)title('高斯随机噪声');xlabel('time(s)');ylabel('幅值');x3=x2+x1;sound(x3,45050);y2=fft(x3,1024);figure(1)subplot(2,2,2);plot(x3)%显示加噪后的语音信号title('加噪后的语音信号');xlabel('time(s)');ylabel('幅值');figure(3);subplot(2,2,2);plot(f,abs(y2(1:512)));title('加噪后的语音信号频谱');12/14xlabel('Hz');ylabel('幅值');Nbits=16;wavwrite(x3,Fs,Nbits,'noise.wav');%将加噪的信号保存Wp=3000*2*pi;Ws=3500*2*pi;Ap=0.3;As=50;Fs=45050;wp=Wp/Fs;ws=Ws/Fs;%归一化通带截频阻带截频wdelta=ws-wp;%过渡带宽%由阻带最小衰减指标确定选用汉明窗并确定其阶数N=ceil(6.6*pi/wdelta);Nw=N;n=0:N-1;wc=(wp+ws)/2;%理想截频alpha=(N-1)/2;m=n-alpha+eps;%理想滤波器脉冲响应hd=sin(wc*m)./(pi*m);%采用汉明窗设计win=hamming(Nw);h=hd.*win';b=h;[H,f]=freqz(b,1,512,Fs);%绘制滤波器的幅频响应图figure(4);plot(f,20*log10(abs(H)))xlabel('Hz');ylabel('幅值');13/14title('滤波器幅频特性');x4=fftfilt(b,x3);%滤波输出sound(x4,45050);%输入输出频谱figure(1);subplot(2,2,3);plot(x4)%绘制输出信号xlabel('time(s)'),ylabel('幅值');title('滤波后输出信号');Y=fft(x4);figure(3);subplot(2,2,3);plot(abs(Y));xlabel('Hz');ylabel('幅值');title('滤波后输出信号频谱')14/14