拉弦音乐滤波去噪使用矩形窗设计的FIR滤波器Word文件下载.docx
- 文档编号:20027809
- 上传时间:2023-01-16
- 格式:DOCX
- 页数:20
- 大小:607.64KB
拉弦音乐滤波去噪使用矩形窗设计的FIR滤波器Word文件下载.docx
《拉弦音乐滤波去噪使用矩形窗设计的FIR滤波器Word文件下载.docx》由会员分享,可在线阅读,更多相关《拉弦音乐滤波去噪使用矩形窗设计的FIR滤波器Word文件下载.docx(20页珍藏版)》请在冰豆网上搜索。
指导老师
题目
拉弦音乐滤波去噪——使用矩形窗设计的FIR滤波器
主要内容:
从网站上下载一段拉弦乐器演奏音乐,绘制波形并观察其频谱特点,加入一个带外单频噪声,用矩形窗设计满足指标的FIR滤波器,对该音乐信号进行滤波去噪处理,比较滤波前后的波形和频谱并进行分析,根据结果和学过的理论得出合理的结论。
与不同信源相同滤波方法的同学比较各种信源的特点,与相同信源不同滤波方法的同学比较各种滤波方法性能的优劣。
要求:
(1)滤波器指标必须符合工程实际。
(2)设计完后应检查其频率响应曲线是否满足指标。
(3)处理结果和分析结论应该一致,而且应符合理论。
(4)独立完成课程设计并按要求编写课程设计报告书。
应当提交的文件:
(1)课程设计学年论文。
(2)课程设计附件(主要是源程序)。
拉弦音乐滤波去噪
——使用矩形窗设计的FIR滤波器
学生姓名:
指导老师:
摘要本课程设计主要内容是设计利用窗口设计法选择矩形窗设计一个FIR滤波器,对一段含单频噪声拉弦音乐信号进行滤波去噪处理并根据滤波前后的波形和频谱分析滤波性能。
本课程设计仿真平台为MATLAB7.0,开发工具是M语言编程。
首先在网上下载一段wav格式的拉弦音乐,调整格式为单声道,采样速率8kHz,8位码,对信号进行频谱分析以确定所加噪声频率,设计滤波器进行滤波去噪处理,比较滤波前后的波形和频谱并进行分析。
由分析结果可知,滤波器后的拉弦音乐信号与原始信号基本一致,即设计的FIR滤波器能够去除信号中所加单频噪声,达到了设计目的。
关键词课程设计;
滤波去噪;
矩形窗;
FIR滤波器;
MATLAB
1引言
本课程设计主要解决在含噪情况下对拉弦音乐信号的滤波去噪处理,处理时采用的是利用窗口设计法选择矩形窗设计的FIR滤波器[1]。
通过本课程设计了解并理解FIR设计的原理和方法步骤,并掌握用MATLAB语言设计滤波器的方法。
通过观察拉弦音乐滤波前后时域和频域波形的分析比较,加深了对滤波器的理解。
1.1课程设计目的
本课程设计是在MATLAB平台下,设计一个使用矩形窗设计的FIR滤波器对拉弦音乐进行滤波去噪。
通过这次课程设计熟悉MATLAB语言环境,掌握MATLAB语言的编程规则,利用矩形窗函数设计法来设计符合要求的FIR滤波器实现对拉弦音乐的滤波去噪。
并绘制滤波前后的时域波形和频谱图。
根据绘出的图形分析判断所设计滤波器的正确性。
同时,通过此次数字信号课程设计,增强自己独立分析问题、解决问题的能力,提高自己的实际动手能力。
加深对书本课程的理解与运用。
通过理论联系实际的实践方法,为以后的工作打下坚持的基础。
1.2课程设计要求
从网站上下载一段拉弦乐器演奏音乐,绘制波形并观察其频谱特点,加入一个带外单频噪声,用矩形窗设计满足指标的FIR滤波器,对该音乐信号进行滤波去噪处理,比较滤波前后的波形和频谱并进行分析,根据结果和学过的理论得出合理的结论。
1.3设计平台
MATLAB7.0
MATLAB是矩阵实验室(MatrixLaboratory)的简称,是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
MATLAB是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。
它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平[2]。
2设计原理
2.1FIR滤波器
FIR滤波器:
有限长单位冲击响应滤波器,是数字信号系统中最基本的原件,它可以在保证任意幅频特性的同时具有严格的线性相频特性,同时其单位抽样响应是有限长的,因而滤波器是稳定的系统。
因此,FIR滤波器在通信、图像处理。
模式识别等领域都有着广泛的应用。
FIR的设计分三步完成:
(1)技术要求:
在设计滤波器之前,必须要有某些技术要求。
这些技术要求是由用途决定的。
(2)近似:
一旦技术要求确定以后,就要用已学过的各种概念和数学提供一种滤波器的表述,它接近于给出的一组技术要求。
这一步是属于滤波器设计的范畴。
(3)实现:
上面一步的结果是一个滤波器的表述,它可能是一个差分方程的形式,或者是某一个系统函数H(z),或者是某一脉冲响应h(n)。
在很多应用中,如像语音或音频信号处理中,数字滤波器是用作实现频率选择性功能的。
因此,技术要求都是在频域通过这个滤波器的期望幅度和相位响应给出的。
有限长单位冲激响应(FIR)滤波器有以下特点:
(1)系统的单位冲激响应h(n)在有限个n值处不为零。
(2)系统函数H(z)在|z|>
0处收敛,极点全部在z=0处(因果系统。
)
(3)结构上主要是非递归结构,没有输出到输入的反馈,但有些结构中(例如频率抽样结构)也包含有反馈的递归部分。
设FIR滤波器的单位冲激响应h(n)为一个N点序列,0≤n≤N—1,则滤波器的系统函数为:
H(z)=∑h(n)*z^-n[3]
2.2窗口设计法
窗口设计法的基本想法是要选取某一种合适的理想频率选择性滤波器(这种滤波器总是有一个非因果,无限长的脉冲响应),然后将它的脉冲响应截断(或加窗)以得到一个线性相位和因果的FIR滤波器。
因此,这种方法的重点在于选择某种恰当的窗函数和一种合适的理想滤波器。
现用
代表一理想频率选择性滤波器,它在整个通带内有单位幅度增益和线性相位特性,而在阻带内具有零响应。
一理想带宽为
<
的LPF由下式给出为
(2-1)
其中
也称为截止频率,
称为样本延迟。
这个滤波器的脉冲响应具有无限长,给出为
(2-2)
为了从
得到一个FIR滤波器必须在
两边将它截断。
为了得到一个长度为M的因果且线性相位FIR滤波器h(n),就必须有
(2-3)
这种运算称为“加窗”。
一般来说,h(n)可当作是由
和某一窗函数ω(n)相乘而得到。
(2-4)
(2-5)
这就是早先定义过的矩形窗。
窗口设计法的基本思想:
对于给定的滤波器技术要求,选择滤波器长度M和具有最窄主瓣宽度和尽可能最小的旁瓣衰减的某个窗函数ω(n)。
2.3矩形窗
矩形窗是一种最简单的窗函数,从阻带衰减的观点来看也是性能最差的一种。
如先前所定义的
(2-6)
它的频率响应函数是
(2-7)
这是窗的振幅响应。
由式
(2-8)
得真正的振幅响应Hr(ω)由下式给出:
(2-9)
这表明在过渡带和阻带衰减的精确分析中,窗的振幅响应的连续积分(或累加的振幅响应)是必须的。
振幅响应
在ω=ω1有一个零值,此处
(2-10)
因此,主瓣宽度是
,从而近似过渡带宽为
。
第一个旁瓣的幅度(也是峰值旁瓣幅度)近似在
处,并给出为
(2-11)
将这个值与主瓣幅度(等于M)比较,这个峰值旁瓣幅度是主瓣幅度的
(2-12)
累加振幅响应有一个旁瓣幅度在21dB的最小阻带衰减而与窗的宽度M无关。
利用最小阻带衰减,可将过渡带宽准确计算出,这个计算出的真正带宽是
(2-13)
这大约是近似带宽
的一半。
矩形窗时域和频域图如图2.1所示:
图2.1矩形窗时域频域图
在Matlab中调用boxcar函数生成矩形窗。
调用方式为:
w_bh=boxcar(M)%产生一个长度为M的矩形窗[4]
3设计步骤
3.1设计流程
在仔细分析课程设计任务要求之后,在网上下载所需音乐,加入噪声,并设计复合要求的矩形窗FIR滤波器对所加噪声音乐进行滤波去噪,并与初始信号进行比较是否达到滤波要求。
设计流程图如图3.1所示:
图3.1设计流程图
3.2采集拉弦音乐信号
根据课程设计要求,在网上下载一段拉弦音乐,用相关软件将下载的音乐转换为wav文件,时间3s左右,调整格式为单声道,采样速率8kHz,8位码,并将该文件命名为liu_dsp之后,将其放入Matlab文件下的work子文件夹中。
然后在Matlab软件平台下,利用函数wavread对语音信号进行采样,记住采样频率和采样点数。
通过wavread函数的使用,让我很快理解了采样频率、采样位数等概念。
相关程序代码如下:
[x,fs,bits]=wavread('
liu_dsp.wav'
)%输入参数为文件的全路径和文件名
%输出的第一个参数是每个样本的值
%fs是生成该波形文件时的采样率
%bits是波形文件每样本的编码位数
sound(x,fs,bits)%按指定的采样率和每样本编码位数回放
通过运行程序,可以清晰听到所下的拉弦音乐片段。
采集完成后在信号中加入一个单频噪声,设计的任务即为从含噪信号中滤除单频噪声,还原原始信号。
相关代码如下:
N=length(x);
%计算信号x的长度
fn=1100;
%单频噪声频率,此参数可改
t=0:
1/fs:
(N-1)/fs;
%计算时间范围,样本数除以采样频率
x=x'
;
y=x+0.5*sin(fn*2*pi*t);
sound(y,fs,bits);
运行程序,可以听到加入单频噪声之后的音乐片段。
通过绘图命令,可以得到未加入噪声和加入噪声之后的波形图和频谱图,如图3.2所示:
图3.2原音乐和加噪音乐特性图
3.3滤波器设计
根据滤波器技术要求,我将滤波器个参数设置如下:
fpd=1000;
fsd=1050;
fsu=1150;
fpu=1200;
Rp=1dB;
As=20;
fs=8000
其中截止频率也可以任意自选,在单频噪声干扰附近即可。
这里,我是用矩形窗设计的FIR滤波器,在Matlab中,可以利用矩形窗设计FIR滤波器,再利用Matlab中的函数freqz画出各滤波器的频率响应。
首先利用数字信号处理里面学过的知识,根据自己选定的参数,用指定的方法设计数字滤波器,得到数字滤波器的参数b,a。
其中b为系统函数的分子系数,a为系统函数分母系数。
再调用freqz函数即可得到该滤波器的频率响应。
相关程序代码如下:
fsd=1050;
fsu=1150;
fpu=1200;
Rp=1;
As=20
%带阻滤波器设计指标
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(1.8*pi/dw)+1
%计算矩形窗设计该滤波器时需要的阶数
n=0:
M-1
%定义时间范围
w_bh=boxcar(M)
%产生M阶的矩形窗
hd_bs=ideal_lp(wcd,M)+ideal_lp(pi,M)-ideal_lp(wcu,M)
%调用自编函数计算理想带阻滤波器的脉冲响应
h_bs=w_bh'
.*hd_bs;
%用窗口法计算实际滤波器脉冲响应
[db,mag,pha,grd,w]=freqz_m(h_bs,1)
%调用自编函数计算滤波器的频率特性
再利用绘图命令得到所设计滤波器特性图如图3.3所示:
图3.3滤波器特性图
3.4信号滤波处理
滤波是将信号中特定波段频率滤除的操作,是抑制和防止干扰的一项重要措施。
分经典滤波和现代滤波。
经典滤波的概念,是根据傅立叶分析和变换提出的一个工程概念。
根据高等数学理论,任何一个满足一定条件的信号,都可以被看成是由无限个正弦波叠加而成。
换句话说,就是工程信号是不同频率的正弦波线性叠加而成的,组成信号的不同频率的正弦波叫做信号的频率成分或叫做谐波成分。
用模拟电子电路对模拟信号进行滤波,其基本原理就是利用电路的频率特性实现对信号中频率成分的选择。
根据频率滤波时,是把信号看成是由不同频率正弦波叠加而成的模拟信号,通过选择不同的频率成分来实现信号滤波[5]。
滤波器设计好之后,用自己所设计的滤波器对采集的信号进行滤波,在Matlab中,滤波器利用函数filter对信号进行滤波。
y_fil=filter(h_bs,1,y)%用设计好的滤波器对y进行滤波
Y_fil=fft(y_fil);
Y_fil=Y_fil(1:
N/2)%计算频谱取前一半
然后调用绘图命令得到滤波前后信号特性对比图如图3.4所示:
图3.4滤波前后信号波形特性对比图
3.5结果分析
由图3.4得出的结果来看,加在1100Hz处的噪声基本被滤除,音乐信号波形也还原成原信号波形。
通过重听原始音乐文件及滤波前后的音乐文件,也可以明显感受到噪声几乎被滤除。
sound(x,fs,bits)
%播放未加噪声音乐
sound(y,fs,bits)
%播放加入噪声之后的音乐
sound(y_fil,fs,bits)
%播放滤波去噪后的音乐
再调用绘图命令绘制滤波前后拉弦音乐信号的频谱图,得到图3.5:
图3.5滤波前后拉弦音乐信号频谱对比图
由频谱对比图也可以清晰看出,所加噪声已基本被滤除,达到了去噪效果,可以证明此次滤波器的设计及用其进行滤波去噪是成功的。
但是,当我与用不同窗函数设计FIR滤波器的同学比较结果滤波时,却发现我设计的矩形窗FIR滤波器滤波效果并不突出,还是隐约可以听到噪声的存在。
4出现的问题及解决方法
在此次课程设计中,我也遇到了很多自己一时难以解决的问题,通过请教老师同学,查阅资料等方式终于一一解决,并顺利完成课程设计任务。
其中,遇到的问题总结一下主要有一下几项:
(1)由于平时自己没有经常使用Matlab,并且自己所装版本与实验机房不同,导致我刚开始使用Matlab工具时遇到了很多操作方面的问题。
(2)在采集拉弦音乐信号时,自己不知道怎么样可以将音乐文件转换成实验要求的格式为单声道,采样速率8kHz,8位码。
(3)完成音乐文件的各项要求后,在Matlab平台下却不能播放出自己所下载的音乐。
(4)在程序中所需的freqz_m.m及ideal_lp.m文件,自己无法找到,导致自己的滤波器迟迟不能设计出来
(5)在用绘图命令绘制各信号的波形及频谱图时,无法在一段程序内绘制出多个单独的图。
针对以上问题,我是如下解决的:
(1)自己不断在Matlab论坛中寻找新版本的使用方法,同时也积极翻阅以前学过的《MATLAB基础与编程入门》一书,不断摸索、不断熟悉,终于对Matlab的使用有了一个新的认识。
(2)在遇到音乐信号采集的问题时,我不断在网上搜索相关的音乐软件,在找到一款合适的之后,这个问题也顺利解决了。
(3)音乐不能正常播放时,我仔细阅读老师发给我们的知道书,终于发现是自己的文件路径设置得不对,导致音乐无法播放。
最后经过同学提醒,直接将音乐文件放于Matlab文件下的work文件夹中,这个问题也迎刃而解了。
(4)当我将找不到这两个文件的问题与同学交流时,他们也遇到了相同的问题,最后我们翻阅了相关书籍后,找到了这两个文件,并放在work文件夹后,执行程序时问题也解决了。
(5)遇到这个问题时,我请教了老师,在老师的点拨下,我在每个绘图指令之前分别加入了figure
(1)、figure
(2)、figure(3)、figure(4),在运行程序后,四个图也可以同时绘制出来了。
5结束语
通过这次数字信号处理课程设计,让我认识了很多,感受了很多,也学习了很多。
从中,也发现了自身的诸多问题。
首先,我深深的感受到自己专业基础知识的不扎实,面对一些基本的矩形窗理论知识,自己都不能透彻地理解,导致了自己在刚开始对课设内容的理解上产生了种种困难。
其次,作为一个通信专业的学生,尽然没有在平时的学习中频繁地、熟练地使用Matlab软件,到了该用的时候,不能轻易上手,这些小问题都直接影响了我课程设计的进度。
再次,我感受到了作为一个工科学生,自己的动手实践能力还大大的欠缺,平时我们只注重理论知识的汲取,却忽视了实践,等到真正需要这些知识来动手完成一些项目时,觉得很无力,总感觉理论的东西脱节了、用不上,所以在以后的学习中要大大提高自己的动手实践能力。
当然,两个星期的劳动还是让我收获颇多,不仅清醒地认识了之前所说的不足。
它也使我明确了自己以后学习的目标和方向,让我在以后有限的学习生活中更有动力。
最后,这次课程设计的圆满完成与老师的悉心指导和同学们的不吝帮助是分不开的,在这里一并表示感谢!
参考文献
[1]VinayK.Ingle,JohnG.Proakis(著).刘树棠(译).数字信号处理(MATLAB版)[M].西安交通大学出版社.2008.01
[2]风继林,郭子辉,万永革.FIR滤波器设计.2010.04.25
[3]XX百科.FIR滤波器.
[4]张圣勤.MATLAB7.0实用教程[M].北京:
机械工程出版社.2006.03
[5]Arthurb.Williams,FredJ.Taylor(著).宁彦卿,姚金科(译).电子滤波器设计.科学出版社.2008.09
附录1:
拉弦音乐信号滤波去噪设计源程序清单
%程序名称:
%程序功能:
采用基于矩形窗的窗口设计法,设计FIR滤波器对含噪拉弦音乐信号进行滤波去噪处理。
%程序作者:
%最后修改日期:
%输入参数为文件的全路径和文件名,输出的第一个参数是每个样本的值,fs是生成该波形文件时的采样率,bits是波形文件每样本的编码位数。
%按指定的采样率和每样本编码位数回放
N=length(x)%计算信号x的长度
fn=1100%单频噪声频率,此参数可改
(N-1)/fs%计算时间范围,样本数除以采样频率
y=x+0.5*sin(fn*2*pi*t)
sound(y,fs,bits)
X=abs(fft(x));
Y=abs(fft(y))
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);
xlabel('
时间(t)'
)
ylabel('
幅度'
);
title('
原始音乐信号'
subplot(2,2,2);
plot(f,X);
频率(f)'
幅度谱'
原始音乐信号幅度谱'
axis([0,4000,0,400])
subplot(2,2,3);
plot(t,y);
加干扰后的音乐信号'
subplot(2,2,4);
plot(f,Y);
加干扰后的音乐信号幅度谱'
%计算上下边带中心频率,和频率间隔
M-1%定义时间范围
w_bh=boxcar(M)%产生M阶的矩形窗
.*hd_bs
[db,mag,pha,grd,w]=freqz_m(h_bs,1)
%调用自编函数计算滤波器的频率特性
figure
(2)
plot(w/pi,db);
gridon
频率'
db'
axis([0,0.5,-50,10]);
plot(w/pi,mag);
axis([0,0.5,-0.5,1.5])
plot(w/pi,pha);
相位'
axis([0,0.5,-4,4])
plot(n,h_bs);
gridon
滤波器脉冲响应'
axis([50,100,-0.5,1]);
y_fil=filter(h_bs,1,y)
%用设计好的滤波器对y进行滤波
N/2)
%计算频谱取前一半
figure(3)
subplot(3,2,1);
grid
axis([0,2,-1.1,1.1])
xlab
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 音乐 滤波 使用 矩形 设计 FIR 滤波器