您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 电子设计/PCB > 基于matlab的IIR滤波器设计
1《数字信号处理》课程设计报告基于matlab的IIR滤波器设计专业:通信工程班级:学号:姓名:指导教师:2目录一.课程设计目的………………………………………………………1二.课程设计题目描述和要求…………………………………………1三.课程设计报告内容…………………………………………………2四.设计总结……………………………………………………………8参考书目………………………………………………………………8附录……………………………………………………………………83一.课程设计目的通过本课程设计教学所要达到的目的是:使学生进一步巩固数字信号处理的基本概念、理论、分析方法和实现方法;使学生掌握的基本理论和分析方法方面的知识得到进一步扩展;使学生能有效地将理论和实际紧密结合;增强学生软件编程实现能力和解决实际问题的能力。要求学生能够熟练地用Matlab等语言编写数字信号处理的应用程序;编程实现IIR数字滤波器和FIR数字滤波器;了解各种窗函数对滤波器特性的影响等,进一步明确数字信号处理的工程应用。二.课程设计题目描述和要求2.1课程设计题目基于matlab的IIR滤波器设计目标:(1)语音采集(2)设计滤波器,将采集的语音信号进行IIR滤波.(3)回放语音信号2.2课程设计任务1,理论依据根据设计要求分析系统功能,掌握设计中所需的理论(采样频率,采样位数的概念,采样定理;时域信号的DFT,FFT及频谱分析;数字滤波器的设计原理和方法,各种不同性能的滤波器的性能比较),阐述设计原理。2,信号采集采集语音信号,画出信号的时域波形图和频谱图。3,数字滤波器设计根据语音信号的特点,分别设计IIR低通和高通以及带通数字滤波器;FIR低通,高通以及带通数字滤波器;画出各种数字滤波器的频率响应图。4,信号处理1)利用设计的IIR数字滤波器分别对采集的信号进行滤波处理;2)利用设计的FIR数字滤波器分别对采集的信号进行滤波处理;3)在原始的语音信号3000HZ以上频段叠加白噪声,选择所设计的一种对叠加白噪声后的语音信号处理,滤除白噪声;4)画出处理过程中所的的各种波形及频谱图。5,信号分析4对语音信号进行回放,感觉滤波前后声音的变化。比较滤波前后语音信号的波形及频谱,对所的结果和滤波器性能进行频谱分析,阐明原因得出结论。2.3实验报告要求a)概述所作题目的意义、本人所做的工作及系统的主要功能;b)滤波器器原理描述;c)软件设计流程及描述;d)源程序代码(要有注释);e)用matlab软件仿真的波形和频谱图。三.课程设计报告内容3.1总体设计1:语音信号的采集及频谱分析2语音信号的频谱分析,构造受噪声干扰信号3设计数字滤波器和画出其频率响应4用滤波器对信号进行滤波5比较滤波前后语音信号的波形及频谱,并进行分析6回放语音信号7设计系统界面3.2软件仿真调试结果分析1).语音信号采集:利用windows下的录音机,录制一段自己的语音(格式为wav,时间不超过3s)。在Matlab软件平台下,利用函数wavread对语音信号进行采样,记住采样频率和采样点数。程序:[x,fss]=wavread('F:\leo.wav');52).语音信号频谱分析:63).混合噪声后的时域波形,然后对混噪信号进行频谱分析:74).低通滤波后信号的变化:85).高通滤波后信号的变化:96).带通滤波后信号的变化:10四.设计总结第一次语音信号采集时,语音信号为双声道,虽然在设计时我只采了第一列,但还是遇到了很多麻烦,所以我又重新录了一段单声道的语音。在设计低通滤波器时,我声音的频率在四百五左右。初始设计的通带截频和阻带截频分别为600和700,张老师指出了这一地方的不合理性,我又在陈老师的帮助下修改了自己的程序,使得设计符合标准。在此要真心感谢两位老师的指导和帮助!参考书目:[1]陈后金,《数字信号处理》,高等教育出版社,2004年7月[2]刘卫国,《Matlab程序设计与应用(第二版)》,高等教育出版社,2006年7月附录:(源程序代码)[x,fss]=wavread('F:\leo.wav');n=length(x);sound(x,fss);%sound(x,fss);s=0:n-1;%%%%%%%%%%%%%%%%%%%%%NoiseSpeT=1/fss;k=0:n-1;noise=0.05*sin(2*pi*3400*k*T);N=n;%%%%N=2048%Y=fftshift(fft(y,N));Y=(fft(noise,N));YY=Y(1:N/2);m=0:N/2-1;f=m/N*fss;subplot(2,3,6);plot(f,abs(YY))xlabel('m');title('噪声的频谱')11%t=linspace(0,1,n);%noise=0.05*sin(2*pi*3400*t);%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%y1=x'+noise;subplot(2,3,1);plot(x);title('信号抽样后的时域波形');xlabel('抽样点');ylabel('语音信号幅值');%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%subplot(2,3,2);plot(y1);title('信号加噪声后的时域波形')xlabel('抽样点');ylabel('含噪声语音信号幅值');%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%m=fft(x,N);subplot(2,3,4);plot(f,abs(m(1:N/2)));title('未加噪声时的频谱');xlabel('m');%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%n=fft(y1,N);subplot(2,3,5);plot(f,abs(n(1:N/2)));title('加噪声后的频谱');xlabel('m');ylabel('频谱幅度');sound(y1,fss);12%%%%%%%%%%%%%%%%%%%%%%%%%低通滤波器设计fp=1000;fs=1200;fm=8000;%低通滤波器As=60;%%%%%%%%%%用butter设计阻带衰减在fs=1200达不到100db,方法的局限性Ap=0.5;ws=2*fs/fm;wp=2*fp/fm;[NN,wc]=buttord(wp,ws,Ap,As);%%%%%%%%%filterNN[num,den]=butter(NN,wc);fprintf('orderofthefilter=%d\n',NN);w=linspace(0,pi/2,512)h=freqz(num,den,w);norm=max(abs(h));plot(4000*w/pi,20*log10(abs(h)));set(gca,'xtick',[1000,1200])%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%l=filter(num,den,y1);r=fft(l);subplot(2,3,1);plot(s,y1);title('滤波前的时域波形');xlabel('抽样点');ylabel('语音信号幅值');subplot(2,3,2);plot(s,l);title('滤波后的时域波形')xlabel('抽样点');ylabel('含噪声语音信号幅值');13subplot(2,3,4)plot(f,abs(n(1:N/2)));axis([040000200])title('滤波前的频谱');subplot(2,3,5)plot(f,abs(r(1:N/2)));title('滤波后的频谱');sound(l,8000)%%%%%%%%%%%%%%%%%%%%%%%%%高通滤波器设计fp=3000;fs=2800;fm=8000;%高通滤波器As=100;Ap=1;ws=2*fs/fm;wp=2*fp/fm;[N,wc]=buttord(wp,ws,Ap,As);[num,den]=butter(N,wc,'high');fprintf('orderofthefilter=%d\n',N)m=freqz(num,den,900);plot(20*log10(abs(m)));legend('高通滤波器');xlabel('频率点');ylabel('幅度响应');l=filter(num,den,y1);r=fft(l);subplot(2,3,1);plot(s,y1);title('滤波前的时域波形');xlabel('抽样点');ylabel('语音信号幅值');subplot(2,3,2);14plot(s,l);title('滤波后的时域波形')xlabel('抽样点');ylabel('含噪声语音信号幅值');subplot(2,3,4);plot(s,abs(n));title('滤波前的频谱');xlabel('抽样点');ylabel('频谱幅度');subplot(2,3,5);plot(s,abs(r));title('滤波后的频谱');xlabel('抽样点');ylabel('频谱幅度');sound(l);%%%%%%%%%%%%%%%%%%%%%%%%%带通滤波器设计fp1=1200;fp2=2800;%带通滤波器fs1=1000;fs2=3000;As=100;Ap=1;fm=8000;ws=[2*fs1/fm,2*fs2/fm];wp=[2*fp1/fm,2*fp2/fm];[N,wc]=buttord(wp,ws,Ap,As);fprintf('orderofthefilter=%d\n',N);[num,den]=butter(N,ws);m=freqz(num,den,512);%plot(20*log10(abs(m)));%legend('带通滤波器');%xlabel('频率点');%ylabel('幅度响应');15l=filter(num,den,y1);r=fft(l);subplot(2,3,1);plot(s,y1);title('滤波前的时域波形');xlabel('抽样点');ylabel('语音信号幅值');subplot(2,3,2);plot(s,l);title('滤波后的时域波形')xlabel('抽样点');ylabel('含噪声语音信号幅值');subplot(2,3,4);plot(s,abs(n));title('滤波前的频谱');xlabel('m');ylabel('频谱幅度');subplot(2,3,5);plot(s,abs(r));title('滤波后的频谱');xlabel('m');ylabel('频谱幅度');sound(l);
本文标题:基于matlab的IIR滤波器设计
链接地址:https://www.777doc.com/doc-2570557 .html