Matlab基本编程.ppt

上传人:qwe****56 文档编号:70006701 上传时间:2023-01-14 格式:PPT 页数:133 大小:1.43MB
返回 下载 相关 举报
Matlab基本编程.ppt_第1页
第1页 / 共133页
Matlab基本编程.ppt_第2页
第2页 / 共133页
点击查看更多>>
资源描述

《Matlab基本编程.ppt》由会员分享,可在线阅读,更多相关《Matlab基本编程.ppt(133页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、MatlabMatlab基本编程基本编程 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 函数

2、 4.1.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),用来存放中间变量,当执行完函数文件的最后一条命令或 者

4、遇到return命令时就结束该函数的 运行,返回函数的输出,同时将临时 工作空间清空。(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 变量和语句 4.2.1 变

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

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

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

9、herwise两种结构。(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”,当输入return后,控制权将交回文件。该命令对程序的调

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

12、入变量的值,然后以脚本方式运行,这 样可保存中间变量,进而进行分析和找出错 误。(3)在程序中的适当位置添加输出变量值的 代码。(4)在程序中的适当位置添加keyboard命 令。复杂的程序,必须采用工具调试法,即 借 助 MATLAB提 供 的 工 具 调 试 器(Debugger)进行调试。4.3.2 工具调试法 1以命令行为主的程序调试 2以图形界面为主的程序调试 MATLAB提供了调试程序的工具,利用这些工具可以提高编程的效率,包括命令行的调试函数和图形界面的菜单命令。1以命令行为主的程序调试 以命令行为主的程序调试手段具有通用性,可以适用于各种平台,它主要是应用MATLAB提供的调试

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

14、第一个可执行语句前设置断点。dbstop if error 在程序运行遇到错误时,自动设置断点。这里的错误不包括trycatch之间的错误。dbstop if all error 在程序运行遇到错误时,自动设置断点。这里的错误包括trycatch之间的错误。dbstop if warning 在程序运行遇到警告时,自动设置断点。dbstop if caught error 在程序运行trycatch间代码遇到错误时,自动设置断点。dbstop if naninf 或 dbstop if infnan 当程序运行遇到无穷值或者非数值时,自动设置断点。在命令窗口输入dbstop in functi

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

16、名 为 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 此命令可从断点处恢复程序的执

17、行,直到遇到程序的另一个断点或错误。(4)调用堆栈 dbstack 此命令显示M文件名和断点产生的行号、调用此M文件的文件名和行号等,直到最高层的M文件,即列出了函数调用的堆栈。(5)列出所有断点 dbstatus 此命令可列出所有的断点,包括错误、警告、nan和inf等。dbstatus mfile 此命令可列出文件名为mfile的M文件中的所有断点。(6)执行1行或多行语句 dbstep 执行当前M文件下一个可执行语句。dbstep nlines 执行当前M文件下nlines行可执行语句。dbstep in 当下一条可执行语句是对另一个函数的调用,此命令将从被调用函数的第一个可执行语句执行

18、。dbstep out 此命令将执行函数剩余的代码然后停止。(7)列出文件内容 dbtype mfile 列出文件名为mfile的M文件中的内容。dbtype mfile start:end 列出文件名为mfile的M文件中指定行号范围的部分。(8)切换工作空间 dbdown遇到断点时,将当前工作空间切换到被调用M文件的工作空间。dbup将当前工作空间(断点处)切换到调用文件的工作空间。(9)退出调试模式 dbquit 立即结束调试器并返回到基本工作空间,但所有断点仍有效。2以图形界面为主的程序调试 MATLAB自带的文本编辑器同时也是程序的编译器,用户可以在程序编辑后直接进行调试,更加方便和

19、直观。通过新建M文件打开文本编辑器和编译器,选择主菜单中【Debug】选项,其下拉菜单包括多种调试命令,如下图所示。下拉菜单中的命令有一部分在工具栏中有图标相对应,其功能与命令行调试程序是相同的,下面只对各命令做简单介绍。4.4 函数设计和实现 4.4.1 建立数学模型 4.4.2 编写代码 4.4.3 运行程序 4.4.4 良好的编程习惯 前面介绍了MATLAB编程的语法规则,本节将通过一个实例讲述用MATLAB解决实际问题的步骤。4.4.1 建立数学模型PID控制的结构图 下面按照图中各模块分别进行数学建模。1参考输入 参考输入也称为参考信号,本例中选取单位阶跃函数作为参考输入,它满足如下

20、所示的条件:2PID控制器 前面已经讲述了PID控制器参数整定方法,下面讲解它的物理含义。3被控对象4.4.2 编写代码1参数整定2被控对象1参数整定2被控对象 需要说明的是,上述函数中采用中文注释,这在MATLAB 中是可以识别的。而对于一些特殊的符号或字符,则需要使用函数slCharacterEncoding()来 设 置 解 码 规 则,通 过 命 令 help slCharacterEncoding可了解到它支持“Unix,Linux,Mac”,“Hp-UX”,“Windows(USA,Western Europe)”,“Windows(Japan)”和“Windows(Other)”

21、。4.4.3 运行程序 当运行出错或运行结果不理想时,首先按照第4.3节的方法进行调试,然后在确定程序无误的情况下,检查数学模型和使用的算法是否正确和恰当。从本例中可以看出,MATLAB提供了十分强大的功能。4.4.4 良好的编程习惯 Matlab编程是程序开发的一种,应该符合一般程序开发的规律。良好的编程习惯可以提高工作效率,减少不必要的失误。对于初学者来说,应该注意以下几个方面。(1)数据结构必须事先规划好,如果数据结 构设计存在错误或不妥,那么程序修改 的工作量将是巨大的。(2)尽量避免使用全局变量。(3)函数尽可能功能简明,使其可以重用,从而程序实现模块化。(4)良好的编写风格,使得别人或者自己能 够容易读懂之前所写的代码。具体的 方法包括:变量和函数名统一按规律 命名,并具有较明确的意义;代码层 次分明;注释清楚且充分等。(5)注重程序的充分测试,注意警告信息。(6)具有建立和求解数学模型的能力,能够 简化程序的复杂性。Matlab编程本身也有其特有的地方,如执行速度慢,为了解决这个问题可以采用如下的措施。(1)尽量避免使用循环,一是用向量化的运 算来代替循环操作,二是在多重循环时 外循环次数应小于内循环。(2)大型矩阵的预先确定各方向长度。(3)优先考虑使用MATLAB的内建函数。(4)应用MEX技术,这部分内容将在第11 章中介绍。习 题

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

当前位置:首页 > 技术资料 > 其他杂项

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁