利用MATLAB软件对音频信号进行频谱分析与处理.docx
- 文档编号:6392906
- 上传时间:2023-01-06
- 格式:DOCX
- 页数:42
- 大小:547.34KB
利用MATLAB软件对音频信号进行频谱分析与处理.docx
《利用MATLAB软件对音频信号进行频谱分析与处理.docx》由会员分享,可在线阅读,更多相关《利用MATLAB软件对音频信号进行频谱分析与处理.docx(42页珍藏版)》请在冰豆网上搜索。
利用MATLAB软件对音频信号进行频谱分析与处理
详细了解了数字滤波器的滤波器设计,比较了FIR和IIR滤波器的不同性能,最终选择了设计IIR滤波器。
通过设计低通、高通、带通和带阻等各种滤波器,并分析了各滤波器的幅度特性和相频特性,熟悉了四种滤波器的性能。
利用MATLAB软件分析音频信号的幅度响应和相位响应,学习了数字音频信号输入MATLAB环境并通过MATLAB播放的方法。
通过比较音频信号输入前与输入后幅度响应和相位响应的差异,验证了以前所学习的转业知识。
学习了MATLAB程序设计语言,编写了相应程序,产生了一个可以使操作更加方便的操作界面。
画了软件实现和界面操作的流程图。
关键词音频信号幅度响应相位响应MATLAB滤波器IIRFIR
毕业设计说明书(论文)外文摘要
TitleToAnalyzeandDisposeTheSpectraofTheAudioSignalWithMATLAB
Abstract
Tocomprehendthedesignofdigitalfilterindetail,tocomparetheperformanceoftheFIRfilterandIIRfilter,andfinallytheIIRfilterisbeenchosentodesign.Theamplitudeandphasecharacteristicofthefilterisbeenanalyzed,alsotheperformanceofthefourfiltersisbeenknownwell,throughthedesignoflow-passhigh-pass,band-passand
Band-eliminationfilters.
UsingMATLABtoanalyzetheamplituderesponseandphaseresponseofthe
audiosignal,tolearnhowtoinputtheaudiosignaltotheMATLABandhowtoplaytheaudiosignalthroughMATLAB.Thespecializedsubjectknowledge
isbeencertifiedbycomparingtheamplituderesponseandphaseresponse
ofthetwoaudiosignals,andoneofthetwosignalsisbeforeinput,theotherisafterinput.
TolearnprogramminginMATLABandthecorrespondingprogramisrealized,alsoanoperationinterfaceisbroughttomaketheprocessingmoreconvenient.Alsotheflowchartabouttherealizationofthesoftwareandtheinterfaceprocessingisbeendrown.
KeywordsaudiosignalamplituderesponsephaserespondMATLABfilterIIRFIR
目次
1引言1
1.1研究背景1
1.2本文主要研究内容1
2MATLAB简介3
2.1什么是MATLAB3
2.2MATLAB的发展历史3
2.3MATLAB系统4
2.4MATLAB的主要功能和特性6
3.数字滤波器简介8
3.1数字滤波器的定义及分类8
3.2数字滤波器设计方法10
4.音频信号频谱分析的软件实现13
4.1数字滤波器设计13
4.2音频信号频谱分析17
4.3界面设计37
结论43
致谢44
参考文献45
1引言
1.1研究背景
在计算机技术日新月异的今天,计算机已同人们的日常生活和工作越来越紧密的联系在一起。
而在工程计算领域中,计算机技术的应用正逐步把科技人员从繁重的计算工作中解放出来。
在科学研究和工程应用的过程中,往往需要进行大量的数学计算,传统的纸笔和计算器已根本不能满足海量计算的要求。
MATLAB的产生是与数学计算紧密联系在一起的,MATLAB由主包和功能各异的工具箱组成,其基本数据结构是矩阵,它具有非常强大的计算功能,正是凭借其杰出的性能,MATLAB现在已成为世界上应用最广泛的工程计算应用软件之一。
MATLAB在国外的高校已成为大学生、硕士生、博士生必须掌握的基本程序设计语言。
信号处理是科学研究和工程技术许多领域都需要进行的一个重要环节,这种处理包括信号的检测、变换、滤波、传输、信号提取等。
传统上对信号的处理大都采用模拟系统来实现,然而,随着人们对信号处理要求的不断提高,以及模拟信号处理中一些不可克服的缺点,对信号的许多处理转而采用数字的方法来进行。
信号处理技术是开发具有自主知识产权的各类先进产品的瓶颈,是一项关键技术。
MATLAB是一种面向科学与工程计算的高级语言,已成为数学、信息、控制、经济等诸多学科实用的仿真软件。
MATLAB是一套用于科学计算的可视化高性能语言与软件环境。
它集数值分析、矩阵运算、信号处理和图形显示与一体,构成了一个界面友好的用户环境。
信号处理是MATLAB应用最成功的领域之一,MATLAB将信号处理中的许多常用算法编写成了可调用的函数,汇集构成了信号处理工具箱。
它的信号处理工具箱包含了各种经典的和现代的数字信号处理技术,是一个非常优秀的算法研究与辅助设计的工具。
1.2本文主要研究内容
MATLAB具有非常强大的计算功能,凭借其杰出的性能,MATLAB现在已经成为世界上应用最广泛的工程计算应用软件之一。
MATLAB已经是理工科的学生必须掌握的应用软件了。
本文利用MATLAB处理音频信号,掌握了MATLAB的使用方法,详细了解了MATLAB的产生发展过程及原理。
分析了三种音频信号的频谱,运用MATLAB设计了低通、高通、带通、带阻等四种IIR数字滤波器,并分析了这三种音频信号通过四种不同滤波器后的频谱,比较了前后频谱的不同。
设计IIR数字滤波器的方法不尽相同,带通滤波器和带阻滤波器采用的是巴特沃思滤波器,低通滤波器采用的是椭圆滤波器,而高通滤波器采用的是切比雪夫II滤波器。
为了操作简便,特地在任务之外又设计了一个操作界面,这样就使得运行MATLAB程序变得更加简便了。
2MATLAB简介
2.1什么是MATLAB
在科学研究和工程应用的过程中,往往需要进行大量的数学计算,传统的纸笔和计算器已经根本无法满足海量计算的要求。
一些技术人员尝试用Basic、Fortran以及C语言编制程序来减轻计算的工作量,但是编制程序不仅要掌握所用语言的语法,还需要对有关算法进行深入分析,这对大多数科技工作者来说有一定的难度。
为了满足用户对工程数学计算的要求,一些软件公司相继推出了一批数学类科技应用软件,如MATLAB、Xmath、Mathematica、Maple等。
其中MATLAB以其强大的功能和易用性受到越来越多的科技工作者的欢迎。
MATLAB起初是作为矩阵实验室(MatricxLaboratory)提供对LINPACK和EISPACK矩阵软件包的接口(LINPACK是解线性方程的Fortran程序库,EISPACK是解决特征值问题的Fortran程序库)。
与Basic、Fortran以及C语言比较,MATLAB的语法规则更简单,编程特点更接近人的思维方式,用MATLAB写程序有如在便笺上列公式和求解,因而MATLAB被称为“科学便笺式”的科学工程计算语言[1]。
MATLAB由主包和功能各异的工具箱组成,其基本数据结构是矩阵。
正如MATLAB的名字“矩阵实验室”,MATLAB起初主要是用来对矩阵进行操作的。
MATLAB具有非常强大的计算功能,正是凭借其杰出的性能,MATLAB现在已成为世界上应用最广泛的工程计算应用软件之一。
2.2MATLAB的发展历史
2.2.1MATLAB的产生
上世纪70年代中期,CleveMoler及他的同事在美国国家基金会的帮助下,开发了LINPACK和EISPACK的Fortran子程序库。
不久,CleveMoler在给学生开线性代数课时,为了让学生能使用LINPACK和EISPACK子程序库又不至于在编程上花费太多的时间,为学生编写了使用LINPACK和EISPACK的接口程序,他将这个接口程序取名为MATLAB(即matrix和laboratory的前三位字母组合,意为“矩阵实验室”)。
80年代初期,CleveMoler、JohnLittle采用C语言编写MATLAB的核心,合作开发了MATLAB的第二代专业版。
不久他们成立了MathWorks公司并将MATLAB正式推向市场。
2.2.2MATLAB的发展
MathWorks公司自1984年正式推出MATLAB后,经过这些年的不断研究,增加了许多功能。
例如MathWorks公司于2001年推出MATLAB6.0版本,6.x版在继承和发展其原有的数值计算和图形可视能力的同时,出现了以下几个重要变化:
(1)推出了SIMULINK。
这是一个交互式操作的动态系统建模、仿真、分析集成环境。
它的出现使人们有可能考虑许多以前不得不做简化假设的非线性因素、随机因素,从而大大提高了人们对非线性、随机动态系统的认知能力。
(2)开发了与外部进行直接数据交换的组件,打通了MATLAB进行实时数据分析、处理和硬件开发的道路。
(3)推出了符号计算工具包。
MathWorks公司此举加快结束了国际上数值计算、符号计算孰优孰劣的长期争论,促成了两种计算的互补发展新时代。
(4)构作了Notebook。
MathWorks公司瞄准应用范围最广的Word,运用DDE和OLE,实现了MATLAB与Word的无缝连接,从而为专业科技工作者创造了融科学计算、图形可视、文字处理于一体的高水准环境。
2.3MATLAB系统
经过不断发展,MATLAB已经自成体系。
MATLAB包括五个部分:
MATLAB语言、MATLAB工作环境、MATLAB图像处理系统、MATLAB数学函数库、MATLAB应用程序接口。
2.3.1MATLAB语言
MATLAB语言是一种高级矩阵语言。
随着MathWorks公司的不断研究,MATLAB语言已经成为带有独特的数据结构、输入输出、流程控制语句和函数,并且面向对象的高级语言。
MATLAB语言在工程计算方面具有无可比拟的优异性能。
它集计算、数据可视化和程序设计为一体,并能将问题和解决方案以用户熟悉的数字符号表示出来[2]。
2.3.2MATLAB工作环境
MATLAB工作环境是一个集成了许多应用程序和工具的工作空间。
在这个工作空间中,用户或程序开发者可以应用不同的功能完成他们的工作。
MATLAB工作环境给用户提供了在工作空间内管理变量和输入、输出数据的功能,并给用户提供了不同的工具用以管理、调试M文件和MATLAB应用程序。
MATLAB工作环境主要包括以下部分:
a.命令窗口
命令窗口是MATLAB提供给用户的操作界面,在命令窗口中,用户可以实现MATLAB的各种功能。
b.M文件编辑器(M文件是MATLAB所特有的使用该语言编写的磁盘文件)
M文件编辑器是MATLAB为用户提供的用于编辑M文件的程序。
c.M文件调试器
同其他语言类似,MATLAB为用户提供了用于调试M文件的程序。
d.MATLAB工作空间
MATLAB工作空间是显示用户在MATLAB中通过命令进行操作的变量的集合的窗口。
e.在线帮助文档
MATLAB为用户提供了强大的在线帮助,通过使用MATLAB提供的帮助,用户可以查询函数的用法,学习MATLAB的使用。
2.3.3MATLAB图像处理系统
MATLAB的图像处理系统为用户提供了非常丰富的函数,用以将工程计算的结果可视化。
MATLAB图像处理系统的功能主要包括:
a.绘制二维图形;
b.绘制三维图形;
c.定制图形用户界面(GUI)。
2.3.4MATLAB数学函数库
MATLAB数学函数库包含了大量的数学函数,该函数库既包含了诸如求和、正弦、余弦之类的简单函数,也包含了转置矩阵、快速傅立叶变换等复杂函数[3]。
MATLAB数学函数通过两种方式提供给用户:
a.内部函数
MATLAB内部数学函数是一些较为简单的函数,因为这些函数是直接内置于MATLAB的核心中的,所以其执行效率很高。
b.以M文件的形式提供的函数
MATLAB中以以M文件的形式提供的函数极大地扩展了MATLAB的功能,使得MATLAB能够应用于越来越多的领域。
2.3.5MATLAB应用程序接口
MATLAB应用程序接口(API)实际上是一个让MATLAB语言同C语言和Fortran等其他高级语言进行交互的函数库。
该函数库的函数通过动态链接来读写MATLAB文件[4]。
MATLAB应用程序接口的主要功能如下:
a.从MATLAB中调用C和Fortran程序;
b.从MATLAB中输入和输出数据;
c.在MATLAB和其他应用程序之间建立客户机/服务器关系。
2.4MATLAB的主要功能和特性
2.4.1MATLAB的主要功能
经过MathWorks公司的不断完善,MATLAB已具备越来越多的功能:
a.数值计算功能
MATLAB作为世界顶尖的数学应用软件,其出色的数值计算能力是使之优于数值计算软件的决定性因素之一。
b.符号计算功能
数学计算有数值计算和符号计算之分,仅有优异的数值计算功能并不能满足解决数学计算问题时的需要,在数学、应用科学和工程计算领域,常常会遇到符号计算问题。
1993年,MathWorks公司从加拿大滑铁卢大学购买了Maple的使用权,并以Maple的“内核”作为符号计算功能的“引擎”,依靠Maple已有的库函数,实现了MATLAB的符号计算功能[5]。
c.数据分析和可视化功能
在科学计算和研究工作中,技术人员经常会遇到大量的原始数据,而对数据的分析往往难以下手,如果将这些数据以图形的形式显示出来,不仅使数据间的关系清晰明了,而且对于揭示其内在本质往往有着非常重要的作用。
d.文字处理功能
MATLABNotebook为用户提供了强大的文字处理功能。
MATLABNotebook允许用户从一个文字处理程序访问MATLAB的数值计算和可视化结果。
通过使用MATLABNotebook,用户可以方便的创建包含文本、MATLAB命令及使用MATLAB得到的结果的文挡。
2.4.2MATLAB的特点
a.功能强大
MATLAB不但在数值计算和符号计算方面具有强大的功能,而且在计算结果的分析和数据可视化方面也有着与其他类似软件难以匹敌的优势。
此外,MATLAB的Notebook为用户提供了把文字和数字进行统一处理的功能,而MATLAB的Simulink功能则将其应用扩展到更广的领域[6]。
不仅如此,MathWorks公司推出了针对各专业应用的MATLAB工具箱。
b.界面友好、编程效率高
MATLAB是一种以矩阵计算为基础的程序设计语言,其指令表达方式与标准教科书的数学表达式非常接近。
用户不需要有较高的计算机编程基础,只要按照计算要求输入表达式,MATLAB将为用户计算出结果。
此外,使用MATLAB语言设计的程序,其编译和执行速度都远远超过了传统的C和Fortran语言设计的程序,可以说,MATLAB在工程计算方面的编程效率远远高于其他编程语言。
c.扩展性强
MATLAB的最重要的特点之一就是其可扩展性,这个特点使用户能够自由地开发自己的应用程序,这些年来,许多使用MATLAB的数学家、工程师和科学家已经开发出相当多的不同应用程序。
MATLAB的这些特点使它获得了对应用学科,特别是对边缘学科和交叉学科的极强的适应能力,并很快成为应用学科计算机辅助分析、设计、仿真以至教学等不可缺少的基础软件[7]。
3.数字滤波器简介
3.1数字滤波器的定义及分类
数字滤波器是一种用来过滤时间离散信号的数字系统,通过对抽样数据进行数学处理来达到频域滤波的目的。
可以设计系统的频率响应,让它满足一定的要求,从而对通过该系统的信号的某些特定的频率成分进行过滤,这就是滤波器的基本原理。
如果系统是一个连续系统,则滤波器称为模拟滤波器[8]。
如果系统是一个离散系统,则滤波器称为数字滤波器。
信号f(t)通过线性系统后,其输出y(t)就是输入信号f(t)和系统冲激响应h(t)的卷积。
除了h(t)=δ(t)外,y(t)的波形将不同于输入波形f(t)。
从频域分析来看,信号通过线性系统后,输出信号的频谱将是输入信号的频谱与系统传递函数的乘积。
除非F(jω)为常数,否则输出信号的频谱将不同于输入信号的频谱,某些频率成分H(jω)有较大的模,因此,F(jω)中这些频率成分将得到加强,而另外一些频率成分处H(jω)的模很小甚至为零,F(jω)中这部分频率分量将被削弱或消失。
因此,系统的作用相当于对输入信号的频谱进行加权。
线性系统对信号频谱的这种加工,可以有意识地用来按照人们的需要改变信号的频谱结构。
这就是所谓频率滤波,是信号处理的一种方法。
此时,人们也往往称此系统为滤波器。
由于计算机和人规模集成电路技术的进步,依靠传统的模拟电路来实现的电子系统已不适应。
现在都在开始采用数字化技术,传统的模拟滤波器,正在被数字滤波器所代替,数字滤波器的输入是一个数字序列,输出是另一个数字序列。
从本质上说它只是一个序列的运算加工过程,但另一方面因为它是一个离散系统,而一个离散系统具有一定的频率响应特性,适当地控制离散系统结构使其频率特性满足一定的要求,就可以起到和模拟滤波器同样的作用。
但数字滤波器却具有精度高,可靠性强,灵活性大,适应范围广(在甚低频范围),快速等优点。
而且可以分时复用,同时处理若干不同信号,因此已得到越来越广泛的应用[9]。
一个离散的时间系统,当它的系统函数一经确定后就可以根据H(Z)写出输出和输入关系的差分方程来,再用计算机根据不同的输入序列情况求出其相应的输出序列。
数字滤波器是一个具有指定频率特性的离散系统,因此它的设计就在于确定它的系统函数。
在找到能满足频率特性要求的系统函数后,就可以用硬件或软件来实现。
硬件实现就是用数字电路制成的运算单元(延时器,加法器等)按框图联接成专用的处理机,软件实现就是按差分方程写出计算机的计算程序,然后用通用计算机完成,在地球物理数据处理中,主要依靠通用计算机来实现数字滤波。
数字滤波器的传递函数就是系统单位函数响应的Z变换,因为冲激信号的频率特性是频率的周期函数,而且其周期就是抽样频率1/T,因此数字滤波器的频率特性也有周期重复的特点,在模拟滤波器中低通、高通、带通、带阻四种形状的频率特性,在数字滤波器中只在频率的一个周期内保留,但在整个频率轴上将有完全不同的形式,因此,必须适当选择抽样频率。
数字滤波器之所以得到广泛应用,是因为模拟滤波器的设计复杂,只能用硬件实现,而数字滤波器有两种方法来实现数字滤波器:
一种方法是采用通用计算机,利用计算机的存储器、运算器和控制器把滤波器所要完成的运算编成程序通过计算机来执行,也就是采用计算机软件来实现;另一种方法是设计专用的数字硬件(通常称之为数字信号处理器来实现)[10]。
数字滤波在软件实现时只需根据滤波器的差分方程进行编程即可,非常简便,而且还可以方便地通过调整差分方程的系数来获得理想的滤波性能。
滤波器的种类很多,分类的方法也很多。
如根据滤波器的滤波功能(频率响应特性)来分,则可以将数字滤波器分为低通、高通、带通、带阻、全通等五种类型。
如根据滤波器单位冲激响应h(n)的长度可以将滤波器分为有限冲激响应滤波器FIR和无限冲激响应滤波器IIR。
如果根据滤波器的构成方式,则可以将滤波器分为递归式的数字滤波器和非递归式的数字滤波器。
除了上面的一些分类方法,从总体上还可以把数字滤波器分成两大类。
一类是经典滤波器,一类是现代滤波器。
经典滤波器是假定系统输入信号x(n)中的有用成分和希望去除的成分各自占有不同的频带,这样当x(n)通过一个线性系统(即滤波器后)可欲去除的成分有效地去除。
如果信号和噪声的相互重叠,那么经典滤波器将无能为力。
现代滤波器理论研究的主要内容是从含有噪声的数据记录(又称时间序列)中估计出信号的某些特征或信号本身。
一旦信号被估计出,那么估计出的信号将比原信号会有高的信噪比。
现代滤波器把信号和噪声都视为随机信号,利用它们的统计特征(如自相关函数、功率谱等)导出一套最佳的估值算法,然后用硬件或软件予以实现。
在实际应用中经常会遇到FIR与IIR的数字滤波器分类方法,那么这两种滤波器各自有什么优劣,怎么去选择他们,将是面临的首要问题。
下面对这两种滤波器作一个简单的比较。
从性能上来说,IIR滤波器可以用较少的阶数获得很高的选择特性,所用存储单元少,运算次数少,所以经济而效率高[11]。
但是这个高效率的代价是相位的非线性。
选择性越好则相位非线性越严重。
FIR滤波器可以得到严格的线性相位。
但是,如果需要获得一定的选择性,则要用较多的存储器和较长的运算,成本比较高,信号延时也较大。
FIR滤波器可以得到严格的线性相位,只能通过改变零点位置来改变性能,为了达到高的选择性,必须用较高的阶数,对于同样的滤波器设计指标,FIR滤波器要求的阶数可能比IIR滤波器高5-10倍。
IIR滤波器的设计可以利用模拟滤波器许多现成的设计公式、数据和表格,计算的工作量较小。
从结构上看,IIR必须采用递归型结构,极点位置必须在单位圆内,否则系统将不稳定。
FIR滤波器主要采用非递归结构,但它的传递函数的极点固定在原点,否则系统将不稳定。
FIR滤波器可以采用快速博里叶变换算法,在相同阶数的条件下,运算速度可以加快。
从设计工作看,IIR滤波器可以借助于模拟滤波器的成果,因此一般都有有效的封闭形式的设计公式可供准确地计算。
又有许多数据和表格可查,设计计算的工作量比较小,对计算工其的要求不高[12]。
FIR滤波器设计则一般没有封闭形式的设计公式。
窗口法虽然仅仅对窗口函数可以给出计算公式,但计算通阻带衰减等仍无显式表达式。
,一般,FIR滤波器的设计只有计算程序可循,因此对计算工具要求较高,没有电子计算机的程序功能是很困难的。
然而这个特点又带来相反的一面,IIR滤波器设计简单,主要用以设计具有片段常数特性的滤波器,如低通、高通、带通及带阻等。
而FIR滤波器则要灵活得多,尤其是频率采样设计法更容易适应各种幅度特性和相位特性的要求,可以设计出理想的正交变换、理想微分、线性调频等各种重要网络。
基于以上比较,IIR和FIR各有优缺点,本文采取了IIR滤波器。
3.2数字滤波器设计方法
数字滤波器可以理解为是一个计算程序或算法,将代表输入信号的数字时间序列转化为代表输出信号的数字时间序列,并在转化过程中,使信号按预定的形式变化。
根据数字滤波器冲激响应的时域特征,可将数字滤波器分为两种,即无限长冲激响应(IIR)滤波器和有限长冲激响应(FIR)滤波器。
IIR数字滤波器具有无限宽的冲激响应,与模拟滤波器相匹配。
所以IIR滤波器的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 利用 MATLAB 软件 音频 信号 进行 频谱 分析 处理
![提示](https://static.bdocx.com/images/bang_tan.gif)