基于Matlab的FIR滤波器设计与仿真.doc
《基于Matlab的FIR滤波器设计与仿真.doc》由会员分享,可在线阅读,更多相关《基于Matlab的FIR滤波器设计与仿真.doc(12页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、基于Matlab的FIR滤波器设计与仿真实验地点:曹光彪信息楼219 实验日期:7月13日至 7月18日一、实验目的1、掌握基本的MATLAB编程方法;2、理解FIR滤波器的设计原理;3、学会用MATLAB来编程实现FIR滤波器;4、掌握基本的simulink交互式仿真,并对FIR滤波器模型并进行仿真;5、学会对所得的结果进行分析。二、实验内容1、制作数据源:用电脑采集或用软件截取5至10秒的语音(如“宁波大学”.)(注意用wavread函数将语音文件读入到matlab时,有“右声道”和“左声道”两个信号,只要将其中一个声道作为信号就可以。)2、信号中混入随机噪声(注意信噪比,噪声强度不要太大
2、):事先取一个参考值为0,再取噪声的方差,方差的取值是根据原始语音的幅度取的噪声,噪声强度不宜过大或过小,适中即可。然后通过 randn(size(a) .* sqrt(noise_var) + noise_mu;语句产生与原始语音长度相同的随机噪声,最后把这个噪声添加到原始语音中,得到加噪语音信号。3、设计一个FIR滤波器对前面的混合信号进行处理、降低噪声,并对性能进行分析:有限长单位冲激响应( FIR) 数字滤波器具有严格的线性相位,又具有任意的幅频特性。同时FIR 系统只有零点,系统是稳定的,因而容易实现线性相位和允许实现多通道滤波器。只要经过一定的延时,任何非因果有限长序列都能变成因果
3、的有限长序列, 因而总能用因果系统来实现。FIR 滤波器由于单位冲激响应是有限长的,可以用快速傅立叶变换( FFT) 算法来实现过滤信号,从而大大提高运算效率。由于FIR 滤波器具有以上优点,在信号处理和数据传输中得到了广泛的应用。运用窗函数设计滤波器是FIR 数字滤波器设计的主要方法之一,由于运算简单,又有闭合形式的公式可循,因而很实用。有限长FIR数字滤波器的设计方法主要是窗函数设计法。常用的窗函数有以下几种, 矩形窗, 三角窗,汉宁窗, 海明窗, 布拉克曼窗, 凯泽窗( =7. 865) ,各种窗函数基本参数比较如下表1 。由表1得矩形窗虽然简便,但存在明显的吉布斯效应,主瓣和第一旁瓣之
4、比只有13dB,为了克服这些缺陷,设计时可根据给定的滤波器技术指标,选择滤波器长度M和窗函数w(n),使其具有最窄宽度的主瓣和最小旁瓣4、用Simulink设计FIR滤波器模型并进行仿真,所得结果进行分析:Simulink创建模型并寻找解决实际问题的方法,可以用它轻松地搭建一个系统模型,并设置模型参数和仿真参数。由于Simulink是交互式的应用程序,因此在仿真过程中,可以在线修改仿真参数,并立即观察到改变后的仿真结果。本文将介绍在Simulink环境下应用数字滤波器设计模块进行信号处理(滤波)的可视化设计技术。由于调用了Matlab高度集成化和可视化的计算机仿真环境,用户可以不用编写任何程序
5、语句,仅仅通过鼠标拖放和点击操作,就可完成复杂的数字滤波器的设计工作。下面通过一个应用示例介绍这种基于可视化的信号滤波技术,用数字滤波器设计模块(Digital Filter Design Block)设计、分析和实现滤波器。三、实验结果与分析1、制作数据源:我用电脑录制了同学的一段语音,内容是:现代语音处理技术。该语音大概有4,5秒之长。然后用wavread函数将语音文件读入到matlab中,其实现的语句如下:a,fs=wavread(现代语音处理技术.wav);%读入语音a=a(:,1);从中我们知道fs语音的采样频率。2、信号中混入随机噪声:noise_mu = 0; noise_var
6、 =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从中
7、我们可以知道了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=r
8、emezord(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);y
9、label(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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Matlab FIR 滤波器 设计 仿真
限制150内