(matlab程序设计基础教程)第4章m脚本与m函数

上传人:aa****6 文档编号:54863342 上传时间:2018-09-20 格式:PPT 页数:135 大小:1.30MB
返回 下载 相关 举报
(matlab程序设计基础教程)第4章m脚本与m函数_第1页
第1页 / 共135页
(matlab程序设计基础教程)第4章m脚本与m函数_第2页
第2页 / 共135页
(matlab程序设计基础教程)第4章m脚本与m函数_第3页
第3页 / 共135页
(matlab程序设计基础教程)第4章m脚本与m函数_第4页
第4页 / 共135页
(matlab程序设计基础教程)第4章m脚本与m函数_第5页
第5页 / 共135页
点击查看更多>>
资源描述

《(matlab程序设计基础教程)第4章m脚本与m函数》由会员分享,可在线阅读,更多相关《(matlab程序设计基础教程)第4章m脚本与m函数(135页珍藏版)》请在金锄头文库上搜索。

1、,第4章 M脚本与M函数,4.1 使用M文件编程 4.2 M函数 4.3 函数的调用与函数句柄 4.4 函数编程的实例,4.1 使用M文件编程,4.1.1 M文件的结构1函数M文件一个函数M文件与脚本文件类似,它们都是一个扩展名为“.m”的文本文件。同脚本M文件一样,函数M文件不进入命令窗口,而是由文本编辑器所创建的外部文本文件。函数M文件不是独立执行的文件,它接受输入参数、提供输出参数,只能被程序调用。一个 函数M文件通常包含以下部分: 函数定义语句; H1帮助行; 帮助文本; 函数体或者脚本文件语句; 注释语句。,为了易于理解,可以在书写代码时添加注释语句。这些注释语句在编译程序时会被忽略

2、,因此不会影响编译速度和程序运行速度,但是能够增加程序的可读性。 一个完整的函数M文件的结构如下: function f = fact(n) 函数定义语句 % Compute a factorial value. H1行 % FACT(N) returns the factorial of N, 帮助文本 % usually denoted by N! % Put simply, FACT(N) is PROD(1:N). 注释语句 f = prod(1:n); 函数体 函数定义语句只在函数文件中存在,定义函数名称、输入/输出参数的数量和顺序,脚本文件中没有该语句。,2脚本M文件 脚本文件也叫

3、命令文件,是独立执行的文件,它不接受输入参数,不返回任何值,而是代码的结合,该方法允许用户将一系列MATLAB命令输入到一个简单的脚本“.m”文件中,只要在MATLAB命令窗口中执行该文件,则会依次执行该文件中的命令。 脚本M文件中包含一族由MATLAB语言所支持的语句,它类似于DOS下的批处理文件,它的执行方式很简单,用户只需在MATLAB 的提示符“”下键入该M文件的文件名,这样MATLAB就会自动执行该M文件中的各条语句,并将结果直接返回到MATLAB 的工作空间。,在使用脚本文件时需要注意一点:如果当前工作区中存在与该脚本同名的变量,则当输入该文件名时,系统将其作为变量名执行。 MAT

4、LAB中有一个专门用于寻找“.m”文件的路径搜索器。“.m”文件是以目录和文件夹的方式分布于文件系统中的,一部分“.m”文件的目录是MATLAB的子目录,由于MATLAB的一切操作都是在它的搜索路径,包括当前路径中进行的,因此如果调用的函数在搜索路径之外,MATLAB就会认为此函数不存在。,3块注释 在 MATLAB 5以前的版本中,注释是逐行进行的,采用百分号(%)进行标记。逐行注释不利于用户增加和修改注释内容。在MATLAB 5及以后的版本中,用户可以使用“%”和“%”符号进行块注释,“%”和“%”分别代表注释块的起始和结束。,4代码单元 一个代码单元指用户在M文件中指定的一段代码,以一个

5、代码单元符号:两个百分号加空格,即“%”为开始标志,到另一个代码单元符号结束。如果不存在代码单元符号,则直到该文件结束。用户可以通过MATLAB编辑器中的cell 菜单创建和管理代码单元。 需要注意的是,代码单元只能在 MATLAB 编辑器窗口中创建和使用,而在 MATLAB 命令窗口中是无效的。当在命令窗口中运行 M 文件时,将执行文件中的全部语句。,4.1.2 M文件的建立、运行与命名规则 M文件的语法类似于一般高级语言,是一种程序化的编程语言,但是与传统的高级语言相比,M文件又有其特点。它只是一个简单的ASCII码型文本文件,因此,它的语法比一般的高级语言要简单,程序也容易调试,并具有很

6、好的交互性。 1M文件的建立与运行 M文件的建立与运行都可以在M文本编辑器中进行。在MATLAB主窗口中,单击菜单命令“File | New | Script”或“Function”即可打开M文本编辑器,如图4-1所示。 输入完程序命令代码后,按照M文件的命名规则对文件进行命名并保存。 单击菜单命令“Debug | Run”或“F5”即可运行脚本程序。M函数程序的运行需要由其他程序调用。,图4-1 M文本编辑器,2M文件的命名规则 M文件的命名规则如下: (1) 文件名命名要用英文字符,第一个字符必须是字母而不能是数字,其中间不能有非法字符。 (2) 文件名不要取为MATLAB的固有函数,尽量

7、不要是简单的英文单词,最好是由大小写英文、数字、下划线等组合而成的。原因是简单的单词命名容易与内部函数名同名,结果会出现一些莫名其妙的错误。 (3) 文件存储路径一定要为英文。 (4) 文件名不能为两个单词,如random walk,应该写成random_walk,即中间不能有空格等非法字符。,4.1.3 程序的调试 在开发函数或M文件过程中,会不可避免地出现错误,即运行故障。MATLAB提供了很多函数和方法,来帮助调试函数或脚本程序。 在MATLAB的M文本编辑器窗口中,单击菜单命令“Debug | Save File and Run”,即可运行M文本编辑器中的内容。 在MATLAB表达式中

8、,有两类错误:语法错误和运行错误。在运行过程中,可能存在一些语法或其他错误而自动终止执行,而需要进行类似于修正错误或更改参数的调试。 当MATLAB计算一个表达式的值或一个函数被编译到内存时会发现语法错误。一旦发现语法错误,MATLAB立即标志这些错误,并提供有关所遇到的错误类型,以及M文件中发生错误处的行数。给定这些反馈信息后,就很容易纠正这些错误。,而另一方面,即使MATLAB标志了运行错误,但找出错误一般比较困难。当发现运行错误时,MATLAB把控制权返回给命令窗口和MATLAB的工作空间,失去了对发生错误的函数空间的访问权,因此用户不能询问函数工作空间中的内容排除问题。 MATLAB程

9、序的调试一般使用两种方法:直接调试法和利用调试工具。,1直接调试法 MATLAB 语言具有强大的运算能力,指令系统简单,因此程序通常非常简洁。对于简单的程序可以采用直接调试的方法。 在程序调试时,程序运行中变量的值为一个重要的线索。由于在函数调用时只返回最后的输出参数,而不返回中间变量,因此,可以选择下面的方法查看程序运行中的变量值。 (1) 通过分析后,将可能出错的语句后面的分号(;)删除,将结果显示在命令窗口中,与预期值进行比较。,(2) 利用函数disp()显示中间变量的值。 (3) 在程序中的适当位置添加keyboard指令。程序运行至此时将暂停,在命令窗口中显示 k提示符,用户可以查

10、看工作区中的变量,可以改变变量的值。输入return 指定返回程序,继续运行。 (4) 在调试一个单独的函数时,可以将函数改写为脚本文件,此时可以直接对输入参数赋值,然后以脚本方式运行该M文件,这样可以保存中间变量,在运行完成后,可以查看中间变量的值,对结果进行分析,查找错误所在。,2利用调试工具 可采用的调试工具有命令行调试程序和调试器界面调试程序。 文本编辑器中的Debug菜单提供了全部的调试选项,另外,MATLAB主窗口中的Debug 菜单提供了一些调试命令,方便调试时在命令窗口中查看运行状态。调试选项及其功能如表4-1所示。,表4-1 调 试 菜 单 项,Set/Clear Break

11、point:设置或清除断点。可以选择该选项对当前行进行操作,或者通过快捷键 F12,或者直接点击该行左侧的“-”。设置断点时该处显示为红点。再次进行相同的操作则删除该断点。 一旦这些断点被设置,程序将会运行到第一个断点并在那里停止。在调试的过程中,会有一个绿色的箭头出现在当前行。 一旦到达某个断点,程序员可以通过在命令窗口中键入变量名的方法检查或修改在工作区内的任一变量。当程序员对程序的这一点感到满意时,可以通过重复按F10键一行一行地进行调试,也可以按F5键运行到下一个断点。它总是能检测程序中的每一个断点中的任何一个变量的值。,Set/Modify Conditional Breakpoin

12、t:该选项用于设置或修改条件断点。条件断点为一种特殊的断点,当满足指定的条件时则程序执行至此即停止,条件不满足时则程序继续进行。其设置界面如图4-2所示,在输入框中输入断点条件则将当前行设置为条件断点。,图4-2 设置或修改条件断点对话框,Enable/Disable Breakpoint:该选项用于开启或关闭当前行的断点,如果当前行不存在断点,则设置当前行为断点;如果当前行是断点,则改变该断点的状态。在调试时,被关闭的断点将会被忽略。 在程序调试中,变量的值是查找错误的重要线索,在MATLAB中有三种查看变量值的方法: (1) 在编辑器中将鼠标放置在待查看的变量处停留,则在此处显示该变量的值

13、; (2) 在工作区浏览器中查看该变量的值; (3) 在命令窗口中输入该变量的变量名,则显示该变量的值。,调试器的另外一个重要特性是可在“Debug”菜单的“Stop if Errors/Warnings”项目中找到错误。如果程序中发生了一个错误,这个错误导致了电脑死机或产生了错误信息,程序员可以打开这些选项,并执行这个程序。这个程序将会运行到错误或警告的断点并停在那儿,它允许程序员检查变量的每一个值,并帮助找出出错的原因。若一个错误被发现,程序员能用编辑器来更正这个MALTAB程序,并把更新的版本存到磁盘上,在调试没结束之前,它必须重复以上的动作。这个步骤将会重复下去直到这个程序没有错误出现

14、。,4.1.4 程序错误的检测和处理 在MATLAB的命令表达式中可能存在两种类型的错误,即语法错误和运行错误。 语法错误。语法错误发生在M文件程序代码的生成过程中,一般是由于编程人员的错误操作引起的,常见的如变量或函数名拼写错误、引号或括号以及标点符号缺少或应用不当,也可能是由函数参数输入类型有误或是矩阵运算阶数不符等所引起的。 运行错误。运行错误一般指在程序运行过程中,出现溢出或是死循环等异常现象。,1错误的检测 在编程过程中,无论程序的编写多么谨慎,在不同的环境下运行时都有可能产生意外的错误。因此,有必要在程序中添加错误检测语句,保证程序在所有的条件下都能够正常运行。 1) 错误检测 与

15、C语言类似,MATLAB 中的 try-catch 语句可用于错误检测。如果程序中的一些语句可能会产生非预计的结果,可以将这些语句放在 try-catch 块中。try-catch 语句可以检测所有错误,并且分别进行处理。格式如下:,try 表达式1 catch 表达式2 end 一个try-catch块分为两部分。第一部分以try开始,第二部分以catch开始,整个块以end结束。程序首先正常执行第一部分,如果有错误发生,则停止执行该部分的其他语句,转而执行catch中的语句。catch部分对错误进行处理,可以显示错误提示、执行默认语句等。,在try-catch语句中,可以嵌套其他的try-catch语句,其格式如下: try 表达式1 %执行表达式1 catch try 表达式2 %尝试从错误中恢复 catch disp Operation failed %处理错误 end end,2) 发出错误报告 在MATALB中,error()函数可以报告错误并且中断程序运行。用户可以通过指定error()函数参数的方式指定将要发出的错误信息。MATALB提供了一系列错误识别和处理函数,如表4-2所示。,

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

当前位置:首页 > 大杂烩/其它

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