欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    课程设计-基于Matlab的FIR滤波器设计与仿真.doc

    • 资源ID:78778846       资源大小:213KB        全文页数:12页
    • 资源格式: DOC        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    课程设计-基于Matlab的FIR滤波器设计与仿真.doc

    基于Matlab的FIR滤波器设计与仿真实验地点: 实验日期:7月13日至 7月18日一、实验目的1、掌握基本的MATLAB编程方法;2、理解FIR滤波器的设计原理;3、学会用MATLAB来编程实现FIR滤波器;4、掌握基本的simulink交互式仿真,并对FIR滤波器模型并进行仿真;5、学会对所得的结果进行分析。二、实验内容1、制作数据源:用电脑采集或用软件截取5至10秒的语音(如“宁波大学”.)(注意用wavread函数将语音文件读入到matlab时,有“右声道”和“左声道”两个信号,只要将其中一个声道作为信号就可以。)2、信号中混入随机噪声(注意信噪比,噪声强度不要太大):事先取一个参考值为0,再取噪声的方差,方差的取值是根据原始语音的幅度取的噪声,噪声强度不宜过大或过小,适中即可。然后通过 randn(size(a) .* sqrt(noise_var) + noise_mu;语句产生与原始语音长度相同的随机噪声,最后把这个噪声添加到原始语音中,得到加噪语音信号。3、设计一个FIR滤波器对前面的混合信号进行处理、降低噪声,并对性能进行分析:有限长单位冲激响应( FIR) 数字滤波器具有严格的线性相位,又具有任意的幅频特性。同时FIR 系统只有零点,系统是稳定的,因而容易实现线性相位和允许实现多通道滤波器。只要经过一定的延时,任何非因果有限长序列都能变成因果的有限长序列, 因而总能用因果系统来实现。FIR 滤波器由于单位冲激响应是有限长的,可以用快速傅立叶变换( FFT) 算法来实现过滤信号,从而大大提高运算效率。由于FIR 滤波器具有以上优点,在信号处理和数据传输中得到了广泛的应用。运用窗函数设计滤波器是FIR 数字滤波器设计的主要方法之一,由于运算简单,又有闭合形式的公式可循,因而很实用。有限长FIR数字滤波器的设计方法主要是窗函数设计法。常用的窗函数有以下几种, 矩形窗, 三角窗,汉宁窗, 海明窗, 布拉克曼窗, 凯泽窗( =7. 865) ,各种窗函数基本参数比较如下表1 。由表1得矩形窗虽然简便,但存在明显的吉布斯效应,主瓣和第一旁瓣之比只有13dB,为了克服这些缺陷,设计时可根据给定的滤波器技术指标,选择滤波器长度M和窗函数w(n),使其具有最窄宽度的主瓣和最小旁瓣4、用Simulink设计FIR滤波器模型并进行仿真,所得结果进行分析:Simulink创建模型并寻找解决实际问题的方法,可以用它轻松地搭建一个系统模型,并设置模型参数和仿真参数。由于Simulink是交互式的应用程序,因此在仿真过程中,可以在线修改仿真参数,并立即观察到改变后的仿真结果。本文将介绍在Simulink环境下应用数字滤波器设计模块进行信号处理(滤波)的可视化设计技术。由于调用了Matlab高度集成化和可视化的计算机仿真环境,用户可以不用编写任何程序语句,仅仅通过鼠标拖放和点击操作,就可完成复杂的数字滤波器的设计工作。下面通过一个应用示例介绍这种基于可视化的信号滤波技术,用数字滤波器设计模块(Digital Filter Design Block)设计、分析和实现滤波器。三、实验结果与分析1、制作数据源:我用电脑录制了同学的一段语音,内容是:现代语音处理技术。该语音大概有4,5秒之长。然后用wavread函数将语音文件读入到matlab中,其实现的语句如下:a,fs=wavread('现代语音处理技术.wav');%读入语音a=a(:,1);从中我们知道fs语音的采样频率。2、信号中混入随机噪声:noise_mu = 0; noise_var =0.005; a0= randn(size(a) .* sqrt(noise_var) + noise_mu;a1=a+a0;事先取一个参考值为0,再取噪声的方差为0.005,0.005是根据原始语音的幅度取的噪声,噪声强度不宜过大或过小,适中即可。然后通过 randn(size(a) .* sqrt(noise_var) + noise_mu;语句产生与原始语音长度相同的随机噪声,最后把这个噪声添加到原始语音中,得到a1是信号中混入随机噪声的的语音。3、设计一个FIR滤波器:3.1、FIR滤波器设计的原理:先对原始语音进行FFT变换,从FFT图中得到passband和stopband从中我们可以知道了FIR滤波器的截止频率。确定我们选择是用低通,高通还是带通来处理加噪语音。然后我们通过:fedge=input('Band edges in Hz=');mval=input('Desired magnitude values in each band=');dev=input('Desired ripple in each band=');FT=input('Sampling frequency in Hz=');输入从FFT上得到的数据,passband和stopband,低通或高通,带通,通带纹波和阻带纹波,以及从wavread函数中得到的采样频率fs。通过:N,fpts,mag,wt=remezord(fedge,mval,dev,FT);b=remez(N,fpts,mag,wt);产生滤波器的阶数N和滤波器的系数b。然后把加噪的语音a1与b进行卷积:a11=conv(b,a1) 得到的是滤波后的语音信号。3.2、FIR滤波器设计的程序:a,fs=wavread('现在语音处理技术.wav');%读入宁波大学语音a=a(:,1);FS=length(a);f=0:fs/FS:(FS-1)*fs/FS;%进行FFT变换x=fft(a);figure(1)plot(f,abs(x);title('原始信号a的fft图');axis(0 45000 0 1000);xlabel('f');ylabel('abs(x)');grid on;%设置FIR滤波器format longfedge=input('Band edges in Hz=');mval=input('Desired magnitude values in each band=');dev=input('Desired ripple in each band=');FT=input('Sampling frequency in Hz=');N,fpts,mag,wt=remezord(fedge,mval,dev,FT);b=remez(N,fpts,mag,wt);disp('FIR Filter Coefficients');disp(b)h,w=freqz(b,1,256);%画出幅频特性figure(2)subplot(2,1,1);plot(w/pi,20*log10(abs(h);title('幅频特性'); xlabel('omega/pi');ylabel('Gain,dB');grid on;%画出相频特性subplot(2,1,2)pha=angle(h); %得到相位plot(w/pi,pha);title('相频特性');xlabel('omega/pi');ylabel('phase(Rad)');%原始语音信号图ts=1/fs;ta=(length(a)-1)/fs;t=0:ts:ta;figure(3)subplot(3,1,1);plot(t,a);title('原始信号a');xlabel('t');ylabel('a');grid on;%添加随机噪声noise_mu = 0; noise_var =0.005; a0= randn(size(a) .* sqrt(noise_var) + noise_mu;a1=a+a0;%在原始信号上加随机噪声的信号图subplot(3,1,2);plot(t,a1);title('在原始信号上加上噪声信号a1');xlabel('t');ylabel('a1');grid on;%求卷积a11=conv(b,a1);%经过滤波器后的信号图M=(length(a11)-1)/fs;m=0:ts:M;subplot(3,1,3);plot(m,a11);title('经过滤波器后的信号a11');xlabel('m');ylabel('a11');grid on;3.3、FIR滤波器设计的结果及分析:3.31.读入原始语音:a,fs=wavread('现代语音处理技术.wav');%读入语音a=a(:,1);fs结果:fs = 441003.32.运行以上程序,得到图形以及数据如下:Figure1:原始语音信号的FFT图:从中我们知道passband Fp=2000,stopband Fs=5000,我们采用低通滤波器1 0,已知fs=44100,则我们可以在命令窗口输入以下数据,并按回车键结束。Band edges in Hz=2000 5000Desired magnitude values in each band=1 0Desired ripple in each band=0.015 0.01Sampling frequency in Hz=44100Figure2:Figure2:FIR滤波器的幅频特性和相频特性图:Figure3:原始语音a,加噪语音a1,滤波语音a11的图形:输出的滤波器的系数如下:FIR Filter Coefficients Columns 1 through 4 0.537 -0.558 -0.428 -0.944 Columns 5 through 8 -0.353 -0.962 -0.722 -0.676 Columns 9 through 12 0.194 0.435 0.906 0.741 Columns 13 through 16 0.638 0.351 0.351 0.638 Columns 17 through 20 0.741 0.906 0.435 0.194 Columns 21 through 24 -0.676 -0.722 -0.962 -0.353 Columns 25 through 28 -0.944 -0.428 -0.558 0.537从上面的滤波效果来看,这个低通滤波器的效果还不错,基本上能把原始语音的滤波出来,虽然不能做到很好的把噪声滤除,但是在语音的听觉效果上分辩不出与原始语音有何差别,效果还是不错的。4、用Simulink设计FIR滤波器模型并进行仿真,所得结果进行分析因为滤波器的阶数是N=27阶,则我通过Simulink设计了一个27阶的滤波器,其图形如下,下图是simulink总的设计模型,其中我们可以看到示波器可以显示三路的波形,第一路是原始语音信号的波形,第二路是加噪语音信号的波形,第三路是加噪语音信号进过滤波后的语音信号输出,通过三路波形的同时显示我们可以很好的比较原始语音信号与滤波后的语音信号之间的差别,从而可以判断滤波器的滤波效果是否合格。上图的Filter滤波器是下图所示的子系统封装得到的,该子系统设计了阶数为27阶的FIR滤波器,其中的滤波器系数是上面用MATLAB实现滤波器设计得到的滤波器的系数,共有28个。我设计的simulink模型如下图所示:原始语音的from workspace设置如下:其中Data为t,a,Sample time为ts,并且当数据处理完后,其最后的输出数据置零。加噪原始语音的from workspace设置如下:其中Data为t,a1,Sample time为ts,并且当数据处理完后,其最后的输出数据置零。在运行simulink之前,我对simulink的参数设置如下:用simulink进行仿真的结果如下:从仿真的结果我们可以看到,原始语音,加噪语音,以及滤波后的语音。从中我们可以看出FIR滤波器对加噪语音有一定的滤波效果,滤波出的语音与原始语音比较接近,如果从听觉角度去分析,我们很难分辩这两种语音之间的差别,所以这个FIR滤波器在一定程度上对语音的滤波效果是不错的。四、实验体会:本次实验我在对MATLAB了解的基础上更好的,更熟练的应用MATLAB来编程实现FIR滤波器设计,以及学会用simulink来设计FIR滤波器,仿真实现滤波效果。这个实验一开始我只具备基本的MATLAB知识和相关的FIR滤波器的设计原理。开始用MATLAB来编程实现对我来说还是有点难度的,但是通过查看相关资料以及认真的阅读老师提供的资料,我慢慢的对实现FIR滤波器设计有了初步的程序轮廓,然后我花了将近一天的时间来编程,中间出现过很多困难,都是自己对函数的使用不熟悉,但在老师的帮助下我都逐个解决了,并最后实现FIR滤波器功能,对加噪语音进行滤波,输出的语音与原始语音在听觉效果上分辨不出有何差别,很好的实现了滤波效果。用MATLAB来编程实现滤波器之后,我通过阅读老师提供的资料掌握了Simulink交互式设计的方法,用Simulink来设计FIR滤波器模型并进行仿真,滤波出的语音与原始语音比较接近,从听觉角度去分析,我们很难分辩这两种语音之间的差别,所以这个FIR滤波器在一定程度上对语音的滤波效果是不错的。这次实验让我感觉收获很多,我希望下个实验我更努力,收获更多。

    注意事项

    本文(课程设计-基于Matlab的FIR滤波器设计与仿真.doc)为本站会员(飞****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开