用matlab研究声学现象
摘要:
matlab是一种用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。是一种用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境的应用范围非常广,包括信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。附加的工具箱(单独提供的专用 函数集)扩展了环境,以解决这些应用领域内特定类型的问题。
主要功能
此高级语言可用于技术计算
此开发环境可对代码、文件和数据进行管理
交互式工具可以按迭代的方式探查、设计及求解问题
数学函数可用于线性代数、统计、傅立叶分析、筛选、优化以及数值积分等
二维和三维图形函数可用于可视化数据
各种工具可用于构建自定义的图形用户界面
各种函数可将基于的算法与外部应用程序和语言(如C、C++、Fortran、Java、COM以及Microsoft Excel)集成
二、音叉的振动:
2.1 音叉介绍:
音叉(tuning fork)是呈“Y”形的钢质或铝合金发声器,各种音叉可因其质量和叉臂长短、粗细不同而在振动时发出不同频率的纯音。用音叉取标准音是钢琴调律过程中十分重要的环节之一关系到一台钢琴各键音处在什么音高位置上。)作用下发生振动,其振动系统满足下列运动微分方程:
式中:———阻尼常数;
———音叉系统的固有圆频率;
———振动系统的质量;
———强迫力的振幅;
———强迫力的圆频率;
在阻尼较小的情况下,上述方程的解式中第一项是一个减幅振动;第二项是一个等幅振动。 当达到稳定状态后其振动表达式为:
式中;
当=时,振幅A出现极大值,此时达到共振。
三、傅立叶变换:
3.1 简介:
傅立叶变换是信号分析和处理的重要工具。有限长序列作为离散信号的一种,在数字信号处理中占有极其重要的位置。对于有限长序列,离散傅立叶变换不仅在理论上有着重要的意义,而且有快速计算的方法——快速傅立叶变换。所以在各种数字信号处理的运算方法中越来越起到核心的作用。
所谓傅立叶变换就是以时间为自变量的“信号”与频率为自变量的“频谱”函数之间的某种变换关系。这种变换同样可以应用到其他各种有关物理或数学的问题中,并可以采用其他形式的变量。当自变量“时间”或“频率”需连续形式和离散形式的不同组合时,就可以形成各种不同的傅立叶变换对。
3.2 离散傅立叶变换(DFT)
离散傅立叶级数变换是周期序列,有N个独立的数值,所以他的许多特性可以通过有限长序列沿拓来得到。对于一个长度为N的有限长序列x(n),也即小(n)只在0~(N-1)各点上有非零值,即
把序列x(n)以N为周期进行周期沿拓得到周期序列,则有
所以,有限长序列x(n)的离散傅立叶变换(DFT)为
逆变换为
3.3 快速傅立叶变换(FFT)
快速傅立叶变换(FFT)并不是与DFT不同的另外一种变换,而是减少DFT计算次数的一种快速有效的算法。这种快速有效的算法,主要是利用了下面两个特性使长序列的DFT分解为更小点数的DFT所实现的。
利用的对称性使DFT运算中有些项合并
利用的周期性和对称性使长序列的DFT分解为更小点数的DFT
快速傅立叶变换(The Fast Fourier Transform,FFT)是离散傅立叶变换(Discrete Fourier Transform,DFT)的一种快速算法,它是库利(Cooley)和图基(Tukey)于1965年提出的。FFT使DFT的次数由N^2减少到Nlog2(N)次,使DFT应用于实际变为现实,使DFT进一步得到完善。作下面三点说明: 1.FFT是通过DFT运算中存在对称性和周期性而做的化简。 2.FFT可以通过对时间参量或者频率参量不断分解为奇偶表达式,再做进一步改进,分别称为时间抽取法和频率抽取法。 3.matlab给出的FFT介绍实际是DFT的表达式,未作DFT向FFT的简化过程说明,但计算过程内核是FFTMATLAB中是一维数组。Matlab中有2个处理wav格式语音的函数,一个是将wav语音流文件转换为数组格式数据的函数wavread(),另一个是将数组格式数据转换为wav语音流文件的函数wavwrite()。
windows自带的录音机软件可以录制较短的音频文件,文件后缀名为wav,也可以用mp3录制。对于其它后缀的音频文件可以利用音频格式转换软件,将文件转换为wav。利用matlab对该类文件的FFT变换,获得音频信号在时域上的图像,从而作进一步的分析。
首先对两个不同音叉,音叉A和音叉B的声音信号进行分析:
在matlab中输入如下程序:
[y,Fs,bits]=wavread('file name');
y=y(:,2);