MATLAB课程设计(含完整程序)Word下载.docx
《MATLAB课程设计(含完整程序)Word下载.docx》由会员分享,可在线阅读,更多相关《MATLAB课程设计(含完整程序)Word下载.docx(37页珍藏版)》请在冰点文库上搜索。
绪论1
1MATLAB内容简介2
1.1MATLAB语言功能2
1.2MATLAB语言特点2
2连续时间周期信号的傅里叶级数—CTFS3
2.1连续时间周期信号的分解3
2.1.1三角形式的傅里叶级数3
2.1.2指数形式的傅里叶级数4
2.2连续时间周期信号的傅里叶综合4
3连续时间周期信号的频谱分析6
4周期信号的傅里叶级数分解与综合的仿真波形8
4.1实现流程8
4.2MATLAB算法提示8
4.3程序运行结果9
5连续时间周期信号的频谱分析的仿真波形10
5.1实现流程10
5.2MATLAB算法提示11
5.3程序运行结果及分析12
5.3.1程序运行结果12
5.3.2脉冲宽度与频谱的关系13
5.3.3脉冲周期与频谱的关系15
6典型周期脉冲的频谱18
6.1周期方波脉冲频谱的MATLAB实现18
6.2周期三角波脉冲频谱的MATLAB实现20
结束语23
致谢24
参考文献25
附录26
摘要
MATLAB目前已发展成为由MATLAB语言、MATLAB工作环境、MATLAB图形处理系统、MATLAB数学函数库和MATLAB应用程序接口五大部分组成的集数值计算、图形处理、程序开发为一体的功能强大的系统。
本次课程设计则在深入研究连续时间信号傅里叶级数分析理论知识的基础上,利用MATLAB强大的图形处理功能、符号运算功能以及数值计算功能,通过MATLAB编程进行图形功能仿真,从而实现连续时间周期信号频域分析的仿真波形,包括以下内容:
用MATLAB实现周期信号的傅里叶级数分解与综合的波形;
用MATLAB实现周期信号的单边频谱及双边频谱的波形与分析;
用MATLAB实现典型周期信号的频谱的波形。
关键词:
MATLAB;
图形处理;
傅里叶级数;
周期信号;
频谱
Abstract
MATLABnowevolvedintoMATLABlanguage,MATLABworkingenvironment,MATLABgraphicsprocessingsystems,MATLABmathlibraryandtheMATLABapplicationprograminterfacehasfivemajorcomponentsofthesetofnumericalcomputation,graphicsprocessing,programdevelopmentasonepowerfulsystem.Thecurriculumdesign,in-depthstudyFourierseriesanalysisofcontinuous-timesignalonthebasisoftheoreticalknowledge,usingMATLABapowerfulgraphicsprocessingcapabilities,symboliccomputingandnumericalcomputingcapabilities,throughthefunctionalsimulationMATLABgraphicalprogramminginordertoachievecontinuoustimeperiodicsignalfrequencydomainanalysisofthesimulationwaveforms,includingthefollowing:
realizationofperiodicsignalsusingMATLABFourierseriesdecompositionandintegrationofthewaveform;
periodicsignalsusingMATLABtoachieveunilateralandbilateralspectrumwaveformandspectrumanalysis;
usingMATLABtoachieveatypicalcycleofthesignalwavespectrum.
Keywords:
MATLAB;
graphicsprocessing;
Fourierseries;
periodicsignal;
Spectrum
绪论
在科学技术飞速发展的今天,计算机正扮演着愈来愈重要的角色。
在进行科学研究与工程应用的过程中,科技人员往往会遇到大量繁重的数学运算和数值分析,传统的高级语言Basic、Fortran及C语言等虽然能在一定程度上减轻计算量,但它们均要求应用人员具有较强的编程能力和对算法有深入的研究。
另外,在运用这些高级语言进行计算结果的可视化分析及图形处理方面,对非计算机专业的普通用户来说,仍存在着一定的难度。
MATLAB正是在这一应用要求背景下产生的数学类科技应用软件。
它具有的顶尖的数值计算功能、强大的图形可视化功能及简洁易学的“科学便捷式”工作环境和编程语言,从根本上满足了科技人员对工程数学计算的要求,并将科技人员从繁重的数学运算中解放出来,因而越来越受到广大科技工作者的普遍欢迎[1]。
MATLAB是matrix和laboratory前三个字母的缩写,意思是“矩阵实验室”,是MathWorks公司推出的数学类科技应用软件。
其Dos版本(MATLAB1.0)发行于1984年,现已推出了Windows版本(MATLAB5.3)。
经过十多年的不断发展与完善,MATLAB已发展成为由MATLAB语言、MATLAB工作环境、MATLAB图形处理系统、MATLAB数学函数库和MATLAB应用程序接口五大部分组成的集数值计算、图形处理、程序开发为一体的功能强大的系统。
MATLAB由“主包”和三十多个扩展功能和应用学科性的工具箱(Toolboxs)组成。
MATLAB语言是以矩阵计算为基础的程序设计语言,语法规则简单易学,用户不用花太多时间即可掌握其编程技巧。
其指令格式与教科书中的数学表达式非常相近,用MATLAB编写程序尤如在便笺上列写公式和求解,因而被称为“便笺式”的编程语言。
另外,MATLAB还具有功能丰富和完备的数学函数库及工具箱,大量繁杂的数学运算和分析可通过调用MATLAB函数直接求解,大大提高了编程效率,其程序编译和执行速度远远超过了传统的C和Fortran语言,因而用MATLAB编写程序,往往可以达到事半功倍的效果。
在图形处理方面,MATLAB可以给数据以二维、三维乃至四维的直观表现,并在图形色彩、视角、品性等方面具有较强的渲染和控制能力,使科技人员对大量原始数据的分析变得轻松和得心应手。
正是由于MATLAB在数值计算及符号计算等方面的强大功能,使MATLAB一路领先,成为数学类科技应用软件中的佼佼者。
目前,MATLAB已成为国际上公认的最优秀的科技应用软件。
MATLAB的上述特点,使它深受工程技术人员及科技专家的欢迎,并很快成为应用学科计算机辅助分析、设计、仿真、教学等领域不可缺少的基础软件。
1MATLAB内容简介
1.1MATLAB语言功能
MATLAB功能丰富,可扩展性强。
MATLAB软件包括基本部分和专业扩展两大部分的功能。
基本部分包括:
矩阵的运算和各种变换;
代数和超越方程的求解;
数据处理和傅立叶变换;
数值部分等等,可以充分满足大学理工科本科的计算需要。
扩展部分称为工具箱。
它实际上是用MATLAB的基本语句辩称的各种子程序集,用于解决某一方面的专门问题,或实现某一类的新算法。
MATLAB具有以下基本功能:
(1)数值计算功能;
(2)符号计算功能;
(3)图形处理及可视化功能;
(3)可视化建模及动态仿真功能。
1.2MATLAB语言特点
MATLAB给用户带来的是最直观、最简洁的程序开发环境。
它具有以下特点:
(1)语言简洁紧凑,使用方便灵活,库函数极其丰富。
MATLAB程序书写形式自由,利用起丰富的库函数避开繁杂的子程序编程任务,压缩了一切不必要的编程工作。
由于库函数都由本领域的专家编写,用户不必担心函数的可靠性。
(2)运算符丰富。
由于MATLAB是用C语言编写的,MATLAB提供了和C语言几乎一样多的运算符,灵活使用MATLAB的运算符将使程序变得极为简短。
(3)MATLAB既具有结构化的控制语句(如for循环,while循环,break语句和if语句),又有面向对象编程的特性。
(4)程序限制不严格,程序设计自由度大。
例如,在MATLAB里,用户无需对矩阵预定义就可使用。
(5)程序的可移植性很好,基本上不做修改就可以在各种型号的计算机和操作系统上运行。
(6)MATLAB的图形功能强大。
在FORTRAN和C语言里,绘图都很不容易,但在MATLAB里,数据的可视化非常简单。
MATLAB还具有较强的编辑图形界面的能力。
(7)功能强大的工具箱是MATLAB的另一特色。
MATLAB包含两个部分:
核心部分和各种可选的工具箱。
核心部分中有数百个核心内部函数。
其工具箱又分为两类:
功能性工具箱和学科性工具箱。
功能性工具箱主要用来扩充其符号计算功能,图示建模仿真功能,文字处理功能以及与硬件实时交互功能,而学科性工具箱是专业性比较强的,如control,toolbox,signlproceessing,toolbox,commumnicationtoolbox等。
2连续时间周期信号的傅里叶级数—CTFS
周期信号是定义在区间,按一定时间间隔(周期)不断重复的信号。
它可表示为,式中为任意整数,为周期,周期的倒数称为该信号的频率[2]。
2.1连续时间周期信号的分解
设有周期信号,它的周期为T,角频率,且满足狄里赫里条件,则该周期信号可以展开成傅里叶级数,即可表示为一系列不同频率的正弦或复指数信号之和。
傅里叶级数有三角形式和指数形式两种[2]。
2.1.1三角形式的傅里叶级数
三角形式的傅里叶级数为:
式中系数、称为傅里叶系数,可由下式求得。
如果将式中同频率的正弦和余弦分量合并,则三角形式的傅里叶级数可表示为:
上式中
由式可见;
傅里叶系数和都是或的函数,其中是或的偶函数,即有;
而是或的奇函数,即有。
由式可见,是或的偶函数,即有;
式表明,任何满足狄里赫里条件的周期信号可分解为一系列不同频率的余弦(或正弦)分量的叠加。
其中第一项是常数项,它是周期信号中所包含的直流分量;
第二项称为基波或一次谐波,它的角频率与原周期信号相同,是基波振幅,是基波初相角;
第三项称为二次谐波,它的频率是基波频率的二倍,是二次谐波振幅,是其初相角;
依此类推,还有三次、四次、…等谐波。
一般而言,称为次谐波,是次谐波振幅,是其初相角。
式表明,周期信号可以分解为各次谐波分量的叠加。
2.1.2指数形式的傅里叶级数
指数形式的傅里叶级数表达式为:
即周期信号可分解为一系列不同频率的虚指数信号之和,式中称为傅里叶复系数,可由下式求得:
2.2连续时间周期信号的傅里叶综合
任何满足狄里赫里条件的周期信号,可以表示成式或的和式形式,或式常称为CTFS综合公式。
一般来说,傅里叶级数系数有无限个非零值,即任何具有有限个间断点的周期信号都一定有一个无限项非零系数的傅里叶级数表示。
但对数值计算来说,这是无法实现的。
在实际的应用中,但我们可以用有限项的傅里叶级数求和来逼近。
即对有限项和
当值取得较大时,上式就是原周期信号的一个很好的近似。
式常称作的截断傅里叶级数表示。
MATLAB的符号积分函数可以帮助我们求出连续时间周期信号的截断傅里叶级数及傅里叶表示。
求积指令的具体使用格式如下:
给出符号表达式对指定变量的(不带积分常数的)不定积分。
给出符号表达式对指定变量的定积分。
3连续时间周期信号的频谱分析
如前所述,周期信号可以分解成一系列正弦(余弦)信号或虚指数信号之和,即
其中,
或幅度和相位
为了直观地表示出信号所含各分量的振幅或,随频率的变化情况,通常以角频率为横坐标,以各次谐波的振幅或虚指数函数的幅度为纵坐标,画出如图3.1和3.2所示的各谐波的振幅或与角频率的关系图,称为周期信号的幅度(振幅)频谱,简称幅度谱。
图中每条竖线代表该频率分量的幅度,称为谱线。
各谱线顶点连线的曲线(如图中原点所示)称为频谱包络线,它反映了各谐波分量幅度随频率变化的情况。
图3.1中幅度谱为单边幅度谱(用绘制的频谱)。
图3.2中幅度谱为双边幅度谱(用绘制的频谱)。
类似地,也可画出各谐波初相角与角频率的关系图,如图3.1和3.2中各谐波初相角与角频率的关系图,称为相位频谱,简称相位谱。
图3.1中相位谱为单边相位谱。
图3.2中相位谱为双边相位谱。
如果为实数,那么可用的正负来表示为0或也可把幅度谱和相位谱画在一张图上。
由图可见,周期信号的谱线只出现在频率为等原周期信号频率的整数倍的离散频率上,即周期信号的频谱是离散谱。
图3.1周期信号的幅度谱和相位谱(单边)
图3.2周期信号的幅度谱和相位谱(双边)
由此可见周期信号频谱具有三个特点:
(1)离散性,即谱线是离散的;
(2)谐波性,即谱线只出现在基波频率的整数倍上;
(3)收敛性,即谐波的幅度随谐波次数的增高而减小[3]。
MATLAB的符号积分函数、一维数组的寻访概念和可以帮助我们求出连续时间周期信号的频谱(傅里叶级数分析法)。
4周期信号的傅里叶级数分解与综合的仿真波形
MATLAB强大的符号运算功能为进行周期信号的分析提供了强有力的工具。
以周期矩形脉冲信号为例,采用三角形式傅里叶级数分解与综合形式,利用MATLAB来实现周期信号的分解与综合过程。
周期矩形脉冲信号如图4.1所示。
其幅度为1,脉冲宽度为1,周期。
用式求出傅里叶级数分解系数,运用MATLAB的符号运算功能,用式实现信号的综合,谐波的阶数Nf=6。
图4.1周期矩形脉冲信号
4.1实现流程
利用MATLAB实现上述分析过程的流程如下:
(1)编写子函数x=time_fun_x(t),用符号表达式表示出周期信号在第一个周期内的符号表达式,并赋值给返回符号变量x。
(2)编写子函数y=time_fun_e(t),求出该周期信号在绘图区间内的信号样值,并赋值给返回变量y。
(3)编写求解信号傅里叶系数及绘制合成波形图的通用函数CTFS1.m,该函数的流程如下:
①调用函数time_fun_x(t),获取周期信号的符号表达式。
②求出信号的傅里叶系数。
③求出各次谐波。
④绘制各次谐波叠加波形图。
⑤调用函数time_fun_e(t),绘制原信号波形图。
4.2MATLAB算法提示
(1)采用符号积分[4]求内时间函数的三角级数展开系数:
,,,即计算式。
(2)用循环语句求出三角级数展开系数,的数值:
分别为,。
(3)用语句输出三角级数展开系数,。
(4)用傅里叶三角级数展开式合成(综合)连续时间信号。
(5)化简表达式,据函数的奇偶性,可知,若为奇函数,则。
若为偶函数,则,以此化简三角级数展开式。
源程序见附录中程序一。
4.3程序运行结果
调用CTFS1.m函数文件,即可绘出周期矩形波信号各次谐波的合成波形。
指令如下:
在MATLAB命令窗口键入CTFS1,并回车,即可绘出周期矩形波信号各次谐波的合成波形,如图4.2所示。
图4.2周期矩形脉冲信号的合成
由图4.2可见,当它所包含的谐波分量越多时,合成波形愈接近于原来的矩形波脉冲(图中虚线)。
由图4.2还可以看到,合成波形所包含的谐波分量愈多时,除间断点附近外,它越接近于原矩形波脉冲。
在间断点附近,随着所含谐波次数的增加,合成波形的尖峰愈接近间断点,但尖峰幅度并未明显减少。
可以证明,即使合成波形所含谐波次数时,在间断点处仍有约9%的偏差,这种现象称为吉布斯(Gibbs)现象。
在傅里叶级数的项数取得很大时,间断点处尖峰下的面积非常小以致趋近于零,因而在均方的意义上合成波形同原波形的真值之间没有区别[4]。
5连续时间周期信号的频谱分析的仿真波形
由周期信号频谱分析只要求出了周期信号傅里叶级数(或)及,我们就可根据(或)及随频率的变化关系画出信号的振幅和相位频谱。
以图5.1所示的周期矩形脉冲信号为例,利用MATLAB绘制周期信号的频谱图,并对周期信号的频谱特性进行分析。
图5.1周期矩形脉冲信号
由于绘制频谱的前提是必须先求出周期信号的傅里叶系数,因此只需对求周期信号傅里叶级数的函数CTFS1.m进行适当修改,即可编写出绘制周期信号频谱的通用函数。
由于周期信号的频谱是离散的,故在绘制频谱时,采用stem命令而不是plot命令[3]。
5.1实现流程
采用三角形式傅里叶级数分解形式,用式求出傅里叶级数分解系数和,再用式求出傅里叶复指数系数,并画出的振幅和相位频谱。
谐波的阶数Nf可任意指定为60。
(1)编写子函数y=time_fun_s(t),用符号表达式表示出周期信号在第一个周期内的符号表达式,并赋值给返回符号变量y。
(2)编写子函数x=time_fun_e,求出该周期信号在绘图区间内的信号样值,并赋值给返回变量x。
(3)编写求解信号傅里叶复指数系数及绘制频谱图的通用函数,该函数的流程如下:
①调用函数time_fun_s(t),获取周期信号的符号表达式。
②求出信号的三角级数形式的傅里叶级数展开系数和。
③求出信号的复指数形式的傅里叶级数展开系数。
④绘制的振幅频谱图和相位频谱图。
⑤调用函数time_fun_e,绘制信号波形图。
5.2MATLAB算法提示
(1)采用符号积分求内时间函数的三角级数展开系数:
,,。
即计算式。
(2)用循环语句求出三角级数展开系数,的数值:
并赋值给变量,,如图5.2所示。
图5.2三角级数展开系数,频谱(n=k+1:
Nf)
(3)从三角级数展开系数,得到复指数展开系数为了得到复指数展开系数必须先求出三角形式的傅里叶级数展开系数和,如图5.2所示,再据式求出。
但要注意、和的自变量取值情况,即:
从上式的自变量取值情况及图5.2可见,三角级数展开系数,的变量的取值范围为,而指数形式展开系数的变量的取值范围为,为了从和得到,需要用到MATLAB的反折函数fliplr来实现频谱的反折。
双边、单边(幅度,相位)频谱分析源程序见附录程序二。
5.3程序运行结果及分析
5.3.1程序运行结果
调用CTFS2.m函数文件,即可绘出周期矩形波信号的频谱。
在MATLAB命令窗口键入CTFS2,并回车,命令窗口将出现:
pleasInput所需展开的最高谐波次数Nf=?
,输入Nf=60然后命令窗口将出现:
pleasInput信号的周期T=?
,输入周期T=5,然后命令窗口又出现:
周期与脉冲宽度之比M=?
,输入M=5,即可绘出周期矩形波信号的双边频谱,如图5.3所示。
修改绘制周期矩形脉冲双边频谱的函数文件CTFS2.m,将其改为绘制周期矩形脉冲单边频谱的函数文件CTFS21.m,则可绘出单边频谱如图5.4所示。
图5.3周期T=5,脉宽tao=1的矩形脉冲及双边频谱图
图5.4周期T=5,脉宽tao=1的矩形脉冲及单边频谱图
由图5.3和5.4可见,周期矩形脉冲的频谱具有一般周期信号频谱的共同特点,即它们的频谱都是离散的。
仅含有的各分量,其相邻两谱线的间隔是,同时单边谱仅为双边谱的一半波形。
5.3.2脉冲宽度与频谱的关系
重复调用周期矩形脉冲单边频谱的函数文件,当窗口出现输入信号谐波次数Nf,周期T,周期与脉冲宽度之比M时,分别将信号设置为表5-1所示三种情况,则可绘出表5-1所示各情况的信号波形及频谱图,如图5.5所示。
表5-1周期矩形脉冲脉宽取值参数表
周期T
5
脉冲宽度tao
被展开函数的时间区间的左端a=tao/2
0.625
0.3125
0.15625
a周期T=5,脉冲宽度tao=T/4=1.25,a=tao/2=0.625的矩形脉冲频谱
b周期T=5,脉冲宽度tao=T/8=0.625,a=tao/2=0.3125的矩形脉冲频谱
c周期T=5,脉冲宽度tao=T/16=0.3125,a=tao/2=0.15625的矩形脉冲频谱
图5.5脉冲宽度与频谱的关系
由图5.5可见,由于周期T相同,因而相邻谱线的间隔相同;
脉冲宽度tao愈窄,其频谱包络线第一个零点的频率愈高,即信号带宽愈宽,频带内所含的分量愈多。
可见,信号的频带宽度与脉冲宽度tao成反比[2]。
5.3.3脉冲周期与频谱的关系
重复调用绘制周期矩形脉冲单边频谱