《基于matlab的简单音乐合成仿真设计大学论文.doc》由会员分享,可在线阅读,更多相关《基于matlab的简单音乐合成仿真设计大学论文.doc(36页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 密级: 学号:本科生毕业论文(设计)基于MATLAB的简单音乐合成仿真设计学士学位论文原创性声明本人郑重声明:所呈交的论文(设计)是本人在指导老师的指导下独立进行研究,所取得的研究成果。除了文中特别加以标注引用的内容外,本论文(设计)不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式表明。本人完全意识到本申明的法律后果由本人承担。学位论文作者签名(手写): 签字日期: 年 月 日 学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借
2、阅。本人授权江西科技学院可以将本论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。本学位论文属于保 密 , 在 年解密后适用本授权书。不保密 。(请在以上相应方框内打“” )学位论文作者签名(手写): 指导老师签名(手写): 签字日期: 年 月 日 签字日期: 年 江西科技学院本科生毕业论文(设计)摘要科学技术的发展使得社会生活越来越趋于信息化和数字化,在此基础上语音信号也可以基于数字信号处理技术和语音学相关知识进行信息化处理,此类技术因应用性广便捷性高受到社会的广泛关注,已成为信息科学工程与研究领域的核心技术,被越来越多的高科技产业广泛使用。
3、计算机合成音乐也在其基础上得以迅速普及,而且理论上可以创造出任何一种声音。MATLAB是一种用于数据分析和处理的计算机应用软件,它可以将语音文件进行信息化处理转化为离散的数据文件,再通过内置强大的矩阵运算能力如数字滤波、时域和频域分析、傅里叶变换、时域和频域分析、声音合成以及各种图形的呈现等处理数据。利用MATLAB自带的功能函数可以快捷而又方便地完成语音信号的处理和分析以及信号的可视化,使人机交互更加便捷。音乐可视为不同频率与振幅的正弦波叠加并加以不同包络所形成的信号,它的这个特点使得MATLAB的处理有了可能,通过处理不同的音频MATLAB可以进行简单的音乐合成。本文主要是基于MATLAB
4、环境下的音乐合成研究,首先基于相关的处理函数合成简单的音乐,并且对音乐进行降噪、升降度和加谐波等处理;然后基于傅里叶变换分析处理后的音乐频谱;最后根据傅里叶级数的原理来再次合成音乐。关键词:音乐合成;MATLAB;傅里叶分析AbstractIn the current society, information technology and digitization become more and more high. As a new technology to process speech signals based on digital signal processing technolo
5、gy and phonetic knowledge, voice signal processing technology is widely used in more and more high-tech industries. Technology has become one of the core technologies in the field of information science engineering and research. Computer synthesis of music to the rapid spread, in theory, you can cre
6、ate any kind of sound.MATLAB is a computer application for data analysis and processing that transforms sound files into discrete data files and then processes their data with powerful matrix operations such as digital filtering, Fourier transform, time domain and Frequency domain analysis, sound sy
7、nthesis and a variety of graphics rendering. Using MATLABs own function function can quickly and easily complete the voice signal processing and analysis and signal visualization, human-computer interaction more convenient. As the music signal can be seen as a series of different frequency and ampli
8、tude of the sine wave superposition and the formation of different envelopes, so you can use this feature based on MATLAB software analysis and processing of different audio signals for simple music synthesis.This paper is mainly based on the study of music composition under MATLAB environment, usin
9、g the relevant audio processing functions for simple music synthesis, the music noise reduction, plus harmonic and lifting processing; Fourier transform with the corresponding treatment of the Music spectrum; Finally, re-synthesis the music according to the principle of Fourier series.Key Word:Music
10、 synthesis; MATLAB; Fourier analysis目 录第1章绪 论11.1 选题意义及背景11.2 国内外研究现状11.3 本文主要研究内容21.4 MATLAB音乐合成的原理31.4.1所涉及的乐理知识简述31.4.2音调与唱名31.4.3音色与谐波31.4.4十二平均律41.4.5傅里叶变换与频谱分析41.5 MATLAB的发展史4第2章 音乐合成的相关算法62.1 基于统计声学模型的合成算法62.2 基于离散变换的合成算法72.3 本文算法7第3章 基于MATLAB的简单音乐合成设计93.1 MATLAB简介93.1.1MATLAB的运行113.1.2变量、语句、
11、矩阵与函数123.1.3 绘制三维图形123.3 核心算法实现133.4 算法设计143.4.1 调用相关的MATLAB函数143.4.2 音乐初步处理143.4.3 音乐合成15第4章 基于MATLAB的简单音乐合成仿真174.1 合成音乐174.1.1 初始音乐合成174.1.2 消除噪音174.1.3 重新生成音乐194.2 原始声测试和傅里叶分析204.2.1 原始声测试204.2.2 傅里叶分析234.2.3 重新合成新音乐25第5章 总结与展望265.1 总结265.2 展望27参考文献29致 谢30III第1章绪 论1.1 选题意义及背景半个多世纪以来,音乐家们一直致力于利用当今
12、的科技和新材料来探索新的音乐,在原来的基础上进行不断的创新,音乐合成此项技术由于其强大的数据处理能力和创造能力便随之进入音乐家们的视野。音乐合成技术,不仅可以巧妙模仿现有乐器的音色,还能够创造新的声音,极大地丰富了人类的音乐,给我们带来了无穷无尽的新音乐体验。随着科技的发展,计算机合成音乐迅速在音乐界流传并普及。作曲家和音乐家们为了创新和追求个性,往往选择在音乐中加入新的声音,而计算机合成音乐技术即为其提供了可能,因为在理论上它可以创造出任何一种声音。现在,合成音乐已经逐渐脱离模仿现有乐器音色的道路,转而向创造音色方面发展。虽然合成音乐在现代音乐领域已有相对广泛的应用,但是发展仍有所受限,国内
13、在该方面的权威理论著作也很少。这是因为它其涉及音色、声学、计算机等相关学科,是一门综合性强且专业性高的学科。通过分析近年来使用合成音乐的现代音乐,可以发现合成音乐相较声学乐器在层次和音色上都具有显现的独特性,这些分析也能为计算机合成音乐在现代音乐制作的应用提供相对有实践价值的参考。MATLAB是英文MATrix LABoratory(矩阵实验室)的缩写。自1984年由美国MathWorks公司推向市场以来,得到了广泛的关注和发展。在发达国家,MATLAB已经是大学以上学历者所必须具备的一项技能,是数字信号处理、时间序列分析、线性代数、自动化控制理论、动态系统仿真等诸多课程的基本教学工具。而在设
14、计和工业部门,MATLAB也有广泛的应用,主要用于解决各种具体的工程和交互问题。根据国外的发展历史和近几年MATLAB在中国的发展趋势,可以预见其在不久的将来,将会在科学研究和工程应用领域发挥越来越大的作用。1.2 国内外研究现状音乐合成技术是语音合成技术的一个分支。国外对于语音合成的研究已长达200多年,虽然研究时间长但是显著的研究成果是在计算机技术和数字信号处理技术发展之后才出现的,主要表现为让计算机能够输出高清晰度和自然度的连续音乐。近几十年,该技术在国内外的研究重点为规则文语转化,也就是将书面语转化为口语。在语音合成技术的历史发展过程中,早期研究主要应用参数合成法。其中最具意义的就是H
15、olmes的并联共振峰合成器(1973)和Klatt的串/并联共振峰合成器(1980),这两个合成器只需要细致的参数调节即可合成自然的语音。美国DEC 公司的DECtalk,是当时最具代表性的文语转换系统,它就是搭载串/并联共振峰合成器,从而使得人机交互有了更大的便捷和可能,该系统可以通过计算机联网或者接入电话网来提供各项语音服务,不仅发音标准清楚,而且还具备7种不同的音色,受到了当时的广泛追捧。但是后来人们发现,共振峰合成器尽管可以提供逼真的合成语音,但是其音质却因为提取共振峰参数的困难存在较大的缺陷,并不能满足当下需求。因此在不断的研究下,语音合成技术又有了新的发展基音同步叠加(PSOLA
16、)方法(1990)。这项技术基于时域波形的拼接,大大提高了合成音乐的音色和自然度,因此在九十年代初受到了广泛的关注,包括法语、英语、日语、德语等在内的文语转换系统都被成功开发研制出来,而且此项技术结构简单易于实时实现,有着非常美好的商用前景。近年来的研究,也开发出一种基于数据库的新的语音合成方法。该数据库为预先录下的庞大语音数据库,每个合成语句的语音单元都能从数据库中进行调取和拼接,因此只要数据库足够庞大,那么理论上任何语音都可以被合成出来且具有不同语境下的语气和音调差别,清晰度和自然度将会有质的提升!1.3 本文主要研究内容在本设计中,MATLAB软件通过对音乐信号频率与时长的分析与组合来简
17、单合成音乐。频率表现音调,时长体现时长,基于该基础MATLAB在编程中能够存储音乐的频率和时长,并且通过将正弦波形的不同叠加与包络设置来仿真实现音乐的音调与节奏的变化。主要特色:1、直观而集中的显示各运行参数,能分析音乐合成的运行。2、参数便于修改,从而方便改变音色和音调。论文的主要结构分为五个部分:第一章为绪论,简单介绍了选题背景和意义,同时介绍了国内外关于语音合成的研究状况,也描述了本文的主要研究内容和方向;第二章是介绍了一些合成算法,本文的研究算法是从这些算法中综合而来;第三章是简单音乐合成的设计思路,同时对基本原理进行了分析;第四章是仿真实验部分,介绍了本文的实验成果;第五章是总结;最
18、后部分是致谢。1.4 MATLAB的发展史MATLAB由美国New Mexico大学Cleve Moler教授编写并命名,起初他是为了方便学生调用EISPACK和LINPACK从而编写了其接口软件。MATLAB的便捷性使其之后成为了国内外许多大学的教学辅助软件。1984年,Cleve Moler和John Little创建了Math Works并推出了第一版MATLAB DOS,核心使用C语言编写。随着MATLAB的不断发展,20世纪90年代末推出了MATLAB5.x版本,功能更加强大,能处理更多的数据结构。2000年,MATLAB6.0出现,操作界面有了三个窗口:程序、历史信息及变量管理,而
19、FFTW系统的应用使得其计算速度上了一个台阶。一年后(2001),MATLAB6.1及Simulink4.0相继问世,功能更强大的MATLAB6.5也在2002年推出。2004年,MATLAB7.0版本发行,优化了编程环境、数据可视化、计算和文件I/O等方面的功能。此后几年,MATLAB7.17.14也不断更新迭代,性能不断优化,功能不断完善。近几年推出的MATLAB2012b(8.0版)及MATLAB2013a相较之前有了较大的改变,主窗口中工具条替代了菜单和工具栏显得更加齐整和简洁,帮助文档在搜索、浏览和筛选功能上也有了大幅度的提升。MATLAB2014a和MATLAB2014b版本也在之
20、后推出。本设计使用的是MATLAB2013a,它功能强大而且方便快捷。1.5 MATLAB音乐合成的原理 在本设计中,MATLAB软件通过对音乐信号频率与时长的分析与组合来简单合成音乐。频率表现音调,时长体现时长,基于该基础MATLAB在编程中能够存储音乐的频率和时长,并且通过将正弦波形的不同叠加与包络设置来仿真实现音乐的音调与节奏的变化。1.4.1所涉及的乐理知识简述 音乐合成过程中不可避免需要考虑音乐的三大特性:音调、响度、音色。音调就是音的高低,其主要影响因素为声波的频率。响度为音的强弱,其主要影响因素为声波的振动幅度。音色是声音的感觉特性,其变化是由音乐波形中谐波的作用产生的。1.4.
21、2音调与唱名 音乐曲谱中所对应的的1(do)、2(re)、3(mi)、4(fa).即为唱名,每个唱名代表着各自独特的基波频率,但是要确定其基波频率必须先确定音调。如,乐谱为1=C,代表音调为C调则“1(do)”的基波频率是261.6Hz,若乐谱为1=E则“1(do)”频率是239.6Hz,乐谱为1=G则“1(do)”的频率是392.1Hz。1.4.3音色与谐波 音色是声音的感觉特性,其变化是由音乐波形中谐波的作用产生的。在专业术语中,“泛音”指谐波,音调确认后可以确定唱名的基波频率,但是谐波频率的却无法确定。乐器不同,所发出声音的音乐也不同,这是因为不同乐器会产生不同的谐波成分和频谱结构。不仅
22、如此,不同乐器多产生的音乐包络波形也迥乎不同,在合成音乐时常将音乐的复杂包络函数直线化,这是便于用程序来表示波形包络,因而常呈折线型。1.4.4十二平均律 十二平均律,是指将音乐的八度按照频率等比例地分成十二份,是一种音乐定律的方法。它被广泛应用在键盘乐器与交响乐队中,因为它不仅与“五度相生律”发音相似,而且能轻松解决转调问题。国际标准音的规定显示,相邻的半音之间的频率之比定为2(1/12)1.059,钢琴就是所有乐器中应用该规律的最常用乐器。其琴键a1的频率规定为440Hz,所以根据国际标准音规定就可以算出钢琴其他所有琴键所对应的频率。如,与a1左边相邻#g1频率是440/1.059=415
23、.03Hz,与a1右边相邻的半音#a1的频率是466.16Hz,也可以算出不同音调下“1(do)”的对应的基波频率,即C:261.63Hz,F:349.23Hz和G:392Hz等。1.4.5傅里叶变换与频谱分析 音乐合成过程中不可避免需要考虑音乐的三大特性:音调、响度、音色,因此必须了解音乐的基波、谐波频率成分以及包络的形状特征。应用傅里叶变化理论对音乐信号的频谱结构进行分析处理,有利于提取其频谱特征。现代信号频谱的主要分析方法为有限长序列的离散傅氏变换(DFT),它能够将频域也离散化。N点DFT实质上是其频谱的离散频域采样,对频率具有选择性(k=2k/N),在这些点上反映了信号的频谱。N点D
24、FT虽然能克服时间域与频率域之间相互转换的计算障碍,但是其计算量大计算复杂。因此引用快速傅里叶变化(FFT)算法最简单、编程最容易的基2FFT,还有基4FFT、基8FFT等快速算法。采样定律说明,FFT变换相当于对有限长序列进行频域采样,计算速度快而且也不会丢失信息,具有双重作用。所以只要时域序列的长度足够长,采样的点数足够多,频域采样也可以很好地反映信号的频谱趋势,基于以上优点,在设计中可以用FFT进行语音信号的频谱分析。第2章 音乐合成的相关算法音乐合成是语音合成的一种,因此语音合成的算法思路可以直接运用于音乐合成中。对于语音合成的研究已经到了一个比较深入的阶段,也出现了多种不同的算法,但
25、是归结起来,主要是两个大的方向,其中一种是通过统计学建立声学模型来进行语音合成,另一种是挑选语音的特征参数来识别并合成新的语音。2.1 基于统计声学模型的合成算法这种算法的思路是在模型训练阶段,首先提取语料库中语音数据的频谱、基频等声学相关指数,与统计声学模型可以用于匹配之前和之后的内容,并通过语料库中音位以及韵律予以注释。使用的模型结构为隐马尔柯夫模型。当进入到合成阶段时,以使目标合成句对应的声学模型具有最大的似然值输出为准则,来进行最佳合成单元的挑选,最后通过平滑连接各备选单元波形来生成合成语音。其核心在于对录入过程中中,对待合成字符产生的研究数据,需要将匹配的单元从前期进行录制的语料库中
26、进行筛选,得到的结果为由波形进行编辑而成的语音成品。这种效果制作的语音成品相比普通算法在自然度上有所超越,原因在于波形自身便具备自然的特性。前期筹划的语料库的内容越广泛,自然度的优势就越明显,甚至会影响到语音合成未来的前进发展问题。随着对语音合成技术的不断探究,目前以隐马尔柯夫模型作为主流算法,并且得到快速的推广。类似统计建模的统计模型,范围在语音识别方面以获得广泛推广。在这种参数的操作原理中,即是在参数合成的方式以统计模型为主,声学模型为辅的方式进行模拟,其中参数生成的方式为最大似然,通过对生成语音成品需求的频谱和韵律进行评估,再通过参数合成的方式转化语音。以这种方式为原则,将提升系统的应用
27、性,在运算期间,可以无视语种的区别以及进行自动化训练,最终使综合的自然度质量提高。通常在自动化训练环节,在前期筹备的语料库里,可针对音素声学参数匹配音段、韵律进行内容注释,对HMM模型中之前和之后的内容进行信号频率、基频和时间长度进行训练。在最后的合成环节,需要进行录入文本的解析,才可获取目标合成句中所有语音最小单位进行上下内容的注释,测试已优化好的模型与声学模型的匹配程度。可以参照Kullback-Leibler算法原则进行单元的选择和MLE算法原则下进行单元值的选择,生成的最终单元序列可达到合成语音的平滑输出。详细训练算法以及合成算法如图2.1所示。图 2.1基于统计声学模型的合成算法2.
28、2 基于离散变换的合成算法这种算法是在离散变换域中合成语音信号,建立语音线性预测模型,信号经过加窗后随着信号帧推进逐一展开处理,随之对语音取样值的线性组合进行预测以及运行基音检测算法择取语音帧,对语音信号进行模拟重建。其主要特质为,通过对样本进行频率滤除,进而通过预测器进行预测,以语音线性预测模型进行优化,以达到控制信号的带宽,加窗后随着信号帧推进逐一展开处理,音频的重构合成将在声道模型中进行。采用此种算法的亮点在于传输能力方面要好过模拟信号。通常情况下,信号在转换过程中需要将模拟变为数字,而语音信号也不例外,作为对语音信号进行重构合成的变换域(即Z域),就是由离散系统转变而成。2.3 本文算
29、法通过结合实际情况,本文的算法思路是:首先利用相关的语音处理函数进行简单的音乐合成,对音乐进行降噪、加谐波以及升降度处理;然后用傅里叶变换分析经相应处理后的各音乐频谱;最后运用傅里叶级数的原理来再次合成音乐针对语音音频进行对应的优化合成,对音乐频率中产生的噪音、非正弦电量、音调等参数进行分析优化。采用此种的亮点在于,方便快捷,可以使普通音频合成的效果显著。只不过,如果面对非常复杂的音频,就会出现诟病。在噪音、音调等方面受到阻碍。下文将着重通过博里叶技术变化进行剖析,证明此种方法的合理性。第3章 基于MATLAB的简单音乐合成设计本章主要简单音乐合成设计,并对设计的基本原理进行分析,在介绍之前先
30、对MATLAB进行一个简介。3.1 MATLAB简介Matlab为缩写的英文名,而它中文命名为矩阵实验室(MATrix LABoratory),(矩阵实验室)的缩写。在1979年的时候,克里夫莫勒尔正在为美国新墨西哥大学任教,当他在授课的时候,希望自己的学生可以运用EISPACK和LINPACK进行运算,当时他发现自己的学生在对接口进行编程经常要花费大量精力,给运算带来极大的不便。为了解决这一问题,方便学生的运算,他便自己编写出程序库的接口程序,并且根据程序库的运算方式命名为矩阵实验室。雏形时期的Matlab是用FORTRAN语言进行简编,用途比较单一,因为无偿使用又在学生中有良好的口碑,经常
31、被各个大学所应用。工程师John Little敏锐地觉察到Matlab在工程领域的广阔前景。同年,他和 Cleve Moler、Sieve Bangert一起合作成立了公司。以C语言开发使之成为专业进行数据运算以及图表显示功能的专业软件。在九十年代初期,公司不断对Matlab进行更新、升级、换代,使之成为多功能化计算软件,在软件超凡的数据运算能力为前提,增加了符号运算以及模拟建模等功能。使编程更方便。1999年初推出了的5.3版本在很多方面又进行了进一步改进。2001年7月,MathWorks公司退了Matlab最新版本6.1版,6.1版对计算机配置要求比较高。之后又推出了7.0版本。现在用户
32、用的最多的是7.0版本。 截止到目前,Mat lab已经逐步成为专业功能更强大的软件,它所具备的灵活运算能力以及通俗易懂的语言使之更为实用,其中在各个国家知名大学中被普及应用,并受到广泛的好评。主要运用于数学、机械自动化、自然科学、工程科技、测量测绘等多种学科,是众多学科专家教授以及学生都需要必备的应用软件,并在一些更为专业的学术部门被普及运用,进行专业性的科研开发。在国内的科研项目之中,Matlab也被普遍应用,而本文中主要需要Matlab的通讯处理和仿真模式。Matlab的计算功能分两个方面,一方面是数值计算,一方面则以针对数据中的符号计算进而提供分析数据,对于精度以及解析进行求解。另外它
33、包含的函数内容以及函数算法等兼容性较强,算法公式为经过专业计算专家进行审核认可,并经过精心设计。另外,对于符号计算的分析功能也十分强大,在通过与MAPLE软件进行强强联手,并以其明显的功能优势成为计算软件中的主流软件。Matlab在制图方面的功能也非常完整,可进行两种层次的制图进行操作:首先可以对图形变量进行低层制图,再次也可以在此基础上进行高层制图。尤其是在高层制图方面,不仅在制图的功能上比较丰富,在操作上设计中也合理便捷。图片的变量在绘制过程中可随意的进行控制。此外,Matlab的额外亮点还在于它会用户提供的工具箱,在进行基础的计算制图等功能时,可使用基础款工具,就完全能满足需求。而在扩展
34、工具箱中,包括功能、学科等多种针对性操作工具,例如:模拟建模、符号处理、系统操作、通讯信号、金融数据等多种专业性工具。Matlab能够在数据计算软件中占据主流的位置,在科研单位以及高校各学科中得到如此的普及运用得益于它的可视化图表、数值运算、算法测试等。其中包含Matlab和Simulink,两者可以将诸多专业性工具可视化图表、数值运算、模拟建模等在软件视图内进行优化,以达到更高的客户体验。主要运用于数学、机械自动化、自然科学、工程科技、测量测绘等多种学科。Mat lab的主要特点分析如下:1.编程语言简单,应变能力强大;依靠其种类繁多、数量大、涉及范围较广的数据库,可以通过便利的函数应用进行
35、制作测试,对初学者基本无太多要求,而且非常容易上手。2. 用户体验良好,在Matlab能将基础功能进行掌握之后,基本对程序调试也非常熟练,开发人员对程序的编制更加得心应手,而且其具备通俗易懂的操作界面,以人性化和实用化的开发环境满足开发人员的实际需求,可以尽快对于错误进行修复和排除,另外由于学习难度降低,使之成为比VB更为简单的语言系统。3扩展兼容能力强 , Matlab强大的数据库使开发人员对程序的编制更加得心应手,并且库函数兼容能力强,针对可以根据用户的体验进行自行改变,调动、翻阅。根据开发人员的实际需求,还可以自行对一些元素进行自定义的建设和扩展,使其具有的多元化的特征跟拓展性的功能。4
36、语句简单,内容综合体现 ,Matlab主要依靠函数成为自身重要语言,通常用以下表示:(a,6,c)= fun(d,e ,f,),含义为函数在函数命数之内,输入变量d,e,f,和输出变量a,b,c .组成,同一函数名F,不同数目的输入变量(包括无输入变量)及不同数据存在的变量。其中每一种变量,有存在针对性的数值,使之将繁杂的运算符转化更加精简,从而大量减少字符的数量,提供了良好的编辑和调试的环境。5矩阵和数组运算能力强 Basic、Fortra一样规定了矩阵的一系列运算符,它不需定义数组的维数,并给出矩阵函数、特殊矩阵专门的库函数,将其用于在通讯方式、模拟建模、语音识别等角度的应用,可以提高研究
37、的效率,尤其是科研类软件的开发,它具有的功能性以及可控制性使一些专业范围内的软件得到更好的研发及应用。6制图功能简单有效,对于制图的功能性,Matlab的优势在于简单,通过输入制图函数的指令,就可以对其图形、颜色、线、点等多重要素进行绘制。而且对于制图表标题、注释也仅需要简单指令就可以达成。3.1.1MATLAB的运行 启动MATLAB 点击MATLAB图标,进入到MATLAB命令窗(MATLAB Command Window).在命令窗内,可以输入命令、编程、进行计算. 学会使用help命令在命令窗内输入help命令,再敲回车键.在屏幕上出现了在线帮助 总览.(注意:MATLAB命令被输入后
38、,必需敲回车键才能执行.为行文方便,以后不再每次提醒“敲回车键”.)学会使用help命令,是学习MATLAB的有效方法.例如:要想知道MATLAB中的基本数学函数有哪些,可以在总览的第五行查到:MATLAB中的“基本数学函数”用elfun表示,于是,可进一步键入:“help elfun”,屏幕上将出现“基本数学函数”表.(注意:help elfun之间有空格,以后不再每次提醒.)如果想了解sin函数怎样使用,可进一步键入help sin.在工具栏中点击help按扭,或点击?号按扭,与上面获取帮助信息的方法是等效的. 学会使用demo命令 在命令窗内输入demo命令,再敲回车,键屏幕上将出现演示
39、窗口. (MATLAB Demo Window)一共有三个窗口,左边的窗口显示欲演示内容的大标题,选定其中一项,右下方的小窗口显示欲演示的具体内容,选中其中一栏,再点击run按扭,屏幕上将演示选定的演示程序.右上方的窗口显示关于大标题的一些说明.在命令窗内输入type (文 tob_id_4294 2 件名),将显示演示程序的M文件,仔细研究演示程序的M文件,是学习MATLAB的又一有效方法. 进入演示窗还有另一方法:在工具栏中点击Help栏,下拉式菜单中点击examples and demos项,即可进入演示窗口. 退出 在工具栏中点击File按钮,在下拉式菜单中单击Exit MATLAB项
40、即可3.1.2变量、语句、矩阵与函数 1变量 在MATLAB中,变量由字母、数和下划线组成.第一个字符必须是字母.一个变量最多由31个字符组成,并区分大小写.下面是MATLAB中表示特殊量的字符: pi(圆周率)、eps(最小浮点数)、Inf(正无穷大)、NaN(表示0/0或inf-inf等不定值)、i,j(虚数单位) 2语句 MATLAB语句的一般形式为:变量=表达式.当某一语句的输入完成后,按回车键,计算机就执行该命令.如果该语句末没输入其它符号或输入了逗号,将显示结果;如果句末输入了分号,将不显示结果.如果语句中省略了变量和等号,那么计算机将结果赋值给变量ans. 3矩阵 把mn个数排成
41、m行n列的数表,此数表被称为m行n列的矩阵,记为 =mnmnnmaaaaALMMML1111 MATLAB中矩阵的输入方法如下:A=a11,a1n;am1,amn.逗号是数之间的分隔符(也可用空格代替);分号是换行符. 3.1.3 绘制三维图形 空间曲线的绘制 绘制空间曲线的基本命令为: plot3(x,y,z);plot3(x,y,z,s)或plot3(x1,y1,z1,s1,x2,y2,z2,s2,) 其中x,y,z是同维的向量或矩阵.当它们是矩阵时,以它们的列对应元素为空间曲线上点的坐标.s是线形、颜色开关,这一点与二维曲线时的情形相同. 曲面的绘制 绘制空间曲面的基本命令为mesh(x
42、,y,z). 如果x、y是向量,则要求x的长度=矩阵z的列维;y的长度=矩阵z的行维.以zij为竖坐标,x的第i个分量为横坐标,y的第j个分量为纵坐标绘网格图 多幅图形的创建 有时同一曲面或曲线需要从不同的角度去观察,或用不同的表现方式去表现,这时,为了便于比较,往往在一个窗口内画多幅图形.MATLAB用subplot命令实现这一目的.具体格式为: subplot(m,n,p) 使用此命令后,把窗口分为mn个图形区域,p表示当前区域号. 例如把sinx,cosx,atanx,sinxcosy画在一个窗口内,可键入: x=0:pi/6:2*pi;y=x; z1=sin(x);z2=cos(x);
43、z3=atan(x); subplot(2,2,1); plot(x,z1,r,x,z2,g) subplot(2,2,2);plot(x,z3,m) subplot(2,2,3);x,y=meshgrid(x,y);z4=sin(x).*cos(y); mesh(x,y,z4);subplot(2,2,4);surfc(x,y,z4) 3.3 核心算法设计这个算法核心就是傅里叶变换,傅里叶变换本来是数学专业的内容,但是在MATLAB中运用的非常广泛,本文根据福利叶变换创建了信号频谱的概念。傅里叶分析就是将信号的频率构成、频率宽度等特征进行分析。音乐的基波频率和谐波构成是合成一段音乐的基本。所
44、以,傅里叶变换是在处理时必须要使用到的基本工具。当时间信号是连续时,根据傅里叶变换有如下公式:。因为等式两边都是连续性函数,并不能用作计算机来进行计算。需要MATLAB提供的符号函数fourier来进行计算。但是有一个前提要求,就是需要信号解析的表达式。但是在工程实际应用中,并不能得到信号是解析表达式,在这种情况下,就需要傅里叶变换的数值计算的方法。如果f(t)的主要取值区间为t1,t2,那么将T=t2-t1定义为区间长度。在该区间内抽样N个点,抽样间隔为t=T/N,那么 通过上述公式那么可以计算出任意频点的傅里叶变换值。假设F()的主要取值区间是 1,2 ,要计算其间均匀抽样的k个值,故在上
45、面的式子中有如下表达式其表达的意思为频域抽样间隔。3.4 算法实现3.4.1 调用相关的MATLAB函数相关的几个声音信号分析与处理的MATLAB函数及其功能,见下表表3.1 函数功能表函数功能wavread读.wav文件sound将向量转换成声音kron矩阵的张量积(叉乘)resample改变信号的采样率interp上采样(提高采样率)decimate下采样(降低采样率)3.4.2 音乐初步处理要注意音乐时间的分割。在进行音乐信号处理时,需要考虑样品数据是否是该软件接受范围内的点。假设以8000Hz为取样样品,意味着在一秒内就有8000个取样数据点。需要再进行相当长时间的数学计算。由于时间较
46、长,可能会出现死机的情况。所以,需要对音乐进行分割成若干个小段落后在进行分析计算。并且分割的段落越多,其计算分析的速度越快,效率越高。科学时间段落为0.5秒一个段落。在进行音乐分析工作时,分析的重点应该落在每一小段的最高幅度周围,其他处当做幅度衰减其频率不变,可以不用重复分析。能够减少工作时间。减少无用功。但是为了避免出现漏掉基波频率,就需要严格参考时域波形,确定每个音的起止时间和持续时间。承接上文提及到的音乐的起始时间和持续时间,这二者是合成音乐中的重要环节。音调的持续时间就是音乐的节拍,俗称的拍子。一个节拍大约有零点五秒。需要准确把我每个音的起始时间和持续时间,这样才不会在合成音乐时完成失真的现象,才能真正把握住各个基波频率的顺序和节拍。音乐中一个重要的因素就是音乐的波形包络。为了减小合成过程中造成的误差,可以通过音乐时域波形判断音乐在下一个音乐开始时是否会衰减为零。音乐的包络有两种形式,一是折线型,二是指数衰减。其重要步骤是如何采取衰减指数。若是采取折线方式,其操作会更繁琐一点,但是可以通过时域波形来判断折线斜率。如果采取指数衰减的形式,就要简单一些,只需要确定衰减系数。本文采用的方式是指数衰减方法,根据工程上电容充放电理论来确定衰减系数,当t大于等于3S以后,可认为电路已趋稳定,其中,S为RC电路的时间常数,S=RC。假设某一个音乐