您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 电子设计/PCB > 基于matlab的IIR的滤波器设计
1《数字信号处理》课程设计报告专业:班级:学号:姓名:指导教师:二0一二年六月十四日2目录一:课程设计目的………………………………………4二:课程设计的题目描述和要求………………………41:设计题目的描述………………………………………42:课程设计描述……………………………………………43:课程设计要求………………………………………………4三:课程设计报告内容……………………………………51:总体设计…………………………………………………51.1:采集语音信号…………………………………………51.2:声音信号的时域和频域分析……………………………51.3:设计一个余弦噪声,并产生噪声的时域和频域图,并分析………51.4:对声音信号加噪声…………………………………………61.5:设计B——F低通滤波器,并对其进行频谱分析…………61.6:对加噪声的信号滤波,并回放,并分析频谱……………72:软件仿真调试结果分析……………………………………72.1:运行语音信号程序………………………………………82.2:运行噪声信号……………………………………………82.3:运行加噪声后的语音信号………………………………92.4运行滤波器程序…………………………………………1032.5:滤波后的语音信号………………………………………11四:设计总结…………………………………………………12源程序代码:…………………………………………………134一:课程设计目的1:通过对课程设计任务的完成,进一步巩固数字信号处理的基本概念、理论、分析方法和实现方法;2:进一步扩展我们掌握的基本理论和分析方法方面的知识,能有效地将理论和实际紧密结合;3:同时增强自己的软件编程实现能力和解决实际问题的能力。4:练习能够熟练地用Matlab语言编程实现IIR数字滤波器和FIR数字滤波器,进一步明确数字信号处理的工程应用。二:课程设计的题目描述和要求1:设计题目的描述基于matlab的IIR的Butterworth滤波器设计目标:(1)语音采集(2)设计滤波器,将采集的语音信号进行IIR滤波.(3)回放语音信号2:课程设计描述要求录制一段自己的语音信号后,格式为WAV。在MATLAB软件中采集语音信号、回放语音信号。画出语音信号的时域波形和频谱图,对所采集的信号加入干扰噪声,要求噪声在3000Hz以上,对加入噪声进行播放,并进行时域和频谱分析,对比加噪声前后的时域图和频谱图,对比加噪声音信号和通过低通滤波器处理的音频信号不同的时域和频域波形。3:课程设计要求通过本次课程设计加深我对所学知识的理解和认识。并通过的实验来验证仿真自己的理解。理解了总体滤波器的设计。运用matlab观察信号的处理操作过程。在加深自己matlab动手实验能力的同时,独立运用自己的数字信号处理知识来处理音频信号。通过本次课程设计基本掌握matlab软件的编程方法。并进行相应的拓展。5练习matlabGUI的编写,通过按钮来调用程序,进行操作。三:课程设计报告内容1:总体设计1.1:采集语音信号通过录音机,录一段自己的声音,存名为xx.wav保存到桌面上1.2:声音信号的时域和频域分析通过wavread函数读取录制的声音文件,进行FFT转换。显示其时域和频域的波形1.3:设计一个余弦噪声,并产生噪声的时域和频域图,并分析61.4:对声音信号加噪声对声音信号加一个频率在3000Hz以上的余弦信号,然后对加噪声以后的信号进行时域和频域分析1.5:设计B——F低通滤波器,并对其进行频谱分析71.6:对加噪声的信号滤波,并回放,并分析频谱2:软件仿真调试结果分析2.1:运行语音信号程序8结果分析:观察上图可以看到,在采集的原始信号进行付氏变换后所得的频域波形就是原语音信号的频谱。2.2:运行噪声信号9结果分析:可以看到噪声的频谱是对称的冲击2.3:运行加噪声后的语音信号10结果分析:观察上图可以看见加噪的音频时域频域波形均出现了很大的变化,通过MATLAB软件所播放的加噪声音也是相应的出现了很大的噪声。加噪程序成功。2.4:运行滤波器程序11结果分析:观察上图可以清晰的看到器幅频特性为低通滤波器,还可以分析上图得我们所设置的采样频率、通带截止频率、阻带截止频率和阶数。2.5:滤波后的语音信号12结果分析:通过观察两个不同信号的频谱我们可以清晰的看到在截止频率周围器频谱的变化。因为是IIR滤波器的缘故,其频谱是相应周期延托。故而低通滤波器处理信号结果是如同上右下图的。试验成功。四:设计总结通过这次数字信号处理的课程设计,我懂得了理论与实际相结合的重要性,从理论中得出结论,从实践中提高自己。才能真正的锻炼自己,虽然这次的课程设计经历了半个月,但是我还是学会了很多很多的东西,在巩固以前所学过的知识同时,而且学到了很多在书本上所没有学到过的知识。通过这次设计,进一步加深了真正培养了自己的独立思考能力与动手能力。这次试验也让我认识到了自身的很多不足。其一就是对于数字信号处理课程知识的不透彻,让我在一些基础东西的处理上显得不是很游刃有余。特别是在编写程序时,发现自己还是有很大的提升空间的。实验虽然结束了,但我们学习还在继续。我将更加努力。虽然也受了很多的挫折,不过也正是这些的挫折让我收获了更多,不只是信心的提升。同样强化了我以后面对挫折的不懈心态。这次课程设计收获很多。13源程序代码:原始语音信号[y,fs,nbits]=wavread('C:\Users\Administrator\Desktop\qjs.wav');%读取语音信号的数据,赋给变量ysound(y,fs,nbits);%播放语音信号N=length(y);%计算采样点的长度Y=fft(y,N);%fft变换subplot(2,1,1);plot(y);title('原始信号波形');xlabel('时间\n');ylabel('幅值');subplot(2,1,2);plot(abs(Y));title('原始信号频谱');xlabel('频率\Hz');ylabel('幅值');噪声信号[y,fs,nbits]=wavread('C:\Users\Administrator\Desktop\qjs.wav');%读取语音信号的数据,赋给变量yN=length(y);%计算采样点的长度t=0:1/44100:(size(y)-1)/44100;%将所加噪声信号的点数调整到与原始信号相同Au=0.08d=[Au*cos(2*pi*3500*t)];%噪声为3.5kHz的余弦信号y1=d';%将噪声进行转置,以便使噪声与信号的行列相同,进行相加sound(y1,fs,nbits);14Y1=fft(d,3800);%fft变换subplot(2,1,1);plot(d);title('噪声的波形');subplot(2,1,2);plot(abs(Y1));title('噪声的频谱');加噪声之后的语音信号[y,fs,nbits]=wavread('C:\Users\Administrator\Desktop\qjs.wav');%读取语音信号的数据,赋给变量y%sound(y,fs,nbits);%播放语音信号N=length(y);%计算采样点的长度Y=fft(y,N);%fft变换subplot(2,2,1);plot(y);title('原始信号波形');subplot(2,2,2);plot(abs(Y));title('原始信号频谱');t=0:1/44100:(size(y)-1)/44100;%将所加噪声信号的点数调整到与原始信号相同Au=0.08d=[Au*cos(2*pi*3500*t)];%噪声为3.5kHz的余弦信号y1=d';%将噪声进行转置,以便使噪声与信号的行列相同,进行相加x1=y+y1;sound(x1,fs,nbits);subplot(2,2,3);plot(x1);title('加噪语音信号的时域波形');S=fft(x1);%傅里叶变换subplot(2,2,4);15plot(abs(S));title('加噪语音信号的频域波形');滤波器的程序wp=0.08*pi;ws=0.1*pi;%滤波器的指标Rp=1;%通带内的最大衰减Rs=15;%阻带内的最小衰减Fs=44100;Ts=1/Fs;wp1=2/Ts*tan(wp/2);%将数字指标转换成模拟指标ws1=2/Ts*tan(ws/2);[N,Wn]=buttord(wp1,ws1,Rp,Rs,'s');%选择滤波器的最小阶数[Z,P,K]=buttap(N);%创建butterworth模拟滤波器[Bap,Aap]=zp2tf(Z,P,K);[b,a]=lp2lp(Bap,Aap,Wn);%低通到低通[bz,az]=bilinear(b,a,Fs);%用双线性变换法实现模拟滤波器到数字滤波器的转换[H,W]=freqz(bz,az);%绘制频率响应曲线figure(1)plot(W*Fs/(2*pi),abs(H))grid;%网格xlabel('频率/Hz');ylabel('频率响应幅度')title('Butterworth');滤波的程序[y,fs,nbits]=wavread('C:\Users\Administrator\Desktop\qjs.wav');%读取语音信号的数据,赋给变量yN=length(y);%计算采样点的长度t=0:1/44100:(size(y)-1)/44100;%将所加噪声信号的点数调整到与原始信号相同Au=0.08d=[Au*cos(2*pi*3500*t)];%噪声为3.5kHz的余弦信号y1=d';%将噪声进行转置,以便使噪声与信号的行列相同,进行相加x1=y+y1;wp=0.08*pi;ws=0.1*pi;16Rp=1;Rs=15;Fs=44100;Ts=1/Fs;wp1=2/Ts*tan(wp/2);%将数字指标转换成模拟指标ws1=2/Ts*tan(ws/2);[N,Wn]=buttord(wp1,ws1,Rp,Rs,'s');%选择滤波器的最小阶数[Z,P,K]=buttap(N);%创建butterworth模拟滤波器[Bap,Aap]=zp2tf(Z,P,K);[b,a]=lp2lp(Bap,Aap,Wn);[bz,az]=bilinear(b,a,Fs);%用双线性变换法实现模拟滤波器到数字滤波器的转换[H,W]=freqz(bz,az);%绘制频率响应曲线subplot(2,3,1)plot(W*Fs/(2*pi),abs(H))gridxlabel('频率/Hz')ylabel('频率响应幅度')title('Butterworth')f1=filter(bz,az,x1);sound(f1,fs,nbits);subplot(2,3,2)plot(t,x1)%画出滤波前的时域图title('滤波前的时域波形');subplot(2,3,3)plot(t,f1);%画出滤波后的时域图title('滤波后的时域波形');f=fs*(0:511)/2048;y2=fft(x1,2048);subplot(2,3,4);17plot(f,abs(y2(1:512)));%画出滤波前的频谱图title('滤波前的频谱')xlabel('频率/Hz');ylabel('幅值i');F0=fft(f1,2048);subplot(2,3,5)F1=plot(f,abs(F0(1:512)));%画出滤波后的频谱图title('滤波后的频谱')xlabel('频率/Hz');ylabel('幅值');
本文标题:基于matlab的IIR的滤波器设计
链接地址:https://www.777doc.com/doc-5325714 .html