Matlab设计FIR数字滤波器_第1页
Matlab设计FIR数字滤波器_第2页
Matlab设计FIR数字滤波器_第3页
Matlab设计FIR数字滤波器_第4页
Matlab设计FIR数字滤波器_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

-.zFIR数字滤波器专业:**:**:一课题目的:学会使用Matlab的各项功能。学会把自己在课堂上学习的知识运用到实践当中。了解利用Matlab设计FIR数字滤波器的根本方法。在课程设计的过程中掌握程序编译及软件设计的根本方法。提高自己对于新知识的学习能力及进展实际操作的能力。二课题要求:在信号处理过程中所处理的信号往往混有噪音,从承受到的信号中消除或减弱噪音是信号处理过程中十分重要的问题。根据有用信号和噪音的不同特性,提取有用信号的过程称为滤波,实现滤波功能的系统称为滤波器。而数字滤波器又是滤波器中运用极为广泛的一种滤波器。数值滤波技术是数字信号处理的一个重要组成局部,滤波器的设计是信号处理的核心问题之一。FIR数字滤波器在保证幅度特性满足技术要求的同时,很容易做到有严格的线性相位特性。要求通过网络及各种资料解决实际问题设计一个符合要求的FIR数字滤波器。三课题内容:数字滤波器和模拟滤波器有着一样的滤波概念,根据其频率响应特性可分为低通、高通、带通、带阻等类型。与模拟滤波器相比,数字滤波器除了具有数字信号处理固有优点外,还有滤波精度高、稳定性好、灵活性强等优点。在数字信号处理中,由于信号中经常混有各种复杂成分,所以很多信号分析都是基于滤波器而进展的,FIR数字滤波器在数字信号处理中发挥着重要作用,采用Matlab软件对FIR数字滤波器进展仿真设计,简化了设计中繁琐的计算。设计中采用窗函数法,频率采样法和优化设计方法,通过调用Matlab函数设计FIR数字滤波器。绘制出滤波器的特性图。利用所设计的滤波器对多个频带叠加的正弦信号进展处理,比照滤波前后的信号时域和频域图,验证滤波器的效果。最后录制一段语音信号,并对录制的信号进展采样和加噪,绘制出采样后语音信号的时域波形和频谱图,然后用所设计的滤波器对加噪后的信号进展滤波,绘制出滤波后信号的时域波形和频谱,并对滤波前后的信号进展比照,分析信号的变化。窗函数法的Matlab实现设计FIR数字滤波器的最简单的方法就是窗函数法,通常也称之为傅里叶级数法,FIR数字滤波器的设计首先给出要求的理想滤波器的频率响应Hd(ejw),设计一个FIR数字滤波器频率响应Hd(ejw),去逼近理想的滤波响应Hd(ejw)。然而窗函数法设计FIR数字滤波器是在时域进展的,因而必须由理想的频率响应Hd(ejw)推导出对应的单位取样响应hd(n),再设计一个FIR数字滤波器的单位取样响应h(n)去逼近hd(n)。窗函数主要用来减少序列因截断而产生的Gibbs效应,但当这个窗函数为矩形时,得到的FIR数字滤波器幅频响应会有明显的Gibbs效应,并且任意的增加窗函数的长度,Gibbs效应也不能得到改善。为了抑制这种现象,窗函数应该使设计的滤波器具有以下几点:频率特性的主瓣宽度应该尽量窄,且尽可能地将能量集中在主瓣内;窗函数频率特性的旁瓣在旁瓣ω趋于π的过程中,其能量迅速减小为零。程序中fir1函数的用法:b=fir1(n,Wn,’ftype’,window)①n为滤波器的阶数②Wn为滤波器的截止频率,它是一个0到1的数。如果Wn是一个含有两个数的向量,则函数返回一个带通滤波器③ftype为滤波器的类型,ftype=’high’时,设计的是高通滤波器;ftype=’stop’时,设计的是带阻滤波器;没有此参数时,设计的是低通滤波器④window为指定的窗函数,矩形窗为bo*car(n),汉宁窗为hanning(n),海明窗为hamming(n),布莱克曼窗为blackman(n),凯撒窗为kaiser(n,beta),没有此参数时,默认为hamming窗函数程序如下:f1=100;f2=200;%待滤波正弦信号频率fs=2000;%采样频率m=(0.3*f1)/(fs/2);%定义过度带宽M=round(8/m);%定义窗函数的长度N=M-1;%定义滤波器的阶数b=fir1(N,0.5*f2/(fs/2));%使用fir1函数设计滤波器%输入的参数分别是滤波器的阶数和截止频率figure(1)[h,f]=freqz(b,1,512);%滤波器的幅频特性图plot(f*fs/(2*pi),20*log10(abs(h)))%参数分别是频率与幅值*label('频率/赫兹');ylabel('增益/分贝');title('滤波器的增益响应');figure(2)subplot(211)t=0:1/fs:0.5;%定义时间*围和步长s=sin(2*pi*f1*t)+sin(2*pi*f2*t);%滤波前信号plot(t,s);%滤波前的信号图像*label('时间/秒');ylabel('幅度');title('信号滤波前时域图');subplot(212)Fs=fft(s,512);%将信号变换到频域AFs=abs(Fs);%信号频域图的幅值f=(0:255)*fs/512;%频率采样plot(f,AFs(1:256));%滤波前的信号频域图*label('频率/赫兹');ylabel('幅度');title('信号滤波前频域图');figure(3)sf=filter(b,1,s);%使用filter函数对信号进展滤波subplot(211)plot(t,sf)%滤波后的信号图像*label('时间/秒');ylabel('幅度');title('信号滤波后时域图');a*is([0.20.5-22]);%限定图像坐标*围subplot(212)Fsf=fft(sf,512);%滤波后的信号频域图AFsf=abs(Fsf);%信号频域图的幅值f=(0:255)*fs/512;%频率采样plot(f,AFsf(1:256))%滤波后的信号频域图*label('频率/赫兹');ylabel('幅度');title('信号滤波后频域图');2)频率抽样法的Matlab实现频率采样法是从频域出发,根据频域采样定理的频率响应Hd(ejw)加以等间距抽样,得到hd(k):Hd(k)=Hd(ejw)|ω=(2π)k/N(k=0,1,2...N-1)再利用Hd(k)可求得FIR滤波器的系统函数H(Z)及频率响应Hd(ejw)。而在各采样点间的频率响应则是其的加权内插函数延伸叠加的结果。但对于一个无限长的序列,用频率采样法必然有一定的逼近误差,误差的大小取决于理想频响曲线的形状,理想频响特性变换越平缓,则内插函数值越接近理想值,误差越小。为了提高逼近的质量,可以通过在频率相应的过度内插入比较连续的采样点,扩展过渡带使其比较连续,从而使得通带和阻带之间变换比较缓慢,以到达减少逼近误差的目的。增大阻带衰减的三种方法:加宽过渡带带宽,以牺牲过渡带换取阻带衰减的增加。过渡带的优化设计。增大N。直接从频域进展设计,物理概念清楚,直观方便;适合于窄带滤波器的设计,这时频率响应只有少数几个非零值,但是截止频率难以控制。函数程序如下:wp=0.2*pi;wr=0.4*pi;tr_width=wr-wp;N=ceil(6.6*pi/tr_width)+1n=0:1:N;wc=(wr+wp)/2;hd=ideal_lp(wc,N);w_ham=(hamming(N))’;h=hd.*w_ham;[db,mag,pha,w]=freqz_m(h,[1]);delta_w=2*pi/1000;Ap=-(min(db(1:1:wp/delta_w+1)))Ar=-round(ma*(db(wr/delta_w+1:1:501)))n(:,35)=[];subplot(2,2,1);stem(n,hd);title(‘理想单位脉冲响应’)subplot(2,2,2);stem(n,w_ham);title(‘海明窗’)subplot(2,2,3);stem(n,h);title(‘实际单位脉冲响应’)subplot(2,2,4);stem(w/pi,db);title(‘幅度响应’)a*is([0,1,-100,10]);最优化设计的Matlab实现最优化设计方法是指采用最优化准则来设计的方法。在FIRDF的最优化设计中,最优化准则有均方误差最小化准则和等波纹切比雪夫逼近准则两种。实际设计中,只有采用窗函数才能满足前一种最优化准则,但由于Gibbs效应的存在,使其根本不能满足设计的要求。为了满足设计的要求,可以采用其他的窗函数来消除Gibbs效应,但此时的设计已经能满足该最优化准则了。因此,要完成FIRDF的最优化设计,只能采用后一种优化准则来实现。尽管窗函数法与频率采样法在FIR数字滤波器的设计中有着广泛的应用,但两者不是最优化的设计。通常线性相位滤波在不同的频带内逼近的最大容许误差要求不同。等波纹切比雪夫逼近准则就是通过通带和阻带使用不同的加权函数,实现在不同频带的加权误差最大值一样,从而实现其最大误差满足性能指标的条件下到达最大值,即使得Hd(ejw)和H(ejw)之间的绝对误差最小。尽管按照FIR数字滤波器单位取样响应h(n)的对称性和N的奇,偶性,FIR数字滤波器可以分为4种类型,但是滤波器的频率响应可以写成统一的形式:H(ejw)=e-j〔N-1〕w/2ej(π/2)kH(ω)其中,k∈{0,1},H(ω)为幅度函数,且是一个纯实数,表达式也可以写成统一的形式:Hd(ejw)=Q(ω)P(ω)其中,Q(ω)为ω的固定函数,P(ω)为M个余弦函数的线性组合。在优化设计的Matlab实现中,程序中经常使用remez函数,这种函数的使用方法为:b=remez(n,f,a,w,’ftype’)n为待设计滤波器的阶数;f是一个向量,它是一个0到1的正数;a是一个向量,指定频率段的幅度值;w对应于各个频段的加权值;函数的返回值b是设计出的滤波器的系数组成的一个长度为n+1的向量。利用Remez函数设计等波纹低通滤波器设计要求:1)通带截频0.5,阻带截频0.6

,

采样频率2000Hz

2)带衰减大于等于40dB,通带波纹0.1710和阻带波纹0.01函数程序如下:fs=2000;%设定采样频率rp=3;%通带波纹rs=40;%阻带波纹f=[500600];%截止频率a=[10];%期望幅度dev=[(10^(rp/20)-1)/(10^(rp/20)+1)10^(-rs/20)];[n,fo,ao,w]=remezord(f,a,dev,fs);b=remez(n,fo,ao,w);figure(1)freqz(b,1,1024,fs);%滤波器的特性图f1=400;f2=700;%待滤波正弦信号频率t=0:1/fs:0.1;%定义时间*围和步长s=sin(2*pi*f1*t)+sin(2*pi*f2*t);%滤波前信号figure(2)

subplot(211)

plot(t,s);%滤波前的信号图像*label('时间/秒');ylabel('幅度');title('信号滤波前时域图');subplot(212)Fs=fft(s,512);%将信号变换到频域AFs=abs(Fs);%信号频域图的幅值f=(0:255)*fs/512;%频率采样plot(f,AFs(1:256));%滤波前的信号频域图*label('频率/赫兹');ylabel('幅度');title('信号滤波前频域图');figure(3)sf=filter(b,1,s);%使用filter函数对信号进展滤波subplot(211)plot(t,sf)%滤波后的信号图像*label('时间/秒');ylabel('幅度');title('信号滤波后时域图');subplot(212)Fsf=fft(sf,512);%滤波后的信号频域图AFsf=abs(Fsf);%信号频域图的幅值f=(0:255)*fs/512;%频率采

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论