音乐信号滤波处理.docx
- 文档编号:28187023
- 上传时间:2023-07-09
- 格式:DOCX
- 页数:20
- 大小:133.73KB
音乐信号滤波处理.docx
《音乐信号滤波处理.docx》由会员分享,可在线阅读,更多相关《音乐信号滤波处理.docx(20页珍藏版)》请在冰豆网上搜索。
音乐信号滤波处理
音乐信号滤波去噪——使用parzenwin窗设计的FIR滤波器
学生姓名:
秦彩群指导老师:
胡双红
摘要本课程设计主要是利用parzenwin窗设计的FIR滤波器对音乐信号滤波去噪。
用windows附件中的录音机录一段音乐,在matlab集成环境下用wavread函数求出音乐信号的三个参数,对录制的的音乐信号进行读取,并绘制时域和频域图。
对信号进行傅立叶变化,绘制出时域和频域波形,并绘制对比图,最后通过回放音乐信号,对比滤波前后的信号变化。
本课程设计成功地对音乐信号进行滤波去噪,初步完成了设计指标。
关键字滤波去噪FIR滤波器parzenwin窗频谱图MATLAB
1引言
本课程设计是采用parzenwin窗设计的FIR滤波器对音乐信号滤波去噪。
通过课程设计了解FIR滤波器的原理和使用方法,了解使用MATLAB语言设计FIR滤波器的方法,了解DSP对FIR滤波器的设计及编程方法。
通过观察滤波前后的音乐信号,可以看出滤波器对有用信号的无失真放大具有重大作用。
1.1课程设计的目的
利用MATLAB环境下的M文件,用parzenwin窗设计的FIR滤波器来实现对音乐信号去噪,并绘制出滤波前后的时域和频域波形及播放声音的变化,根据运行结果和波形来分析设计过程的正确性。
通过这次课程设计,加深对parzenwin窗设计的FIR滤波器的理解,掌握MATLAB软件在滤波器设计中的应用,锻炼逻辑思维能力,动手能力以及独立解决问题的能力,对以后更深入地学习和应用数字信号处理及相关知识作准备。
1.2课程设计的要求
(1)滤波器指标必须符合工程实际。
(2)设计完后应检查其频率响应曲线是否满足指标。
(3)处理结果和分析结论应该一致,而且应符合理论。
(4)独立完成课程设计并按要求编写课程设计报告书。
1.3设计平台
MATLAB是美国Mathworks公司开发的新一代科学计算软件,是一套高性能的数值计算和可视化软件、功能强大、编程简单、开放性强,广泛应用于计算机辅助分析设计、仿真、数据处理等领域,是当今国际上公认的在科技领域方面最为优秀的应用软件和开发环境。
在欧美各高等院校,已经成为应用线性代数、自动控制理论、数据统计、数字信号处理、时间序列分析、动态系统仿真、图像处理等高级课程的基本教学工具。
MATLAB是一种既可交互使用又能解释执行的计算机编程语音,使用数学表达式的自然化语音,简单易学,具有可靠的数值、符号运算能力和强大的图形可视化功能。
此外,MATLAB内部包括许多专业性较强的工具包并与其他高级语音有接口。
MATLAB的功能和特点使它具备了对应用学科(特别是边缘学科和交叉学科)的极强适应力,并很快成为应用科学计算机辅助分析、设计、仿真、数学乃至科技文字处理不可缺少的基础软件。
MathWorks提供了功能强大的工具用于信号处理和通讯系统的开发,这些工具目前被广泛的应用于电子、通讯、航空航天、国防、医学医药以及其它的工业领域。
工程师可以依赖这些工具开发算法,进行复杂系统建模与仿真,生成实时代码,对开发的软硬件进行测试与验证。
这些产品工具能够极大的提高工作效率、节约开发时间和有限的经费,并降低工作风险。
今天,对于高性能,低成本,快速面市产品设计开发的需求日益增长。
MATLAB和Simulink产品可以使用户在实现之前进行系统的构建和验证,这就极大的降低了在开发过程中发生错误的风险,节省了宝贵的时间和金钱。
MATLAB和Simulink产品系列提供了强大的系统级设计能力,能够快速,准确的建立复杂的系统模型,并且可以在最短的时间内生成经过验证的,可执行的设计规范供工程实现使用。
另外,用户也可以直接生成DSP和FPGA的设计实现用以验证系统。
在DSP和通信相关领域内,诸如Motorola,Realtek半导体,Nokia等著名企业通过将Mathworks工具应用到设计流程中,已经实现了压缩设计周期,节省成本,提高市场占有率的商业目的。
在每个系统的开发前期和过程中,不断有新的组件和算法需要开发和分析。
这就需要数学建模和分析手段,并且还需要有现成的专业算法工具,比如滤波器设计,滤波器分析,信号分析和采集,测试。
MATLAB经过二十年的发展,已经被誉为算法开发的最主要的平台,它是用于算法开发和数据分析的高级,解释性编程语言,基于此,MATLAB提供了一个庞大的数学建模和计算函数库,可以让用户进行交互性工作或者通过编程完成复杂的程序。
2-D,3-D和其他一些特殊的绘图函数让用户通过可视化方式了解数据,并且也可以建立自己的图形用户界面(GUIs)。
应用MATLAB以及专业工具箱(比如信号处理工具箱和滤波器设计工具箱),用户可以开发自己的算法,在任意组件和数据基础上进行所有常规的信号和系统分析。
超过40个工具箱涵盖了通信算法设计,小波分析,图像处理,控制系统设计,优化和统计等领域。
同时MATLAB作为信号处理研发和教育方面的标准工具,也有大量的参考书籍出版作为工程师入门和应用的辅助。
另一方面,MATLAB提供了数据采集工具箱,图像采集工具箱和仪器仪表控制工具箱等工具,通过为大量的PC兼容数据采集硬件提供支持(比如与示波器和函数发生器进行通信控制),使得用户也可以方便的将数据采集,分析和建模集成在同一平台中。
在MATLAB中设计和优化过的算法,可以与其他组件一起集成到Simulink环境中进行系统级设计和仿真,从而在软件环境中验证软件和硬件实现。
2设计原理
2.1FIR滤波器
根据冲激响应的时域特性,数字滤波器可分为无限长冲激(IIR)和有限长冲激响应滤波器(FIR),FIR的突出优点是:
系统总是稳定的、易于实现线性相位、允许设计多通带(或多阻带)滤波器,但与IIR相比,在满足同样阻带衰减的情况下需要的阶数较高。
滤波器的阶数越高,占用的运算时间越长,因此在满足指标要求的情况下应尽量减少滤波器的阶数。
FIR滤波器的基本结构可以理解为一个分节的延时线,把每一节的输出加权累加,可得到滤波器的输出,FIR滤波器的冲激响应h(n)是有限长的,数学上M阶FIR滤波器可以表示为:
y(n)=
;
FIR数字滤波器设计的基本步骤如下:
(1)确定指标
在设计一个滤波器之前,必须首先根据工程实际的需要确定滤波器的技术指标。
在很多实际应用中,数字滤波器常常被用来实现选频操作。
因此,指标的形式一般在频域中给出幅度和相位响应。
幅度指标主要以两种方式给出:
第一种是绝对指标,它提供对幅度响应函数的要求,一般应用于FIR滤波器的设计;第二种指标是相对指标,它以分贝值的形式给出要求。
在工程实际中,这种指标最受欢迎。
对于相位响应指标形式,通常希望系统在通频带中仍有线性相位。
运用线性相位响应指标进行滤波器设计具有如下优点:
①只包含实数算法,不涉及复数运算;②不存在延迟失真,只有固定数量的延迟;③长度为N的滤波器(阶数为N-1),计算量为N/2数量级。
因此,本文中滤波器的设计就以线性相位FIR滤波器的设计为例。
(2)逼近
确定了技术指标后,就可以建立一个目标的数字滤波器模型。
通常采用理想的数字滤波器模型。
之后,利用数字滤波器的设计方法,设计出一个实际滤波器模型来逼近给定的目标。
(3)性能分析和计算机仿真
上两步的结果是得到以差分或系统函数或冲激响应描述的滤波器。
根据这个描述就可以分析其频率特性和相位特性,以验证设计结果是否满足指标要求;或者利用计算机仿真实现设计的滤波器,再分析滤波结果来判断。
FIR滤波器的设计问题实质上是确定能满足所要求的转移序列或脉冲响应的常数的问题,设计方法主要有窗函数,频率采样法和等波纹最佳逼近法等。
2.2窗口设计法
窗函数设计法是一种通过截短和计权的方法使无限长非因果序列成为有限长脉冲响应序列的设计方法。
通常在设计滤波器之前,应该先根据具体的工程应用确定滤波器的技术指标。
在大多数实际应用中,数字滤波器常常被用来实现选频操作,所以指标的形式一般为在频域中以分贝值给出的相对幅度响应和相位响应。
用窗函数法设计FIR滤波器的步骤如下:
(1)根据过渡带宽及阻带衰减要求,选择窗函数的类型并估计窗口长度N(或阶数M=N-1)。
窗函数类型可根据最小阻带衰减AS独立选择,因为窗口长度N对最小阻带衰减As没有影响。
在确定窗函数类型以后,可根据过渡带宽小于给定指标确定所拟用的窗函数的窗口长度N。
设待求滤波器的过渡带宽为△w,它与窗口长度N近似成反比。
窗函数类型确定后,其计算公式也确定了,不过这些公式是近似的,得出的窗口长度还要在计算中逐步修正。
原则是在保证阻带衰减满足要求的情况下,尽量选择较小的N。
在N和窗函数类型确定后,即可调用MATLAB中的窗函数求出窗函数Wd(n)。
(2)根据待求滤波器的理想频率响应求出理想单位脉冲响应hd(n)。
如果给出待求滤波器的频率响应为Hd(ejw),则理想的单位脉冲响应可以用下面的傅里叶反变换式求出:
在一般情况下,hd(n)是不能用封闭公式表示的,需要采用数值方法表示。
从ω=0到ω=2π采样N点,采用离散傅里叶反变换(IDFT)即可求出。
(3)计算滤波器的单位脉冲响应h(n)。
它是理想单位脉冲响应和窗函数的乘积,即h(n)=hd(n)·wd(n),在MATLAB中用点乘命令表示为h=hd·wd。
(4)验算技术指标是否满足要求。
为了计算数字滤波器在频域中的特性,可调用freqz子程序,如果不满足要求,可根据具体情况,调整窗函数类型或长度,直到满足要求为止。
使用窗函数法设计时要满足以下两个条件:
(1)窗谱主瓣尽可能地窄,以获得较陡的过渡带;
(2)尽量减少窗谱的最大旁瓣的相对幅度,也就是使能量尽量集中于主瓣,减小峰肩和纹波,进而增加阻带的衰减。
在实际工程中常用的窗函数有五种,即矩形窗、三角窗、汉宁窗、汉明窗和凯泽窗。
实际应用的窗函数,可分为以下主要类型:
(1)幂窗--采用时间变量某种幂次的函数,如矩形、三角形、梯形或其它时间(t)的高次幂;
(2)三角函数窗--应用三角函数,即正弦或余弦函数等组合成复合函数,例如汉宁窗、汉明窗等;
(3)指数窗--采用指数时间函数,如e-st形式,例如高斯窗等。
下面介绍几种常用窗函数的性质和特点:
(1)矩形窗
矩形窗属于时间变量的零次幂窗。
矩形窗使用最多,习惯上不加窗就是使信号通过了矩形窗。
这种窗的优点是主瓣比较集中,缺点是旁瓣较高,并有负旁瓣,导致变换中带进了高频干扰和泄漏,甚至出现负谱现象。
(2)三角窗
三角窗亦称费杰(Fejer)窗,是幂窗的一次方形式。
与矩形窗比较,主瓣宽约等于矩形窗的两倍,但旁瓣小,而且无负旁瓣。
(3)汉宁(Hanning)窗
汉宁窗又称升余弦窗,汉宁窗可以看作是3个矩形时间窗的频谱之和,或者说是3个sine(t)型函数之和,而括号中的两项相对于第一个谱窗向左、右各移动了π/T,从而使旁瓣互相抵消,消去高频干扰和漏能。
可以看出,汉宁窗主瓣加宽并降低,旁瓣则显著减小,从减小泄漏观点出发,汉宁窗优于矩形窗.但汉宁窗主瓣加宽,相当于分析带宽加宽,频率分辨力下
(4)汉明(Hamming)窗
汉明窗与汉宁窗都是余弦窗,只是加权系数不同。
汉明窗加权的系数能使旁瓣达到更小。
分析表明,汉明窗的第一旁瓣衰减为一42dB.汉明窗的频谱也是由3个矩形时窗的频谱合成,但其旁瓣衰减速度为20dB/(10oct),这比汉宁窗衰减速度慢。
汉明窗与汉宁窗都是很有用的窗函数。
(5)高斯窗
高斯窗是一种指数窗。
高斯窗谱无负的旁瓣,第一旁瓣衰减达一55dB。
高斯富谱的主瓣较宽,故而频率分辨力低。
高斯窗函数常被用来截断一些非周期信号,如指数衰减信号等。
不同的窗函数对信号频谱的影响是不一样的,这主要是因为不同的窗函数,产生泄漏的大小不一样,频率分辨能力也不一样。
信号的截断产生了能量泄漏,而用FFT算法计算频谱又产生了栅栏效应,从原理上讲这两种误差都是不能消除的,但是我们可以通过选择不同的窗函数对它们的影响进行抑制。
对于窗函数的选择,应考虑被分析信号的性质与处理要求。
如果仅要求精确读出主瓣频率,而不考虑幅值精度,则可选用主瓣宽度比较窄而便于分辨的矩形窗;如果分析窄带信号,且有较强的干扰噪声,则应选用旁瓣幅度小的窗函数,如汉宁窗等;对于随时间按指数衰减的函数,可采用指数窗来提高信噪比。
2.3PARZENWIN窗
w = parzenwin(n)返回N-点Parzen(日拉瓦莱-普桑)窗口中列向量。
Parzenwin窗分段立方米近似高斯窗口。
窗口旁瓣脱落的
。
Examples
TheParzenwindowisdefinParzenwin窗的定义为:
3设计步骤
3.1设计流程图如图3-1:
图3-1设计流程图
3.2录制音乐信号
用windows附件中的录音机录一段音乐,保存为music1.wav,音乐信号播放时间为5秒。
设定其采样率fs为44100Hz,比特数8bits,单声道。
在MATLAB软件平台下,首先调用wavread函数读取采集到的音乐信号。
具体调用如下:
[x,fs,bits]=wavread('e:
\music.wav');%输入参数为文件的全路径和文件名,输出的第一个参数是每个样本的值,fs是生成该波形文件时的采样率,bits是波形文件每样本的编码位数。
运行后得出fs=44100Hz,bits=16。
sound(x,fs,bits);%按指定的采样率和每样本编码位数回放
N=length(x);%计算信号x的长度
fn=2000;%单频噪声频率,此参数可改
t=0:
1/fs:
(N-1)/fs;%计算时间范围,样本数除以采样频率
x=x(:
1);y=x+sin(fn*2*pi*t);
sound(y,fs,bits);%应该可以明显听出有尖锐的单频啸叫声
3.3音乐信号频谱分析
首先画出音乐信号的时域波形;然后对音乐信号进行快速傅里叶变换得到信号的频谱特性,从而加深对频谱特性的理解。
设计的程序如下:
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;%计算频谱频率范围
用绘图命令分别画出加噪前后信号的时域和频域波形,如图3-1:
图3-1:
加噪前后信号的时域和频域波形图
3.4设计数字滤波器并画出其频率响应
滤波器设计就是要找到一组能满足特定滤波要求的系数向量a和b,而它主要是通过设计指标来实现的。
滤波器设计的要求或指标一般是在频域上给出的,常用的滤波器频域指标有:
通带截止频率,阻带截止频率,通带波纹,阻带衰减。
要达到最佳的滤波效果,则需要对上述指标进行适当的调整。
相应程序如下:
fpd=1900;fsd=1950;fsu=2050;fpu=2100;Rp=1;As=40;%带阻滤波器设计指标
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(13.0725*pi/dw)+1;%计算parzenwin窗设计该滤波器时需要的阶数
n=0:
M-1;%定义时间范围
w_parzen=(parzenwin(M));%产生M阶的parzenwin窗
hd_bs=ideal_lp(wcd,M)+ideal_lp(pi,M)-ideal_lp(wcu,M);%调用自编函数计算理想带阻滤波器的脉冲响应
h_bs=w_parzen'.*hd_bs;%用窗口法计算实际滤波器脉冲响应
[db,mag,pha,grd,w]=freqz_m(h_bs,1);%调用自编函数计算滤波器的频率特性
用绘图命令分别画出滤波器幅度相位响应图若图3-2:
图3-2滤波器幅度相位响应图
3.5用滤波器对音乐信号进行滤波并比较滤波前后音乐信号的波形及频谱
用自己设计的各滤波器分别对采集的信号进行滤波,在Matlab中,FIR滤波器利用函数fftfilt对信号进行滤波。
滤波程序如下:
y_fil=filter(h_bs,1,y);%用设计好的滤波器对y进行滤波
Y_fil=fft(y_fil);Y_fil=Y_fil(1:
N/2);%计算频谱取前一半
用画图指令画出滤波前后音乐信号频谱及波形对比如图3-3:
图3-3滤波前后波形对比图
3.6回放语音信号
在MATLAB中,经过sound(x,fs,bits)函数,对经过parzenwin窗设计的FIR滤波器之后的语音信号进行回放,可以听出滤波之后的信号与原始语音信号相比略有干扰但仍比较清晰,滤波器滤去了几乎所有的噪音,通过以下语句来进行语音信号回放比较:
sound(y,fs,bits);
sound(x,fs,bits);
所得结果,证明了用parzenwin窗设计的FIR滤波器和音乐信号去噪设计是成功的。
3出现问题及解决方法
在本次课程设计中我遇到了以下问题:
1、不知用什么软件去录制音乐,上网搜索也没找的合适的软件。
2、在进行音乐信号的提取时没设采样频率,结果频率没达到要求。
3、对提取的信号做频域图和时域图时效果不理想。
4、对parzenwin窗设计法很生疏,不知如何计算M的值。
5、在采用parzenwin窗设计的FIR滤波器时得不到理想的滤波器,把通带截止频率与阻带起始频率之间的差值设置的太小或者太大。
针对以上问题,相应的解决方案如下:
1、通过老师的指导,从windows自带的附件中找到录音软件。
2、在录音机软件中设定好采样频率的属性,使时域图达到要求。
3、通过多次录音的尝试,最终得到了理想的音乐信号时域图和频域图的幅度响应。
4、通过同学的帮助,利用matlab编写关于parzenwin的M文件得到text5函数,再通过4个不同参数代入text5函数,画出图形并计算出过渡带宽为13.0725*pi/M,可求出M。
5、通过适当的选择参数fp和fs,绘制出来的图形效果比较明显,基本符合设计指标。
最后得到As为41,这样通过MATLAB运算出来的滤波器的阻带波纹达到了滤波器设计的要求,得到了比较理想的滤波器。
5结束语
本次课程设计,我的任务是利用parzenwin窗设计的FIR滤波器对音乐信号滤波去噪。
开始我对parzenwin窗了解特别少,通过问懂得的同学,我掌握了用parzenwin窗设计FIR滤波器的方法,了解了窗函数的基本设计流程。
经过几天忙碌的课程设计我学到了很多。
首先通过这次课程设计使我明白了自己原来知识还比较欠缺。
自己要学习的东西还太多,以前老是觉得自己什么东西都会,什么东西都懂,有点眼高手低。
通过这次课程设计,我才明白学习是一个长期积累的过程,在以后的生活中都应该不断的学习,努力提高自己知识和综合素质。
其次让我明白谦虚的重要性:
课程过程中遇到难题是在所难免的事情,当我们无法解决的时候我们应该虚心向同学或老师讨教,这样可以节省很多的时间。
最后我认识到理论运用到实践的重要性,正所谓“纸上得来终觉浅,绝知此事要躬行”。
学习任何知识,仅从理论上去求知,而不去实践、探索是不够的。
所以在学完数字信号处理之际,紧接着来一次数字信号处理的课程设计事很有必要的。
这样不仅加深我们对数字信号处理的认识,而且还及时真正做到了学以致用。
在此要感谢我们的指导老师胡老师对我们悉心的指导,感谢胡老师给我们的帮助。
虽然这个设计做的也不太好,但是在设计过程中所学到的东西是这次课程设计的最大收获和财富,使我终身受益。
参考文献
[1]张平.matlab基础与应用.第2版.北京:
北京航空航天大学出版社,2007
[2]谢德芳.数字信号处理,北京:
科学出版社,2005
[3]陈后金,薛健,胡健.数字信号处理.北京:
高等教育出版社,2004
[4]维纳K英格尔,约翰G普罗克斯.刘树棠.数字信号处理(MATLAB版).第2版.西安:
西安交通大学出版社,2008
[5]张小虹.信号系统与数字信号处理.西安:
西安电子科技出版社,2002
[6]蔡启仲.控制系统计算机辅助设计(MATLAB版).四川:
重庆大学出版社,2003
附件一:
源程序1
%程序名称:
音乐信号的提取
%程序功能:
是实现音乐信号的提取,并画出音乐信号的频谱分析图
%程序作者:
秦彩群
%最后修改时间:
2011-2-28
sound(x,fs,bits);%按指定的采样率和每样本编码位数回放
N=length(x);%计算信号x的长度
fn=2000;%单频噪声频率,此参数可改
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;%计算频谱频率范围
subplot(2,2,1);plot(t,x);title('原始音乐信号');
xlabel('时间(单位:
s)');ylabel('幅度');grid;
subplot(2,2,2);plot(F,X);title('音乐信号幅度谱图');
xlabel('频率(单位:
Hz)');ylabel('幅度谱');
grid;axis([0400004000]);
subplot(2,2,3);plot(t,y);title('加入单频干扰后的音乐信号');
xlabel('时间(单位:
s)');ylabel('幅度');grid;
subplot(2,2,4);plot(F,Y);
title('加入干扰后的音乐信号幅度谱图');xlabel('频率(单位:
Hz)');
ylabel('幅度谱');grid;axis([0400004000]);
附件二:
源程序2
%程序名称:
滤波器设计
%程序功能:
用parzenwin窗设计的FIR滤波器对音乐信号滤波去噪
%程序作者:
秦彩群
%最后修改时间:
2011-2-28
fpd=1900;fsd=1950;fsu=2050;fpu=2100;Rp=1;As=40;%带阻滤波器设计指标
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(13.0725*pi/dw)+1;%计算
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 音乐 信号 滤波 处理