1 / 14
文档名称:

使用布莱克曼窗设计的fir滤波器正文.doc

格式:doc   大小:145KB   页数:14页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

使用布莱克曼窗设计的fir滤波器正文.doc

上传人:小吴 2023/3/20 文件大小:145 KB

下载得到文件列表

使用布莱克曼窗设计的fir滤波器正文.doc

文档介绍

文档介绍:该【使用布莱克曼窗设计的fir滤波器正文 】是由【小吴】上传分享,文档一共【14】页,该文档可以免费在线阅读,需要了解更多关于【使用布莱克曼窗设计的fir滤波器正文 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。XX ?音乐信号滤波去噪--使用布莱克曼窗设计的FIR滤波器?    
音乐信号滤波去噪
——使用布莱克曼窗设计的FIR滤波器
摘要本课程设计主要是用麦克风采集一段语音信号,绘制其波形并观察其频谱。然后在该语言信号中加一个噪音,利用布莱克曼窗设计一个FIR滤波器,对该语音信号进行虑噪处理,然后比拟滤波前后的波形与频谱。在本课程设计中,是用MATLAB的集成环境完成一系列的设计。首先对加噪的语音信号进行虑波去噪处理,再比拟滤波前后的频率响应曲线,假设一样那么满足所设计指标,否那么不满足。也可以调用函数sound听滤波前后其语音信号是否带有噪声。假设无噪声也说明该滤波器的设置也是成功的。
关键词音乐信号;MATLAB;FIR滤波器;滤波去噪
1引言
人们在语音通信的过程中将不可防止的会受到来自周围环境的干扰,例如传输媒介引入的噪声,通信设备内部的电噪声,乃至其他讲话者的话音等。正因为有这些干扰噪声的存在,接受者接受到的语音已不是原始的纯洁语音信号,而是受噪声干扰污染的带噪声语音信号。而本课程设计就是利用MATLAB集成环境用布莱克曼窗的方法设计一个FIR滤波器,对语音信号进行滤波去噪处理,并将虑噪前后的频谱图进行比照。

数字信号处理课程设计是数字信号处理课程的重要实践性环节,是学生在校期间一次较全面的工程师能力训练,在实现学生总体培养目标中占有重要地位。综合运用本课程的理论知识进行频谱分析以及滤波器设计,通过理论推导得出相应结论,并利用MATLAB作为编程工具进行计算机实现,从而复****稳固了课堂所学的理论知识,提高了对所学知识的综合应用能力,并从实践上初步实现了对数字信号的处理。本课程设计能使学生对通信工程领域各种技术的DSP实现的设计有较熟练的掌握。且通过自身的实践,对DSP的设计程序、内容和方法有更深入的掌握,提高实际运用的能力。并可综合运用这些知识解决一定的实际问题,使学生在所学知识的综合运用能力上以及分析问题、解决问题能力上得到一定的提高。

〔1〕滤波器指标必须符合工程实际。
     XX ?音乐信号滤波去噪--使用布莱克曼窗设计的FIR滤波器?    
〔2〕设计完后应检查其频率响应曲线是否满足指标。
〔3〕处理结果和分析结论应该一致,而且应符合理论。
〔4〕独立完成课程设计并按要求编写课程设计报告书。

MATLAB名称是有两个英文单词Matrix和Laboratory的前三个字母组成。。MATLAB自20世纪80年代面世以来,以其强大的数值计算能力、优秀的绘图功能以及与其他软件良好的交互功能在众多的数学计算软件中独领风骚,特别是它源代码的开放性使用户可以二次开发,受到了广阔使用者的格外赞赏。
MATLAB是一个为科学和工程计算机专门设计的交互式大型软件,是一个可以完成各种精确计算和数据处理的、可视化的、强大的计算工具。它集图和精确计算与一身,在应用数学、物理、化工、机电工程、医药、金融和其他需要进行复杂数值计算的领域得到了广泛应用。它不仅是一个在各类工程设计中便于使用的计算工具,在世界各地的高等院校中十分流行,在各类工业应用中更有不俗的表现。MATLAB可以几乎所有的PC机和大型计算机上运行,适用于Window、UNIX等多种系统平台。本课程设计我们就可以直接诶使用MATLAB提供的模块,实现模拟通信系统的仿真。
MATLAB软件有很强的开放性和适应性。在保持内核不变的情况下,MATLAB可以针对不同的应用学科推出相应的工具箱,目前已经推出了图像处理工具箱、信号处理工具箱、小波工具箱、神经网络工具箱以及通信工具箱等多个学科的专用工具箱,极大的方便了不同学科的研究工作。国内已有越来越多的科研和技术人员认识到MABLAB的强大作用,并在不同领域内使用MATLAB来快速实现科研设想和提高工作效率。
2设计原理

FIR(FiniteImpulseResponse)滤波器:有限长单位冲激响应滤波器,是数字信号处理系统中最根本的元件,它可以在保证任意幅频特性的同时具有严格的线性相频特性,同时其单位抽样响应是有限长的,因而滤波器是稳定的系统。因此,FIR滤波器在通信、图像处理、模式识别等领域都有着广泛的应用。
FIR数字滤波器以其良好的线性特性被广泛应用于现代电子通信系统中,是数字信号处理的重要内容之一。在实际信号处理中,往往要求系统兼具实时性和灵巧性,而已有的一些软件或硬件实现方案(如DSP)那么难以同时到达这两方面的要求。使用具有并行处理特性的FPGA来实现FIR滤波器,既有很强的实时性,又兼顾了灵巧性,为数字信号处理提供了一种很好的解决方案。FIR滤波器系数计算较为繁琐,在设计时借助Matlab工具箱,选择适宜的窗函数,可以方便地计算滤波器系数,并分析其幅频、相频特性。
     XX ?音乐信号滤波去噪--使用布莱克曼窗设计的FIR滤波器?    
有限长单位冲激响应〔FIR〕滤波器有以下特点:
(1)、系统的单位冲激响应h(n)在有限个n值处不为零;
(2)、系统函数H(z)在|z|>0处收敛,极点全部在z=0处〔因果系统〕;
(3)、结构上主要是非递归结构,没有输出到输入的反应,但有些结构中〔例如频率抽样结构〕也包含有反应的递归局部。
设FIR滤波器的单位冲激响应h(n)为一个N点序列,0≤n≤N—1,那么滤波器的系统函数为:
H(z)=-n(2-1)
 就是说,它有〔N—1〕阶极点在z=0处,有〔N—1〕个零点位于有限z平面的任何位置因此H(z)是永远稳定的。稳定和相位特性是FIR滤波器突出的优点。FIR滤波器有以下几种根本结构:横截型〔卷积型、直接型〕、级联型、频率抽样型、快速卷积结构。
FIRDF的设计方法主要分为两类:第一类是基于逼近理想滤波器特性的方法,包括窗函数法、频率采样法和等波纹最正确逼近法;第二类是最优设计法。

。不过,当运用计算机实现工程测试信号处理时,不可能对无限长的信号进行测量和运算,而是取其有限的时间片段进行分析。做法是从信号中截取一个时间片段,然后用观察的信号时间片段进行周期延拓处理,得到虚拟的无限长的信号,然后就可以对信号进行傅里叶变换、相关分析等数学处理。无线长的信号被截断以后,其频谱发生了畸变,原来集中在f(0)处的能量被分散到两个较宽的频带中去了(这种现象称之为频谱能量泄漏)。
为了减少频谱能量泄漏,可采用不同的截取函数对信号进行截断,截断函数称为窗函数,简称为窗。
窗函数设计法的根本思路是用FIRDF逼近希望的滤波特性。设希望逼近的滤波器的频率响应函数为hd(ejω),其单位脉冲响应用hd(n)表示。为了设计简单方便,通常选择hd(ejω)为具有片段常数特性的理想滤波器。因此hd(n)是无限长非因果序列,不能直接作为FIRDF的单位脉冲响应。窗函数设计法就是截取h
     XX ?音乐信号滤波去噪--使用布莱克曼窗设计的FIR滤波器?    
d(n)为有限长的一段因果序列,并用适宜的窗函数进行加权做为FIRDF的单位脉冲响应h(n)。下面介绍窗函数设计法的根本设计过程。
窗口设计法的主要工作是计算hd(n)和w(n),但当Hd(ejω)较为复杂时,hd(n)就不容易由反付里叶变换求得。这时一般可用离散付里叶变换代替连续付里叶变换,求得近似值。
窗口法的设计步骤如下:
〔1〕、通过傅里叶变换忽的理想滤波器的单位脉冲响应hd(n)。
〔2〕、根据指标选择窗口形状、大小和位置。确定窗口类型的主要依据是过渡带宽和阻带最小衰耗的指标。
〔3〕、给定理想频响由hd(ejω)和hd(n),加窗得h(n)=w(n)hd(n)。
〔4〕、检验滤波器的性能。由h〔n〕求H(ejω)是否在误差容限之内。如果不满足,那么返回第〔2〕步。
以上步骤中hd(n)、H(ejω)的计算可采用傅氏变换的现成公式和程序,窗函数w(n)也是现成的。但整个设计过程不能一次完成,因为窗口类型和大小的选择没有解析公式可一次算出。整个设计可用计算机编程来做。
窗口法的优点是简单,有闭合的公式可用,性能及参数都有表格资料可查,计算程序简单,较为实用。缺点是当Hd(ejω)较为复杂时,hd(n)就不容易由反付里叶变换求得。边界频率因为加窗的影响而不易控制。
窗口函数对理想特性的影响:改变了理想频响的边沿特性,形成过渡带,宽为,等于WR(ω)的主瓣宽度;过渡带两旁产生肩峰和余振〔带内、带外起伏〕,取决于WR(ω)的旁瓣,旁瓣多,余振多;旁瓣相对值大,肩峰强,与N无关;N增加,过渡带宽减小,肩峰值不变。因主瓣附近
(2-2)
其中x=Nω/2,所以N的改变不能改变主瓣与旁瓣的比例关系,只能改变WR〔ω〕的绝对值大小和起伏的密度,当N增加时,幅值变大,频率轴变密,%,这种现象称为吉布斯〔Gibbs〕效应。
肩峰值的大小决定了滤波器通带内的平稳程度和阻带内的衰减,所以对滤波器的性能有很大的影响。改变窗函数的形状,可改善滤波器的特性,窗函数有许多种,但要满足以下两点要求:窗谱主瓣宽度要窄,以获得较陡的过渡带;相对于主瓣幅度,旁瓣要尽可能小,使能量尽量集中在主瓣中,这样就可以减小肩峰和余振,以提高阻带衰减和通带平稳性。但实际上对同样长度的窗这两点不能兼得,一般总是通过增加主瓣宽度来换取对旁瓣的抑制。
     XX ?音乐信号滤波去噪--使用布莱克曼窗设计的FIR滤波器?    

布莱克曼窗的时域形式可表示为:
N(n)(2-3)
它的频域特性为:
WRRR
RR(2-4)
其中为矩形窗函数的幅度频率特性。
增加一个二次谐波余弦分量,可进一步降低旁瓣,但主瓣宽度进一步增加,为。加N可减少过渡带。布莱克曼窗函数的最大旁瓣之比主瓣值低57db,但是主瓣宽度是矩形窗函数的主瓣宽度的三倍。布莱克曼窗主瓣宽,旁瓣小,频率识别精度最低,但幅值识别精度最高。
3设计步骤

本课程设计是对录制的语音信号进行加噪处理并分析加噪前后语音信号的时域图与频域图,再用布莱克曼窗设计一个FIR滤波器,而滤波器的设计必须符合其相应的指标,否那么将不能滤掉参加的噪声。最后将滤波前后的波形图进行比拟看是否相同。:
     XX ?音乐信号滤波去噪--使用布莱克曼窗设计的FIR滤波器?    
开始
录制语音信号
分析语音信号的频谱
用布莱克曼窗设计FIR滤波器
在语音信号中参加噪声
用滤波器对信号进行滤波
比拟滤波前后的波型及频谱
回放语音信号
结束


点击桌面上的“开始〞菜单,再选择“程序〞中的“附件〞,在“附件“的菜单栏中选择“娱乐〞,最后点击“录音机〞。。然后点击开始录制语音信号,时间大约在2~3秒之间。

录制好语音信号后,翻开MATLAB软件平台,利用函数waveread对语音信号进行采样,记住采样频率的和采样点数。再调用函数sound此时可以听见录制的语音。采样完后再语音信号中参加一个单频噪声,单频的噪声的频率可以自己设置。按照参加噪声后的采样频率调用sound函数,这时可以明显的听见播放的语音信号中有锋利的单频啸叫声。
     XX ?音乐信号滤波去噪--使用布莱克曼窗设计的FIR滤波器?    
下面是调用该语言信号以及参加噪声的程序:
[x,fs,bits]=wavread('e:');%输入参数为文件的全路径和文件名,输出的第一个参数是每个样本的值,fs是生成该波形文件时的采样率,bits是波形文件每样本的编码位数
sound(x,fs,bits);%按指定的采样率和每样本编码位数回放
N=length(x);%计算信号x的长度
fn=2100;%单频噪声频率,此参数可改
t=0:1/fs:(N-1)/fs;%计算时间范围,样本数除以采样频率
x=x(:,1)';
y=x+*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);%截取前半局部
deltaf=fs/N;%计算频谱的谱线间隔
f=0:deltaf:fs/2-deltaf;%计算频谱频率范围
     XX ?音乐信号滤波去噪--使用布莱克曼窗设计的FIR滤波器?    


本课程设计就是要设计一个滤波器虑掉参加的噪声,使其恢复原始的语音信号。而设计滤波器的方法有很多,例如:窗函数法、频率采样法、脉冲响应不变法和双线性变换法。而本课程设计采用的是窗函数法设计FIR滤波器。而FIR滤波器的设计也有很多方法。在Matlab中,可以利用矩形窗、三角窗、汉宁窗、汉明窗、布莱克曼窗、凯塞窗等设计FIR滤波器。而本次采用的是布莱克曼窗来设计滤波器。
在用布莱克曼窗设计滤波器的时候,首先要确定滤波器的性能指标。从六种窗函数的根本参数中我们可以得到旁瓣峰值n=-57,过度带宽B=11,最小阻带衰减s=74db,这就说明在设置这些值时其参数必须不大于这些值。而其它带阻滤波器的设计指标那么要根据参加噪声的频率来确定。假设不能按照这些来设计滤波器那么不可能虑掉噪声。当所有的指标都设置完后,可以用这些数字来计算上下边带的中心频率和频率间隔,并计算布莱克曼窗设计该滤波器所需要的阶数和产生几阶的布莱克曼窗。当所有的准备工作完成后就可以调用自编的函数计算理想带阻滤波器的脉冲响应和用窗函数法计算实际的滤波器的脉冲响应。最后调用freqz函数得到滤波器的频率特性。从画出的图中可以清楚的看见滤波器的幅频和相频特性。
下面是用布莱克曼窗设计滤波器的整个程序:
     XX ?音乐信号滤波去噪--使用布莱克曼窗设计的FIR滤波器?    
fpd=1800;fsd=2050;fsu=1950;fpu=2000;Rp=1;As=70;%带阻滤波器设计指标
fcd=(fpd+fsd)/2;fcu=(fpu+fsu)/2;
df=min((fsd-fpd),(fpu-fsu));%计算上下边带中心频率,和频率间隔
wcd=fcd/fs*2*pi;wcu=fcu/fs*2*pi;dw=df/fs*2*pi;%将Hz为单位的模拟频率换算为rad为单位的数字频率
wsd=fsd/fs*2*pi;wsu=fsu/fs*2*pi;
M=ceil(10*pi/dw)+1;%计算布莱克曼窗设计该滤波器时需要的阶数
n=0:M-1;%定义时间范围
w_black=blackman(M);%产生M阶的布莱克曼窗
hd_bs=ideal_lp(wcd,M)+ideal_lp(pi,M)-ideal_lp(wcu,M);%调用自编函数计算理想带阻滤波器的脉冲响应
h_bs=w_black'.*hd_bs;%用窗口法计算实际滤波器脉冲响应
[db,mag,pha,grd,w]=freqz_m(h_bs,1);%调用自编函数计算滤波器的频率特性

     XX ?音乐信号滤波去噪--使用布莱克曼窗设计的FIR滤波器?    

对语音信号信号进行滤波处理主要是滤掉参加的噪声。不同的滤波器利用不同的函数对语音信号进行滤波,FIR滤波器利用函数fftfilt对信号进行滤波。
对信号进行滤波处理要先利用函数filter对y进行滤波,然后对y进行傅里叶变换。而画频谱时只取前面一半。最后在同一个图中画出原始信号的、参加噪声的语音信号以及滤波后语音信号的频域图和时域图。这样便于将所有的图进行比照和分析,而且还可以直观的观察该课程设计是否成功。当将设计好的滤波器滤掉噪声后我们也可以再一次调用函数sound,听此时的声音是否与原始语音信号根本一样,假设没有单频啸叫声那么说明此次设计是成功的,否那么应重新设置指标。
下面是对语音信号进行滤波的程序:
y_fil=filter(h_bs,1,y);%用设计好的滤波器对y进行滤波
Y_fil=fft(y_fil);%对y进行傅里叶变化
Y_fil=Y_fil(1:length(Y_fil)/2);%计算频谱取前一半

sound(x,fs,bits);可以感觉滤波前后的声音有变化。