采用频率采样法的FIR滤波器_第1页
采用频率采样法的FIR滤波器_第2页
采用频率采样法的FIR滤波器_第3页
采用频率采样法的FIR滤波器_第4页
采用频率采样法的FIR滤波器_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

1、吹管乐滤波去噪基于频率采样法的fir滤波器学生姓名:焦阳 指导老师:胡双红摘 要 本课程设计主要内容是设计利用频率采样法设计一个fir滤波器,对一段吹管乐进行滤波去噪处理并根据滤波前后的波形和频谱分析滤波性能。本课程设计仿真平台为matlab7.0,开发工具是m语言编程。首先在网上找到一段笛子独奏,加入一单频噪声,对信号进行频谱分析以确定所加噪声频率,设计滤波器进行滤波去噪处理,比较滤波前后的波形和频谱并进行分析。由分析结果可知,滤波器后的音频信号与原始信号基本一致,即设计的fir滤波器能够去除信号中所加单频噪声,达到了设计目的。关键词 滤波去噪;fir滤波器;频率采样法;matlab 1 引

2、 言滤波去噪1是信号处理中一种非常基本但十分重要的技术。利用滤波可以从复杂的信号中提取所需的信号,一直不需要的信号。滤波器就是这样一种可以在时域和频域对信号进行滤波处理的系统。通常情况下,有用信号和干扰信号是在不同频段上的,于是通过对滤波器的频率特性精心设计就能达到滤波的目的。本课程设计是采用频率采样法设计频率抽样型滤波器,从而对吹管乐信号滤波去噪。通过对比滤波前后的波形图及回放滤波前后的吹管乐信号,来判断滤波器对噪声信号确实有滤除作用。1.1 课程设计目的(1)熟悉使用matlab;(2)了解fir滤波器原理及结构;(3)利用所学数字信号处理想干知识用matlab设计一个fir滤波器;(4)

3、提高自己动手能力;(5)对加噪声的语音信号进行滤波去噪处理,比较滤波前后的时域波形和频谱并进行分析; 1.2 课程设计要求(1)滤波器指标必须符合工程设计;(2)设计完后应检查其频率响应曲线是否满足指标;(3)处理结果和分析结论应该一致,而且应符合理论;(4)独立完成课程设计并按要求编写课程设计报告;1.3 设计平台本课程设计仿真平台为matlab7.0。matlab的名称源自matrix laboratory,1984年由美工mathworks公司推向市场。它是一种科学计算软件,专门以矩阵的形式处理数据。matlab将高性能的数值计算和可视化集成在一起,并提供了大量的内置函数,从而被广泛地应

4、用于科学计算、控制系统、信号处理等领域的分许、仿真和设计工作。1993年mathworks公司从加拿大滑铁卢大学购得maple软件的使用权,从而以maple为“引擎”开发了符号数学工具箱(symbolic math toolbox)2。2 设计原理用网上找一段吹管乐,绘制波形并且观察其频谱,给定相应技术指标,用频率采样法设计的一个满足指标的频率采样型fir滤波器,对该信号进行滤波去噪处理,比较滤波前后的波形和频谱进行分析。2.1 fir滤波器的设计fir(finite implse response)3滤波器:有限长单位冲激响应滤波器,又称为非递归型滤波器,是数字信号处理系统中最基本的元件,他

5、可以在保证任意幅频特性的同时具有严格的线性相频特性,同时其单位抽样响应是有限长的,因而滤波器是稳定的系统。因此,fir滤波器在通信、图像处理、模式识别等领域都有着广泛的应用。有限长单位冲激响应(fir)滤波器有以下特点:(1) 系统的单位冲激响应h(n)在有限个n值处不为0;(2) 系统函数h(z)在|z|0处收敛,极点全部在z=0处(因果系统);(3) 结构上主要是非递归结构,没有输出到输入的反馈,但有些结构中(例如频率抽样结构)也包含有反馈的递归部分。2.2 频率采样型结构把一个有限长序列(长度为n点)的z变换h(z)在单位圆上作n等分抽样,就得到h(k),其主值序列就等于h(n)的离散傅

6、里叶变换h(k)。那里也说到用h(k)表示的h(z)的内插公式为 (2-1)这个公式就为fir滤波器提供了另外一种结构,这种结构由两部分级联组成。 (2-2)其中级联的第一部分为梳状滤波器,其结构如图所示: (2-3) x(n) 1 r(n) -z-n图2-1 梳状滤波器结构图第二部分由n各谐振器组成的谐振柜。它是由n个一阶网络并联而成,而这每一个一阶网络都是一个谐振器 (2-4) 其结构如下图所示: h(k) hk(z)w-a 图2-2 一阶谐振器频率抽样型结构特点:(1)它的系数h(k)直接就是在滤波器在处得频率响应。因此,控制 得频率响应是很直接得。(2)结构有两个主要缺点:a所有的相乘

7、系数及h(k)都是复数,应将它们先化成二阶实数,这样乘起来较复杂,增加乘法次数,存储量。b所有谐振器的极点都是在单位圆上,由决定考虑到系数量化的影响,当系数量化时,极点会移动,有些极点就不能被梳状滤波器的零点所抵消。(零点由延时单元决定,不受量化的影响)系统就不稳定了。(3)将一阶网络合并为二阶网络:a第k和第n-k个谐振器合并为一个实系数的二阶网络,因为h(n)是实数,他的dft也是圆周共轭对称的。 (2-5)因此,可以将第k和第n-k个谐振器合并为一个二阶网络。 (2-6)其中: b第k和第n-k个谐振器合并为一个二阶网络的极点在单位圆内,而不是在单位圆上,因而从频率响应的几何解释可知,它

8、相当于一个有限q的谐振器。其谐振频率为 。图2-3 二阶网络结构图除了共轭复根外,还有实根。当n=偶数时,有一对实根,它们分别是k=0,k=n/2两个点。 和 (2-7)当n=奇数时,只有一个实根z=r(k=0),即只有h0(z)。c修正频率抽样结构流图(n=偶数)图2-4 修正频率抽样结构流图(n=偶数) (2-8)修正频率抽样结构流图(n=奇数)图2-5 修正频率抽样结构流图(n=奇数) (2-9)2.3 频率采样法2.3.1 设计思路:这种设计方法是从频域进行设计的一种方法,首先给定一个希望逼近的频率响应。 (2-10)知道h(k)后,由idft定义,可以用这n个采样值h(k)来唯一确定

9、有限长序列h(n),即 (2-11) (2-12) (2-13)内插公式: (2-15)四种线性相位的fir滤波器如下表2-1所示:表2-1 四种线性相位的fir滤波器2.3.2 逼近误差及其改进措施:(1)采样点上滤波器的实际响应是严格地和理想频率响应数值相等的;(2)在采样点之间的频率响应则是由各采样点的加权内插函数的延伸叠加而成的,因而有一定的逼近误差,误差大小取决于理想频率响应曲线形状。(3)理想频率响应特性变化越平缓,则内插值越接近理想值,逼近误差越小;(4)如果采样点之间的理想频率特性变化越陡,则内插值与理想值的误差就越大,因而在理想频率特性的不连续点附近,就会产生尖峰和起伏。2.

10、3.3 滤波器性能的改善:(1) 增加过滤带采样点,它可以大大减少震荡,阻带衰减也可以得到进一步改善。一般一点到二点的过滤带采样即可得到满意的结果。(2) 增加采样点密度,过渡带的宽度与采样点数n成反比。但n值意味着或长度的增加,滤波器运算量必然增大4。3 设计步骤3.1 设计流程图开始在网上找到一段笛子独奏,并用wavread函数采集,加入3200hz的噪声。进行快速傅里叶变换,绘制加噪前后的频谱对比图,和时域对比图。设定滤波器的性能指标用频率采样法设计频率采样型的fir滤波器滤波器是否符合标准n y用设计的滤波器进行滤波处理,回放滤波后的信号,并保存比较滤波前后音频信号的波形和频谱回放音乐

11、结束图3-1 流程图3.2 音频信号获取在网上下载一段吹管乐,并截取适当片段。把音频放到电脑录音机里面,把音频属性设置为8000hz。如图3-2所示:图3-2 音频信号设置然后在matlab软件平台下,利用函数wavread对音频信号进行采样,源程序为:x,fs,bits=wavread(梅花三弄.wav),记住采样频率和采样点数,matlab实现得:fs=8000;bits=8。3.3 音频信号的频谱分析 x,fs,bits=wavread(e:梅花三弄.wav); % 输入参数为文件的全路径和文件名,输出的第一个参数是每个样本的值,fs是生成该波形文件时的采样率,bits是波形文件每样本的

12、编码位数。sound(x,fs,bits); % 按指定的采样率和每样本编码位数回放n=length(x); % 计算信号x的长度fn=3200; % 单频噪声频率,此参数可改t=0:1/fs:(n-1)/fs; % 计算时间范围,样本数除以采样频率x=x(:,1); % 将双声道转为单声道y=x+0.1*sin(fn*2*pi*t); % 加噪声sound(y,fs,bits); % 应该可以明显听出有尖锐的单频啸叫声x=abs(fft(x); y=abs(fft(y); % 对原始信号和加噪信号进行fft变换,取幅度谱x=x(1:n/2); y=y(1:n/2); % 截取前半部分delt

13、af=fs/n; % 计算频谱的谱线间隔f=0:deltaf:fs/2-deltaf; % 计算频谱频率范围运行结果如下图:图3-3 加噪前后时域频域对比图由图3-3可以看出,在频域为3200hz处加入一个单频噪声,而加入噪声之后,时域的波形图出现了明显失真,通过听取原音频信号x和加噪声音频信号y,可以明显听到y音频信号中有一明显尖锐噪声。3.4 滤波器设计设计一个低通滤波器,将单频信号滤出去,源程序如下所示:fcd=2000; fcu=2500;fs=8000; % 定义设计指标,通带截止频率fcd和阻带截止频率fcurp=0.5;as=40;wp=fcd/fs*2*pi;ws=fcu/fs

14、*2*pi; % 将模拟指标转换为数字指标delta_w=2*pi/1000;rp=-(min(db(1:1:wp/delta_w+1);as=-round(max(db(ws/delta_w+1:1:501);t1=0.6025,t2=0.127;t=0.38; % 设置自由样本的最优值tdeltab=wcu-wcd; % 计算过渡带宽deltabm=1; % 设置自由样本数mn=(m+1)*2*pi/deltab+1; % 根据过渡带宽和自由样本数计算采样点数nn=ceil(n+mod(n+1,2); % 将n处理为奇数ns=fix(fcu-fcd)*2*pi/(2*pi*n); % 计算

15、阻带内样本数np=ceil(n-ns); % 计算通带内样本数ak=ones(1,np),zeros(1,2*ns+1),ones(1,np-1); % 得到理想滤波器幅度特性采样值ak(np+1)=t;ak(2*n-np+1)=t; % 设置过渡带样本为最优值m=length(ak); alpha=(m-1)/2;k1=0:floor(m-1)/2);k2=floor(m-1)/2)+1:m-1; angh=-alpha*(2*pi)/m*k1,alpha*(2*pi)/m*(m-k2); % 计算分段线性相位hk=ak.*exp(j*angh); % 幅度和相位相乘得实际滤波器频率特性hk

16、hn=real(ifft(hk); % 对hk作ifft得到脉冲响应hndb,mag,pha,grd,w=freqz_m(hn,1); % 计算hn对应系统的频率响应% 作图检查幅度特性是否满足预定指标程序运行结果如下图3-4所示:图3-4 滤波器参数图由图3-4可以看出,滤波器的衰减大于设定值as=40,满足性能指标,滤波器的衰减可由增加过度带宽来得到。3.5信号滤波处理源程序如下所示:y_fil=fftfilt(hn,y);y_fil=fft(y_fil);y_fil=abs(y_fil);y_fil=y_fil(1:n/2);程序运行结果如下图3-5所示:图3-5 滤波前后时域、频域对比

17、图频谱取前一半由上图3-5可以看出,在滤波之后时域图能得到恢复,频域图中的单频噪声信号也得到滤除,说明了设计的滤波器能滤除加入的噪声信号,因此说达到了设计要求。3.6结果分析开始通过分析决定设计一个带阻的滤波器来滤除加入的单频噪声,根据噪声的频率来设计阻带的范围。在收集音频信号后,按照步骤用频率采样法设计频率采样型滤波器。由图3-4可知,设计的滤波器达到要求。我们观察到图3-5滤波前后音频型号的波形对比图,发现时域波形中加干扰噪声后有明显变化,不过经过滤波后几乎没有变化,说明设计的滤波器达到要求。再通过听取原始语音信号,加噪信号y和滤波之后的信号y_fil。对比之后,发现滤波器确实滤除了噪声。

18、从理想的角度考虑,该带阻滤波器的阻带带宽应该可以变得更窄,让滤波效果更好,但是这样的采样值会变得非常大。考虑到实际的情况,权衡之后,决定牺牲带宽来使得滤波器的阶数降低,因此在上图3-5中我们可以看出,在噪声频谱左右两边的信号也被滤除了。4 出现的问题及解决办法在这次课程设计当中,由于基础不扎实,出现了很多问题,即matlab软件操作不当,也有知识掌握程度不够出现的各种问题。1. 在一开始找音频后,没有修改参数值,导致频率抽样过高,在老师提醒下,改为8000hz;2. 在调用音乐文件时,没有将文件放在matlab的工作文件夹下面,到时文件找不到。还有有程序中用到的各种函数没有放入正确的位置;3.

19、 在绘制加噪前后频率对比图时,留白过多,对比不明显,通过axis函数对横纵坐标进行限定;4. 在设计滤波器的过程中,没有准确理解每一条指令代表的含义,导致程序前后不对应,出现更多错误,通过matlab中的错误提示,准确找到错误的那一行代码,进行修改;5. 在设计滤波器的过程中,滤波器的衰减小于开始所设置的值,通过牺牲过渡带和调节过渡带的采样值,即t1和t2来使得衰减大于所设定值as;6. 最后听取滤波后声音过程当中,没有将其保存,请教同学之后,学会了如何保存滤波后的声音文件。5 结束语这是第二次课程设计,在前面的课程设计当中我们学习到如何使用matlab,所以对于matlab软件的使用并没有那

20、么陌生了,尽管如此,在使用matlab的过程中还是出现了很多错误,比如说忘记添加函数文件,参数前后不对应之类的低级错误。此次课程设计,让我更深入的了解到频率抽样法以及频率抽样型的滤波器,由开始的无从下手,再翻阅书上的例子。首先决定使用低通的滤波器将噪声滤除,但由于是加入的是一个单频的信号噪声,就决定使用带阻滤波器的例子,所以就通过书籍信号与系统上高通的例题来进行修改,当然这过程不是一蹴而就的。经历过一次又一次的错误,猜得出来最后的模型。还有这也是我和其他同学一起讨论来的。这次课设让我对滤波器的类型有了一个更加完整了解,在设计中也使我对一些概念有了更深刻的认识。比如:在滤波器分类方面,我深刻的了

21、解了低通,高通滤波器与带通,带阻滤波器的特性区别。还有在课程设计中每一次的数据输入都有其重要意义,用matlab编译程序时,可以根据滤波器指标的要求实时知道对滤波器的影响。通过一次次的调试和权衡使滤波器的性能达到最佳。课程设计不仅要求对滤波器理论的研究,更重要的是培养一种遇到问题解决问题的思维。因为有了这次课程设计,我懂得了书本知识只是实际应用的理论指导。如果仅仅只学习书本知识,不去在实践中运用,那只是停留在知识表面,不知其因的层面。比如在数学计算上,可以将噪声完全滤除。而在这次课设中,若要完全滤除噪音,滤波器的阶数就会增高,在现实生活中是很难实现的,所以噪声是不能完全滤除的。课程设计结束了,

22、我相信这次课程设计对今后的学习是很有帮助的,它让我将理论更好的和实践相结合,提高了动手的能力,也填补了自己学习上的一些不足。这次课设的成功,不仅仅是我一个人的努力的结果,更离不开指导老师与同学的帮助,在此向老师和同学们表示衷心的感谢。参考文献1 吴镇扬,数字信号处理m,高等教育出版社,20042 张圣勤,matlab7.0实用教程m,北京:机械工程出版社,20063 程佩青,数字信号处理教程m,北京:清华大学出版社,20024 高西全,丁玉美,数字信号处理m,第三版,西安:西安科大出版社,1994附录:源程序x,fs,bits=wavread(e:梅花三弄.wav); % 输入参数为文件的全路

23、径和文件名,输出的第一个参数是每个样本的值,fs是生成该波形文件时的采样率,bits是波形文件每样本的编码位数。 sound(x,fs,bits); % 按指定的采样率和每样本编码位数回放 n=length(x); % 计算信号x的长度 fn=3200; % 单频噪声频率,此参数可改t=0:1/fs:(n-1)/fs; % 计算时间范围,样本数除以采样频率x=x(:,1); % 将双声道转为单声道y=x+0.1*sin(fn*2*pi*t); % 加噪声 sound(y,fs,bits); % 应该可以明显听出有尖锐的单频啸叫声 x=abs(fft(x); y=abs(fft(y); % 对原

24、始信号和加噪信号进行fft变换,取幅度谱x=x(1:n/2); y=y(1:n/2); % 截取前半部分deltaf=fs/n; % 计算频谱的谱线间隔 f=0:deltaf:fs/2-deltaf; % 计算频谱频率范围figure(1)subplot(2,2,1);plot(t,x);axis(0,3,-1.3,1.3);grid onxlabel(时间(单位:s);ylabel(幅度);title(原始音乐信号);subplot(2,2,2);plot( f,x(1:n/2);axis(0,5000,0,4000);grid onxlabel(频率(单位:hz);ylabel(幅度谱);

25、title(音乐信号幅度谱图);subplot(2,2,3);plot(t,y);axis(0,3,-1.3,1.3);grid onxlabel(时间(单位:s);ylabel(幅度);title(加入单频干扰的音乐信号);subplot(2,2,4);plot(f,y);axis(0,5000,0,4000);grid onxlabel(频率(单位:hz));ylabel(幅度谱);title(加入干扰后的音乐信号幅度谱图);fcd=2000; fcu=2500;fs=8000; % 定义设计指标,通带截止频率fcd和阻带截止频率fcurp=0.5;as=40;wp=fcd/fs*2*pi

26、;ws=fcu/fs*2*pi; % 将模拟指标转换为数字指标delta_w=2*pi/1000;rp=-(min(db(1:1:wp/delta_w+1);as=-round(max(db(ws/delta_w+1:1:501);t1=0.6025,t2=0.127;t=0.38; % 设置自由样本的最优值tdeltab=wcu-wcd; % 计算过渡带宽deltabm=1; % 设置自由样本数mn=(m+1)*2*pi/deltab+1; % 根据过渡带宽和自由样本数计算采样点数nn=ceil(n+mod(n+1,2); % 将n处理为奇数ns=fix(fcu-fcd)*2*pi/(2*p

27、i*n); % 计算阻带内样本数np=ceil(n-ns); % 计算通带内样本数ak=ones(1,np),zeros(1,2*ns+1),ones(1,np-1); % 得到理想滤波器幅度特性采样值ak(np+1)=t;ak(2*n-np+1)=t; % 设置过渡带样本为最优值m=length(ak); alpha=(m-1)/2;k1=0:floor(m-1)/2);k2=floor(m-1)/2)+1:m-1; angh=-alpha*(2*pi)/m*k1,alpha*(2*pi)/m*(m-k2); % 计算分段线性相位hk=ak.*exp(j*angh); % 幅度和相位相乘得实

28、际滤波器频率特性hkhn=real(ifft(hk); % 对hk作ifft得到脉冲响应hndb,mag,pha,grd,w=freqz_m(hn,1); % 计算hn对应系统的频率响应% 作图检查幅度特性是否满足预定指标figure(2)subplot(2,2,1);plot(w/pi,db)grid on;xlabel(w/pi);ylabel(db);title(滤波器db);x_l=0,0,wp/pi,ws/pi;1,1,wp/pi,ws/pi;y_l=-as,-rp,-100,-100;-as,-rp,0,0;%在wp,ws,rp,as处画线以更直观判断设计是否达标,每列参数是每个线条的端点坐标line(x_l,y_l,color,r,linewidth,2,linestyle,-)%添加线条,红色,线宽为2axis(0 1 -

温馨提示

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

评论

0/150

提交评论