MATLAB实用教程 教学课件 ppt 作者 张磊 毕靖 郭莲英 第四章

上传人:E**** 文档编号:89400643 上传时间:2019-05-24 格式:PPT 页数:133 大小:2.21MB
返回 下载 相关 举报
MATLAB实用教程 教学课件 ppt 作者  张磊 毕靖 郭莲英 第四章_第1页
第1页 / 共133页
MATLAB实用教程 教学课件 ppt 作者  张磊 毕靖 郭莲英 第四章_第2页
第2页 / 共133页
MATLAB实用教程 教学课件 ppt 作者  张磊 毕靖 郭莲英 第四章_第3页
第3页 / 共133页
MATLAB实用教程 教学课件 ppt 作者  张磊 毕靖 郭莲英 第四章_第4页
第4页 / 共133页
MATLAB实用教程 教学课件 ppt 作者  张磊 毕靖 郭莲英 第四章_第5页
第5页 / 共133页
点击查看更多>>
资源描述

《MATLAB实用教程 教学课件 ppt 作者 张磊 毕靖 郭莲英 第四章》由会员分享,可在线阅读,更多相关《MATLAB实用教程 教学课件 ppt 作者 张磊 毕靖 郭莲英 第四章(133页珍藏版)》请在金锄头文库上搜索。

1、第四章 基本编程,MATLAB提供丰富的函数库,并可以进行程序设计,编写扩展名为.m的M文件,实现各种程序设计功能。 MATLAB提供大量的函数,包括内建函数和自带函数。用户也可以利用M文件来创建函数、函数库和脚本。,目录,4.1 M文件基础 4.2 变量和语句 4.3 程 序 调 试 4.4 函数设计和实现 习 题,当需要创建一个M文件时,可以通过【File】|【New】|【M-File】菜单进入文本编辑器界面。 当需要打开一个M文件时,可以通过【File】|【Open】菜单进入文件选择的目录界面。 本章将着重介绍M文件编程的规则和注意事项。,4.1 M文件基础,4.1.1 函数 4.1.2

2、 脚本 4.1.3 子函数与私有函数 4.1.4 伪代码,M文件有函数(Functions)和脚本(Scripts)两种格式。 M文件可以在任意的文本编辑器中进行创建和编辑,但推荐和默认使用MATLAB自带的文本编辑器和Notebook。,4.1.1 函数,MATLAB中许多常用的函数都是函数式M文件。 函数被调用时,通过获取外部参数进行运算,并向外部返回运算结果。 函数内部的变量都是隐含的,存放在函数本身的工作空间内。,4.1.2 脚本,脚本也是扩展名为.m的文件,可包含MATLAB的各种命令。在命令窗口中直接键入此文件的文件名,MATLAB可逐一执行文件内的所有命令。,将脚本所在目录设置为

3、当前工作目录,并在文本编辑器中打开脚本后,可通过如下方法运行脚本: 单击【Debug】菜单下的【Run】; 单击快捷键F5;单击工具条上的图标 。 脚本运行过程所产生的变量都是全局变量,都驻留在MATLAB工作空间内。,结合上例,对函数和脚本进行总结如下。 (1)函数名必须与文件名相同。 (2)脚本没有输入参数和返回值。 (3)函数可以包括零个或多个输入参数和返 回值,如函数nargin和nargout包含输 入参数和返回值的个数。,(4)函数被调用时,MATLAB会为它开辟一 函数工作空间(Function workspace),用来存放中间变量, 当执行完函数文件的最后一条命令或 者遇到r

4、eturn命令时就结束该函数的 运行,返回函数的输出,同时将临时 工作空间清空。,(5)在M文件中,从开头到第一个非注释行 之间的第一个注释行组(之间无空行) 是帮助文本。 (6)函数中的变量(除特殊声明外)都是局部变 量,而脚本中的变量都是全局变量,关于变量 的有关内容详见第4.2节。 (7)在函数中调用脚本文件,等价于在函数中将 脚本文件的内容粘贴在调用的位置。,4.1.3 子函数与私有函数,一个M文件可以包含多个函数,其中,一个是主函数,其他是子函数。 主函数必须出现在最上方,其后可有若干子函数,子函数的次序可随意调整。主函数和各子函数的工作空间都是彼此独立的。 私有函数是主函数的一种,

5、它只能够在一个特定的限定函数群中可见。,当M文件中需要调用某一个函数时,MATLAB是按照以下顺序来搜寻的: 检查此函数是否是子函数; 检查此函数是否为私有目录的函数; 从所设定的搜寻路径搜索此函数。 搜索过程中,只要找到与第一个文件名相符的函数就会立即取用而停止搜索。,4.1.4 伪代码,一个M文件首次被调用时,MATLAB将对该M文件进行语法分析,并把生成的相应伪代码(P码)存放在内存中。此后当再次调用该M文件时,将直接运行该文件在内存中的伪代码。伪代码文件和原码文件具有相同的文件名,但其扩展名为.p。 伪代码文件不是只有当M文件被调用时才产生,也可使用pcode命令预先生成。,4.2 变

6、量和语句,4.2.1 变量类型 4.2.2 程序控制结构,MATLAB的主要功能虽然是数值运算,但是它也是一个完整的程序语言,包括各种语句格式和语法规则。但与C语言不同的是,MATLAB中的变量是不需要事先定义的,如前3章的例子。,4.2.1 变量类型,在MATLAB中,变量名必须以字母开头,之后可以是任意字母、数字或下划线,但之间不能有空格;区分大小写;第63个字符之后的部分将被忽略。,除了上述命名规则外,MATLAB还提供一些特殊的变量,如下表所示。,除命名规则外,变量命名时还需要注意以下两个方面: (1)变量名不能与已有函数名相同,否则在 内存中有该变量时将不能调用同名函 数; (2)变

7、量名不能与MATLAB预留的关键字和 特殊变量名相同,否则系统会显示错误 信息。,变量按照作用范围分为局部变量和全局变量。在MATLAB中使用命令global声明全局变量,如下所示: 需要使用指定全局变量的M文件,都必须在各自的代码中声明此全局变量。只要存在声明某全局变量的M文件,则全局变量存在。,在使用全局变量中需要注意以下几个方面。 在使用之前必须首先定义,建议将定义放在函 数体的首行位置。 虽然对全局变量的名称并没有特别的限制,但 是为了提高程序的可读性,建议采用大写字符 命名全局变量。 全局变量会损坏函数的独立性,使程序的书写 和维护变得困难,尤其是在大型程序中,不利 于模块化,不推荐

8、使用。,4.2.2 程序控制结构,1顺序结构 2循环结构 3选择结构 4其他控制结构,对于实现任何功能的程序,均可由顺序、循环和选择3种基本结构组合实现。为了更方便地设计程序,还需要一些特殊的控制结构,如跳出循环结构。下面将分别进行介绍。,1顺序结构,顺序结构就是由前至后依次执行程序的各条代码,直至最后一条代码。脚本文件就是典型的顺序结构。,2循环结构,循环结构是按照给定的条件,重复执行指定的代码。该结构一般用于有规律的重复运算。在MATLAB中包括for循环和while循环。,(1)for循环,(2)while循环,3选择结构,选择结构是根据给定的条件来执行不同的代码。在MATLAB中有if

9、-else-end和switch-case-otherwise两种结构。,(1)if-else-end结构,(2)switch-case-otherwise结构,4其他控制结构,在程序设计中经常遇到提前终止循环、跳出子程序、显示出错信息等情况,主要有continue、break、return、echo、error、trycatch等。下面分别对各结构进行介绍。,(1)continue,其作用是结束本次循环,即跳过循环体中尚未执行的代码,接着进行下一次是否执行循环的判断。,(2)break,它的作用是终止本次循环,跳出所在层循环。,(3)return,此命令可使正在运行的函数正常退出,并返回调用

10、它的代码段继续运行,它也可强制结束该函数的执行。如MATLAB自带函数showopcevents() 。,(4)echo,执行M文件时,通常在命令窗口是看不到执行过程的,但在特殊情况下(比如演示)要求M文件的每条命令都要显示出来。这时可以用echo命令实现这样的功能。,对于脚本,echo命令可以用以下方式来实现:,对于函数,echo命令可以用以下方式来实现:,(5)error,(6)trycatch,(7)input,此命令用来提示并接收用户从键盘输入数据、字符串或表达式的值,语法规则如下:,(8)keyboard,此命令将停止文件的执行并将控制权交给键盘,此时命令窗口的提示符由“”变成“K”

11、,当输入return后,控制权将交回文件。该命令对程序的调试和在程序运行中修改变量值都很方便。,(9)pause,此命令用于暂时中止程序的运行。该命令对程序的调试和查询中间变量值时很方便。该命令的语法规则如下:,4.3 程 序 调 试,4.3.1 直接调试法 4.3.2 工具调试法,在编译和运行程序时出现错误(警告)无法避免,因此掌握程序调试的方法和技巧对提高工作效率很重要。 下面针对语法错误和逻辑错误推荐两种调试方法,即直接调试法和工具调试法。,4.3.1 直接调试法,对于简单的程序往往采用直接调试法,通常采取的措施如下。 (1)通过分析后,将重点怀疑语句后的分号 删掉,将结果显示出来,然后

12、与预期 值进行比较。 (2)单独调试函数时,将函数声明行注释掉,并 定义输入变量的值,然后以脚本方式运行,这 样可保存中间变量,进而进行分析和找出错 误。,(3)在程序中的适当位置添加输出变量值的 代码。 (4)在程序中的适当位置添加keyboard命 令。 复杂的程序,必须采用工具调试法,即借助MATLAB提供的工具调试器(Debugger)进行调试。,4.3.2 工具调试法,1以命令行为主的程序调试 2以图形界面为主的程序调试,MATLAB提供了调试程序的工具,利用这些工具可以提高编程的效率,包括命令行的调试函数和图形界面的菜单命令。,1以命令行为主的程序调试,以命令行为主的程序调试手段具

13、有通用性,可以适用于各种平台,它主要是应用MATLAB提供的调试命令。 在命令窗口输入help debug可以看到对于这些命令的简单描述,下面分别进行介绍。,(1)设置断点,这是最重要的部分,可以利用它来指定程序代码的断点,使得程序在断点前停止执行,并进入调试模式,从而可以检查当前各个变量的值。,dbstop in mfile 在文件名为mfile的M文件的第一个可执行语句前设置断点。 dbstop in mfile at lineno 在文件名为mfile的M文件的第lineno行设置断点。如果第lineno行为非执行语句,则在其后的第一个可执行语句前设置断点。,dbstop in mfil

14、e at subfun 在文件名为mfile的M文件的子程序subfun的第一个可执行语句前设置断点。 dbstop if error 在程序运行遇到错误时,自动设置断点。这里的错误不包括trycatch之间的错误。,dbstop if all error 在程序运行遇到错误时,自动设置断点。这里的错误包括trycatch之间的错误。 dbstop if warning 在程序运行遇到警告时,自动设置断点。,dbstop if caught error 在程序运行trycatch间代码遇到错误时,自动设置断点。 dbstop if naninf 或 dbstop if infnan 当程序运行

15、遇到无穷值或者非数值时,自动设置断点。,在命令窗口输入dbstop in function8,并打开文件function8.m就可看到如下图所示的界面,它在第一个可执行语句前设置了断点。,单击图中红点,会发现红点被取消,此时回复到初始状态。然后在命令窗口依次输入dbstop if error和function8(magic(3),可得到如下的运行结果和如下图所示的界面。,(2)清除断点,dbclear all 清除所有M文件中的所有断点。 dbclear all in mfile 清除文件名为mfile的M文件中的所有断点。,dbclear in mfile 清除文件名为mfile的M文件中第

16、一个可执行语句前的断点。 dbclear in mfile at lineno 清除文件名为mfile的M文件中第lineno行语句前的断点。,dbclear in mfile at subfun 清除文件名为mfile的M文件中子程序subfun的第一个可执行语句前的断点。 dbclear if error 清除由dbstop if error设置的断点。 dbclear if warning 清除由dbstop if warning设置的断点。,dbclear if naninf 清除由dbstop if naninf设置的断点。 dbclear if infnan 清除由dbstop if infnan设置的断点。,(3)恢复执行,dbcont 此命令可从断点处恢复程序的执行,直到遇到程序的另一个断点或错误。,(4)调用堆栈,dbstack 此命令显示M文件名和断点产生的行号、调用此M文件的文件名和行号等,直到最高层的M文件,即列出了函数调用的堆栈。,(5)列出所有断点,dbstatus 此命令可列出所有的断点,包括错误、警

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号