第2章MATLAB程序设计.ppt

上传人:李司机 文档编号:4101649 上传时间:2023-04-04 格式:PPT 页数:31 大小:416KB
返回 下载 相关 举报
第2章MATLAB程序设计.ppt_第1页
第1页 / 共31页
第2章MATLAB程序设计.ppt_第2页
第2页 / 共31页
第2章MATLAB程序设计.ppt_第3页
第3页 / 共31页
第2章MATLAB程序设计.ppt_第4页
第4页 / 共31页
第2章MATLAB程序设计.ppt_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《第2章MATLAB程序设计.ppt》由会员分享,可在线阅读,更多相关《第2章MATLAB程序设计.ppt(31页珍藏版)》请在三一办公上搜索。

1、第2章 MATLAB程序设计,本章要点 M文件的建立与调试方法 M文件的程序流程语句 函数文件的建立与调用 应用程序设计教学时数 2学时,2.1 M文件,一、M文件的建立 M文件是由命令或函数构成的文本文件,可以用任何文本编辑程序来建立和编辑,一般常用且最为方便的是使用MATLAB提供的文本编辑器。M文件有命令文件(也称主程序文件)和函数文件两种,命令文件可包含多个函数文件。1打开文本编辑器打开MATLAB文本编辑器有以下三种方法:1)菜单操作:单击操作桌面的File菜单,再单击NewM-file命令;2)命令操作:在命令窗口输入命令edit,单击Enter键;3)命令按钮操作:单击操作桌面工

2、具栏上的新建文件按钮。,2建立新的M文件 在文本编辑器的文档窗口输入文件内容,输入完毕后,选择文本编辑器窗口File菜单的Save或Save As命令存盘,默认名字是Untitled。注意,M文件存放位置一般是MATLAB缺省的用户工作目录,如果要选择别的目录,则应该将该目录设定为当前目录或将其加到搜索路径中,以便于文件查找。3运行M文件 输入文件内容并检查后,单击F5或文本编辑器的Debug Save and Run,在出现的Save file as对话框中,输入文件名myfile.m(以上例为例),单击“保存”,M文件自动存盘后运行。,4打开已有的M文件 打开已有的M文件,也有三种方法:1

3、)菜单操作:单击操作桌面或文本编辑器的File Open选项,则打开Open或Open File窗口,再选择要打开的文件;2)命令操作:在命令窗口输入命令edit,回车后则打开指定的M文件。如果文件不在当前路径下,还需在文件名前加上路径。例如打开上例的文件,可在命令窗口的提示符后输入edit myfile.m;3)命令按钮操作:单击操作桌面工具栏上的打开文件按钮,则打开Open或Open File窗口,再选择要打开的文件。,二、M文件的调试,1直接调试法1)如果在错误信息中指出了出错的行号,可先根据错误信息检查该语句是否存在语法错误或运行中变量尺寸不一致等情况。2)检查所调用函数或命令的拼写是

4、否正确,括号(包括方括号和圆括号)是否配对,各种流程控制语句是否匹配(如for与end、while与end、switch与end等)。3)检查所调用的函数或载入的数据文件是否在当前目录或搜索路径上。4)将重点怀疑的命令行后的分号删除,使得计算结果能够实时地显示在屏幕上,作为查错的依据,根据显示的结果判断问题的所在。5)如果怀疑某个函数文件有问题,可以在该函数文件的函数定义行前加“%”,使其函数体成为命令文件(因为命令文件中的变量存储在工作空间中,可以在工作空间窗口和数组编辑器观察修改),调好后再改回函数文件。,2文本编辑器的编辑功能,(1)Go To.当选定Go To.选项时,弹出如图2-2所

5、示的对话框,输入行号单击【OK】后,光标自动移到指定的行上,并将该行作为当前行。(2)Set/Clear Bookmark 该选项为“设置或清除书签”。,3文本编辑器的调试功能,(1)设置断点 设置断点是高级语言中程序调试的重要手段之一,断点是在程序特定位置设置的中断点,当程序运行至断点处时会暂停运行,此时可通过检查相关变量的内容等方法确定程序的运行是否正确。图中的红色菱形点即为设置的断点。,(2)Debug菜单1)Step:单步执行。每单击一次,程序运行一次,但不进入函数。2)Step in:单步运行。遇到函数时进入函数内,仍单步运行。3)Step out:停止单步运行。如果是在函数中,跳出

6、函数;如果不在函数中,直接运行到下一个断点处。4)Save and Run:存储文件并从第1行开始执行程序,当遇到第1个断点时暂停运行,并变为Continue;单击F5或【Continue】则继续运行。5)Go Until Cursor:从当前位置运行到光标所在的位置。,2.2 程序流程语句,一、if语句 1单分支if语句 最简单的选择结构语句,其基本格式为:if 表达式 语句组 end 说明:表达式多为关系或逻辑表达式。如果表达式为真(非零),就执行if和end之间的语句组,然后再执行end之后的语句;如果表达式为假(零),就直接执行end之后的语句。,2双分支if语句 前面提供的单分支if

7、语句只能处理较简单的条件,功能不全面。为此MATLAB还提供了双分支if语句结构。其基本格式为:if 表达式语句组else语句组end 说明:如果表达式为真(非零),则执行语句组1,再执行end后面的语句;如果表达式假(为零),则先执行语句组2,再执行end后面的语句。,3多分支if语句 当有三个或更多的选择时,可采用if语句的嵌套,也可以采用多分支if语句。其基本格式为:if 表达式 语句组 elseif 表达式 语句组 elseif 表达式n 语句组n else 语句组n+1 end,说明:先判断表达式1的值,若为真,则执行语句组1,执行完语句组1后,跳出该选择结构,继续执行end 后的语

8、句;当表达式1的值为假时,跳过语句组1,进而判断表达式2,若为真,则执行语句组2,然后继续执行end 后的语句;如果表达式2的值也为假,则跳过语句组2,继续判断表达式3,如此下去,若所有表达式都为假,则执行else后的语句组n+1,再执行end 后的语句。else语句 可以缺省。,二、switch语句,switch语句是多分支选择语句。if语句只有两个分支可供选择,如果分支较多,则嵌套的if语句层数多,程序冗长而且可读性降低。switch语句的基本格式为:switch 表达式case 数组语句组case数组2语句组 case 数组n 语句组n otherwise 语句组n+1 end 说明:先

9、计算表达式的值,再按顺序与case语句后面的数组值进行比较,如果相等则执行该组语句,然后执行end后的语句,不再继续比较。当表达式的值不等于任何一个case语句后面的数组值时,程序将执行otherwise语句后 的语句组,再执行 end后的语句。注意:这种情况下缺省otherwise 语句,程序会提示出错。,【例】已知学生的名字和百分制分数。要求根据学生的百分制分数,分别采用“满分”、“优秀”、“良好”、“及格”和“不及格”等表示学生的学习成绩。,clearfor k=1:10a(k)=89+k;b(k)=79+k;c(k)=69+k;d(k)=59+k;endc=d,c;A=cell(3,5

10、);A(1,:)=Jack,Marry,Peter,Rose,Tom;A(2,:)=72,83,56,94,100;for k=1:5 switch A2,k case 100 r=满分;case a r=优秀;case b r=良好;case c r=及格;otherwise r=不及格;endA(3,k)=r;endAA=Jack Marry Peter Rose Tom 72 83 56 94 100 及格 良好 不及格 优秀 满分,三、while语句,while语句是条件循环语句,在条件(多为关系表达式)控制下重复执行,直到条件不成立为止。while循环的一般形式是:while 表达式

11、 语句体end 说明:先计算表达式的值,如果非零,语句体就执行一次;执行完毕再次计算表达式的值,如果仍然非零,语句体就再执行一次;如此循环,直到表达式的值为零。如果表达式的值总是非零,该循环将无休止地进行(即死循环),程序设计时一定要避免。,【例】求1+2+3+100的和,clearclck=0;s=0;while k=100 s=s+k;k=k+1;endss=5050,四、for语句,for语句为计数循环语句,在许多情况下,循环条件是有规律变化的,通常把循环条件初值、终值和变化步长放在循环语句的开头,这种形式就是for语句的循环结构。for循环的一般形式是:for 循环变量名=表达式1:表

12、达式2:表达式3 语句体end 说明:其中表达式1的值是循环变量的初值,表达式2的值是循环步长,表达式3的值是循环变量的终值。初值、步长和终值可以取整数、小数、正数和负数,步长可以缺省,缺省值为1。,【例】求1+2+3+100的和,clearclcs=0;for k=1:100 s=s+k;endss=5050,2.2.5 循环的嵌套,如果一个循环结构的循环体又包括一个循环结构就称为循环的嵌套,或称为多重循环。任一种循环语句的循环体部分都可以包含另一个循环语句,多重循环嵌套的层数可以是任意的。习惯上按照嵌套层数,分别叫做二重循环、三重循环等。处于内部的循环叫做内循环,处于外部的循环叫做外循环。

13、在设计多重循环时,要特别注意内、外循环之间的关系,以及语句放置次序,不要搞错。,【例】有一数列:11+12+13+110+21+22+23+210+31+32+33+310,求这些项的和,clearclcs=0;for k=1:3%外层循环,分别产生1,2,3 for m=1:10%内层循环,分别产生110 s=s+km;%求和 endends%输出结果s=90628,六、其他语句,1continue语句 continue语句用于控制for循环或while循环跳过某些执行语句,当出现continue语句时,则跳过循环体中所有剩余的语句,继续下一次循环,即结束本次循环。2break语句 brea

14、k语句用于终止for循环和while循环的执行。当遇到break语句时,则退出循环体,继续执行循环体外的下一个语句,即中止循环。在嵌套循环中,break往往存在于内层的循环中。3try语句 MATLAB从5.2版开始提供了try语句,这是一种试探性执行语句。语句格式为:try 语句组1 catch 语句组2 end 说明:先试探性执行语句组1,如果语句组1在执行过程中出现错误,则将错误信息赋给保留的lasterr变量,并转去执行语句组2。这种 试探性执行语句是其他高级语言所没有的。,【例】矩阵乘法运算要求两矩阵的维数相容,否则会出错。先求两矩阵的乘积,若出错,则自动转去求两矩阵的点乘(数组乘法

15、)。,clearclcA=1,2,3;4,5,6;%矩阵A为23B=7,8,9;10,11,12%矩阵B为23 try C=A*B;%矩阵乘法 catch C=A.*B;%数组乘法endlasterr%显示出错原因C%输出结果ans=Error using=*Inner matrix dimensions must agree.C=7 16 27 40 55 72,2.3 函数文件,一、基本结构 函数文件由function关键字引导,其基本结构为:function 输出形参表函数名(输入形参表)注释说明部分 函数体语句return 说明:以function开头的一行为引导行,表示该文件是一个函

16、数文件。函数名的命名规则与变量名相同。输入形参表是函数的输入参数,可以有多个,用“逗号”来分隔;输出形参表为函数的输出参数,当输出形参只有一个时,直接输入变量名而不用方括号,多个输出形参用“逗号”来分隔。注意:函数文件编辑结束后,不能像M文件那样单击F5或单击Debug Save and Run选项运行,而是要直接存盘。,(1)函数文件名 函数文件名通常由函数名再加上扩展名.m组成,不过函数文件名与函数名也可以不相同。(2)注释说明 注释说明包括以下三部分内容:1)紧随函数文件定义行之后,以开头的第一行。这一行一般包括大写的函数文件名和函数功能的简要描述,供lookfor关键词查询和help在

17、线帮助用。2)第一行之后连续的注释行。通常包括函数输入、输出参数的含义及调用格式说明等信息,构成全部在线帮助文本。3)与在线帮助文本相隔一个空行的注释行。包括函数文件编写和修改的信息,如作者、修改日期、版本等内容,用于软件档案管理。(3)return语句 如果在函数文件中插入了return语句,则执行到该语句就结束函数的执行,程序流程转到调用该函数的位置。,二、函数调用,函数文件编制好后,就可以调用函数进行计算了。函数调用的一般格式为:输出实参表函数名(输入实参表)需要注意的是,函数调用时各实参出现的顺序、个数,应与函数定义时形参的顺序、个数一致,否则会出错。函数调用时,先将实参传递给相应的形

18、参,从而实现参数传递,然后再执行函数的功能。三、参数的可调性 MATLAB在函数调用上有一个与一般高级语言不同之处,就是函数所传递参数数目的可调性。凭借这一点,一个函数可完成多种功能。在调用函数时,MATLAB用两个永久变量nargin和nargout分别记录调用函数时的输入实参和输出实参的个数。只要在函数文件中包含这两个变量,就可以准确地知道该函数文件被调用时的输入输出参数个数,从而决定函数如何进行处理。,【例】编写一个函数,使其能够产生如下的分段函数,并求当x=0.75和x=2.5时的函数值:,先建立函数文件:function g=ff(x)if x=0end,保存后,在命令窗口输入:x=

19、0.75;ff(x)x=2.5;ff(x),四、全局变量,全局变量的作用域是整个MATLAB工作空间,即全程有效,所有的函数都可以对其进行存取和修改,因此定义全局变量是函数间传递信息的一种手段。在函数文件里,全局变量的定义语句应放在变量使用之前,为了便于了解所有的全局变量,一般把全局变量的定义语句放在文件的前部。定义全局变量的方法是使用global函数,格式为:global 变量名 全局变量名多用大写字母,并有选择地以首次出现的M文件的名字开头,这样,可把多个全局变量之间不必要的互作用减至最小。,2.4 编程技巧,一、测定程序执行时间 测定程序执行时间通常是使用tic和toc函数,tic用于启

20、动秒表,toc用于停止秒表。【例】建立一个100100的魔方矩阵,并测定运行时间。clearclctic%开始计时A=magic(100);%运行程序,magic为魔方矩阵函数toc%结束计时,并显示所耗时间在命令窗口观察运行结果为:Elapsed time is 0.006427 seconds.,二、程序的优化,(1)避免使用循环(2)对大型矩阵预先定义维数(3)优先使用内层函数(4)考虑接口语言,上机内容(1),1、gcd函数用于求两个整数的最大公约数。先用help命令查看该函数的用法,然后利用该函数求15和35的最大公约数。2、已知矩阵 求下列表达式:(1)A+5*B和A-B(2)A*B和A.*B(3)A/B和BA(4)A3和A.3(5)A,B3、分别用for和while循环结构编写程序,计算下式的值:4、求下面分数序列前20项之和:,上机内容(2),5、创建一个43阶的服从0-1均匀分布的随机矩阵A,求出A中各行的平均值B(列向量),将B补在A的右方构成44阶的矩阵C,并提取C的下三角矩阵。6、根据麦克劳林公式可以得到:e1+1+1/2!+1/3!+1/n!,编写一段程序,求当n=10时e的近似值。7、编写一个函数,使其能够产生如下的分段函数:,并求当x=3和x=-0.5时的值。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号