MATLAB实验教程_第1页
MATLAB实验教程_第2页
MATLAB实验教程_第3页
MATLAB实验教程_第4页
MATLAB实验教程_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验一MATLAB基本操作和绘图1.1实验目的1.熟悉MATLAB编程环境;2.学习MATLAB的基本使用方法;3.熟悉plot和stem等绘图函数的用法。1.2实验原理1.2.1MATLAB简介MATLAB是matrixlaboratory的缩写,是Mathworks公司开发的一款商业软件。它是一种用于数值计算、算法开发、数据分析和可视化的高级编程语言和编程环境。除向量和矩阵运算、绘制函数/数据图像等基本功能外,MATLAB还可用来创建图形用户界面(GUI),并可与其他高级语言(如C、C+和FORTRAN等)进行混合编程。MATLAB附带众多的工具箱(工具箱是特定领域的一些专用函数的集合),

2、适用于诸如信号和图像处理、通信、金融建模和分析等各种不同的领域。除了进行数值计算,MATLAB也提供了一个符号运算工具箱,因此也可进行符号运算。另外MATLAB带有一个软件包Simulink,提供了可视化开发环境,可用于动态系统模拟仿真和嵌入式系统开发等方面。经过近30年的发展,MATLAB已广泛用于学术研究和工程开发中。作为一种以矩阵和向量运算为基础的交互式编程语言,MATLAB特别适用于各种系统的分析和模拟,已成为线性代数、自动控制、数字信号处理、动态系统仿真等的基本工具。MATLAB是一个很容易学习和使用的工具。通过使用MATLAB,可使我们将精力集中在学习信号和系统的新的和难的概念上,

3、而不是编程上。下面仅侧重于信号与系统实验中将要使用到的相关功能,对MATLAB作一个简短的介绍。更详尽的介绍和帮助,可参阅MATLAB的在线帮助和相关书籍。1.2.2MATLAB的工作环境目前MATLAB的最新版本是2013年2月推出的R2013a(版本8.01),启动后的用户界面如图1.1所示。从版本8开始,MATLAB采用了全新的RibbonUI(一种以面板和标签页为主的用户界面,不同于以往以菜单和工具栏为基础的UI),使用上更为简便,但图中所示的界面与旧版本的有所不同。虽然不同版本的用户界面有所不同,但是在使用上是基本相同的。图1.1中左边当前文件夹(CurrentFolder)窗口显示

4、的是当前文件夹中的文件;中间是命令行窗口(CommandWindow),在“>>”提示符后输入命令,MATLAB便会执行相应的操作;右上工作区(Workspace)窗口显示的是MATLAB命令和程序生成的变量名及其数值;右下是CommandHistory窗口显示输入命令的历史记录。所有这些窗口都可改变大小、浮动、关闭及重新打开。如图1.1所示,在命令行窗口中输入一条命令(或称为一条语句),按Enter键,该命令会被立即执行并显示结果,如果希望命令行窗口不显示结果,只需在命令后面添加分号“;”。如果需要执行多个命令构成的程序(或称为脚本script)并将其保存为文件,则需要用到文本编

5、辑器。点击工具栏的“Newscript”图标,或在“File”菜单下选择“NewScript”,将打开如图1.2所示的MATLAB的编辑器,显示一个空白的文档,编辑并保存该文档即可执行脚本。通过编辑器的菜单项和工具栏也可以执行和调试程序。MATLAB编辑器建立的文件的扩展名默认为.m。图1.2MATLAB的编辑/调试器如要新建一个可被其他程序调用的函数,可在“File”菜单下选择“NewFunction”,编辑器将生成如下所示自定义函数的框架:其中第一行是函数声明行,function是MATLAB关键字,input_args是输入变量,output_args是输出变量,函数必须以end结尾。将

6、其保存为.m文件,即可在其他程序中以文件名(注意不是函数名,文件名和函数名可以不同)调用该函数。在命令行窗口中,还可以输入若干文件管理功能的命令,如“cd”或“chdir”可以改变当前工作文件夹,“dir”、“mkdir”和“rmdir”可分别显示、新建和删除文件夹,“delete”可用来删除文件等。如果要新建或打开某个.m文件,也可以在命令窗口输入“edittest.m或“opentest.m”(其中.m可省略)来打开编辑器,MATLAB将在当前文件夹和搜索路径中搜索test.m,若找到test.m则将打开该文件,反之则会提示是否创建新文件。如果要运行test.m,只需在命令行窗口直接输入t

7、est即可。如果test.m是存放于当前文件夹或搜索路径的函数文件,则可以直接在命令行窗口或其他程序中调用。 MATLAB提供了很多演示程序供使用者参考学习。在命令行窗口中输入“demo”,将出现一系列的演示,为使用者提供了一个很好的学习的辅助手段。同时,MATLAB提供了详尽的在线帮助系统,在命令窗口中输入“help函数名”可显示函数的摘要和详细的解释,而输入“doc函数名”可打开相关的联机帮助,其中不仅有函数的解释,还有函数使用的实例供使用者参考。1.2.3当前文件夹和搜索路径 MATLAB及其工具箱提供的函数往往以.m文件的形式安装在MATLAB的各个子文件夹中,另外用户自定义的函数和脚

8、本文件也不一定存放于当前文件夹中,因此通常在使用调用或执行这些文件之前需要确认或设置.m文件的搜索路径,告诉MATLAB在哪里搜索.m文件。这一步骤可通过“File”菜单下选择“SetPath”实现,如图1.3如果在命令窗口输入字符串test,MATLAB将试图按照以下的顺序去解释和执行它: (1)搜索test是否是已定义的变量; (2)搜索test是否是MATLAB内置的固有函数;(3)在当前文件夹中搜索是否有test.m文件; (4)在“SetPath”给定的所有文件夹中搜索是否有test.m文件。1.2.4变量和.m文件的命名规则在MATLAB中变量和.m文件有相同的命名规则:区分大小写

9、,第一个字符必须为英文字符(不能为数字开头),不能超过31个字符,其他字符可以为英文字符、数字和下划线_,除此之外不能包含其他字符。变量和.m文件的名字不能重名。同时应尽量避免和MATLAB预定义的变量(如pi,eps,ans,Inf,虚数单位i或j等)以及函数(如sin,cos,exp,log等)重名,否则可能会导致预期之外的结果。1.2.5基本运算和函数使用MATLAB最大的好处是以往复杂的数学运算和编程可变得相对简单。它缺省的数据格式为双精度浮点数的矩阵或数组,并且可以直接处理复数,同时会自动管理执行过程中变量使用内存的分配和回收,不需要额外的处理和编程,因此给各种数学运算,特别是向量与

10、矩阵的运算带来极大的方便。例如要计算一个表达式的值,只需在提示符后直接输入,按回车键即可:>>5*sin(pi/6)*exp(-1+i)ans=0.4969+0.7739iMATLAB会自动将计算结果赋给变量ans并立即显示计算结果。当然,也可将结果赋予任意一变量。若希望MATLAB不立即显示结果,只需在命令后加分号(;)即可。例如>>y=5*sin(pi/6)*exp(-1+i);>>z=real(y) %显示结果的实部z=0.4969MATLAB的数学计算是基于向量和矩阵运算的,这给编程带来了极大的方便。例如以下的语句可直接定义向量并对其进行计算:>

11、;>x=2357; %定义行向量x>>y=2*x+1 %定义行向量yy=5 7 11 15MATLAB会忽略所有百分比符号(%)之后的文字,即%之后的文字为注释。可以方便地更改、增加或删除向量的元素,如>>y(3)=y(3)-5%更改第3个元素y=5 7 6 15>>y(7)=y(3)%加入第7个元素y=5 7 6 15 0 0 6>>y(4:6)=%删除第4个至第6个元素y=5 7 6 6>>y(3:5)=123%给第3个至第5个元素重新赋值y=5 7 1 2 3 >>z=y'%行向量y转置,得到列向量zz

12、=57123输入矩阵只需在每一列结尾加上分号(;),如:>>A=1 2 3 4;5 6 7 8;9 10 11 12A=1 2 3 45 6 7 89 10 11 12同样地,我们可以对矩阵进行各种处理:>>A(2,2:3)=0 0A=1 2 3 45 0 0 89 10 11 12>>B=A'B=1 5 92 0 103 0 114 8 12>>A=AB(2:4,)A=1 2 3 45 0 0 89 10 11 12>>A=AB(2:4,1:3)A=1 2 3 4 2 0 105 0 0 8 3 0 119 10 11 12

13、 4 8 12表1.1列出了常用的运算和函数。MATLAB提供了丰富内置函数,且这些函数的输入变量通常可以是向量、矩阵或数组,例如>>sin(0pi/3pi/6pi/2)ans=0 0.8660 0.5000 1.0000这些运算和函数的功能和使用方法可查阅MATLAB的联机帮助,或相关的参考书。1.2.6MATLAB流程控制语句和其他高级编程语言类似,MATLAB提供了流程控制语句,用于控制程序执行的流程,其中比较常用的有:if/else if/else, switch/case/ otherwise, while,for, end,break,continue,return等等

14、。这里仅列举其中几条的语法,具体的用法可在以后的实验中学习,或参考MATLAB的在线文档。1.if/elseif/else语句的语法:If expressionStatementsElse if expressionStatementselsestatementsend2.switch/case/otherwise语句的语法: switchswitch_expression%switch_expression为标量或字符串case case_expression statementscase case_expression statements:otherwise statements end

15、 3.while语句的语法: While expression Statementsend 4.for语句的语法:for index=initval:step:endval statementsend1.2.7MATLAB的绘图函数MATLAM提供了丰富的绘图函数可将数据绘制成各种图形,如曲线、直方图、极坐标图、等位线图、向量场图等。在信号与系统实验中最常用的是plot函数和stem函数。plot函数是绘制二维曲线的函数。只需定义曲线上每一点的坐标,即可通过plot画出曲线,例如:其中第1行使用linspace函数产生0到4之间的线性分布的300个元素的行向量,相当于程序执行后会生成一个名为“

16、Figure1”的新窗口,如图1.4所示。图1.4正弦曲线如果要在同一图中画出多条曲线,只需将坐标依次放入plot函数即可,并且可以改变每条曲线的颜色、线型等,如我们还可以给坐标轴加上标注,给曲线加上图注,给图加上标题,如最后,还可设定合适的坐标轴范围,如即可得到图1.5所示的图形。当然,这些作图参数也可以通过Figure窗口的菜单和工具栏进行添加和修改。如果要在一个绘图窗口中绘制多个图形,可以使用subplot(m,n,p)命令,其中参数m和n给定在一个窗口中显示m行n列个图形,p表示选定第p个图形区域,即在第p个区域作图。例如以下的程序可生成如图1.6所示的图形:图1.5改变曲线线形和作图

17、参数第8行中的awgn函数是MATLAB提供的给信号添加高斯白噪声的函数,在信号处理中可用来模拟有噪声的信号。第10行和第12行中的'interpreter','latex'的作用是使title函数以LaTeX命令的格式输出文本,用来显示比较复杂的数学公式。LaTeX是一种基于编程语言和宏命令的电子排版系统,多用于科学论文的排版。像这些MATLAB函数的功能和用法,一方面可参阅在线文档和相关资料,另一方面,也需要大家在使用过程中慢慢摸索并不断积累经验。连续时间信号必须离散化,即按一定的时间间隔T逐点抽取信号的瞬时值形成离散信号序列,才能以数字的形式将其(近似地)

18、表示出来。而离散时间信号在时间自变量上是离散的,可以直接在MATLAB中以向量的形式表示和运算。在图形表示上,可用stem函数画出杆状图来显示离散时间信号。例如以下的程序画出了单位冲激函数和阶跃函数。 生成的图形如图1.7所示。其中冲激序列和阶跃序列也可以借助Matlab中的zeros和ones函数产生,如:或者,也可以用Matlab提供的stepfun以及来产生:图1.7离散时间单位冲激信号和阶跃信号上面的例子可以看出,要实现同样的目的,方法是多样的。通过MATLAB作图我们可以得到相当专业的图形输出。在生成满意的图形后,可通过图形窗口的文件菜单,保存所生成的图形,或者将图形导出为其他图形文

19、件格式,如位图文件BMP、JPEG、TIFF,或者(更好的)矢量图形文件EPS、PDF等,以供其他程序使用。1.3实验内容1.熟悉MATLAB软件的使用环境,掌握在MATLAB环境中输入、保存、运行和调试程序的过程。为了熟悉这些过程,请完成以下的实验:(a)在命令行窗口分别生成两个长度为3和4的随机个位整数向量,求它们的卷积和。两个长度分别为m和n的序列的卷积和的长度是多少?(提示:随机行向量可用rand函数产生,取整可用fix或floor函数,卷积和可用conv函数。)(b)在编辑器中将上面的程序保存为.m脚本文件。在命令行窗口运行该脚本,输出卷积和的结果。(c)试编写一个简单的函数函数不仅

20、输出两个输入向量的卷积和,还输出卷积和的长度。然后,调用这个函数重新计算(a)中两个随机向量的卷积和。(提示:向量长度可用length函数。)2.MATLAB的线性代数计算能力非常强大。请编写一个MATLAB脚本计算一个线性方程组3y+3z=42x+3yz=154x3yz=19的解。请估计一下如用C语言解决此问题的代码量,作一个直观的比较。(提示:可以直接用MATLAB运算符,即x=Ab来计算Ax=b的解。MATLAB有自己专门的算法计算线性方程组的解。对于上面的问题,也可以通过x=inv(A)*b来求得结果。这两种方法有何不同?)3.抽样函数sinc(t)=sint/t是信号与系统中常用的函

21、数。MATLAB的SignalProcessingToolbox提供了sinc函数计算抽样函数的值。(a)在命令行窗口分别输入"help sinc"、"doc sinc"以及"edit sinc",查看命令执行后的结果;(提示:通过这些方式可获得MATLAB函数的在线帮助、联机文档和源代码。)(b)分别取两个不同的间隔步长(如0.5和0.05,或者不同的坐标点数,如20点和200点),用plot函数画出sinc函数的波形。要求用subplot将结果画在同一个绘图窗口中以便比较,并设定合适的坐标轴范围,同时添加坐标轴标注。4.复指数信号Aest是时间t的复函数。MATLAB可以直接进行复数运算,但在显示信号时通常需要用模和相角、或者用实部和虚部来表示:(a)MATLAB的函数功能十分方便灵活,通过编程一个函数甚至可以方便地根据输入、输出参量个数的不同实现不同的功能。试编写一个函数myexp.m,当直接用myexp(t,-0.2,5,1)调用时(不指定输出变量)会画出如图1.8所

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论