MATLAB7.0使用详解-第8章M-文件和MATLAB.ppt

上传人:本田雅阁 文档编号:2103482 上传时间:2019-02-14 格式:PPT 页数:41 大小:222.51KB
返回 下载 相关 举报
MATLAB7.0使用详解-第8章M-文件和MATLAB.ppt_第1页
第1页 / 共41页
MATLAB7.0使用详解-第8章M-文件和MATLAB.ppt_第2页
第2页 / 共41页
MATLAB7.0使用详解-第8章M-文件和MATLAB.ppt_第3页
第3页 / 共41页
亲,该文档总共41页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《MATLAB7.0使用详解-第8章M-文件和MATLAB.ppt》由会员分享,可在线阅读,更多相关《MATLAB7.0使用详解-第8章M-文件和MATLAB.ppt(41页珍藏版)》请在三一文库上搜索。

1、第8章 M-文件和MATLAB 7.0程序设计,本书在前面的章节,主要介绍了MATLAB 7.0强大的数值计算和图形可视化方面的功能。用户主要是利用命令窗口(Command Window)和交互式对话框(如图形窗口),把想法和意图传递给机器,让系统执行操作。以上的操作理解和操作极为方便,但是基本只能解决代码行数少的简单问题,对于大型问题,使用不便。 其实,MATLAB除了以上的功能,还可以提供用户一种特有的交互式的程序语言,即MATLAB语言,使用户可以自行编写扩展名为.m的文件,方便灵活地整合大量单行程序代码,从而解决大规模的工程问题。MATLAB语言和广大用户常见的C和FORTRAN语言从

2、本质上来说,有很多相似之处,另外MATLAB就是利用C语言作为开发内核,所以,如果熟悉C语言编程的读者,阅读本章将会有驾轻就熟之感。 从广义上说,在MATLAB命令窗口输入单行代码和利用其编程功能设计.m文件的程序都属于MATLAB的程序设计的不同方式,本章主要着眼于后者,详细向读者介绍如下内容:M-文件的特点和类型、MATLAB程序结构和设计控制指令、程序的分析、调试和改良以及MATLAB函数的扩展知识。,8.1 M-文件,在前面的章节中,本书曾经提到过M-文件,概括来说,M-文件就是一系列相关代码组成的一个扩展名为.m的文件,用户可以在MATLAB自带的M-文件编辑窗口或者普通文本编辑器中

3、编写代码,然后以filename的文件名+.m的后缀名保存在MATLAB的工作空间,以后在MATLAB命令窗口直接调用文件名filename,就可以执行文件中一系列代码所综合表示的操作。 虽然M-文件是简单的ASCII型的文本文件,但是其语法却与高级语言一样,是一种程序化的变成语言,所以,M-文件具有简单、交互性较好和易于调试的特点。MATLAB之所以适用于多门学科,其重要原因是其具有类型齐全、功能完善的各种“工具箱(Toolbox)”,这些工具箱也都是一个个M-文件,广大工程师和学者不断在工具箱内添加新的M-文件,使MATLAB的功能愈加增强。 本节主要介绍M-文件的分类、结构组成以及如何运

4、用M-文件进行程序设计等知识。,8.1.1 脚本文件(MATLAB scripts),M-文件可以分为两类:脚本文件(MATLAB scripts)和函数文件(MATLAB functions)。两种M-文件虽然都是以.m为文件扩展名,但是有一定的区别,之后的章节将具体介绍其不同之处,本节首先介绍脚本文件的相关知识。 脚本文件可以理解为较为简单的M-文件,因为其没有输入和输出变量。下面用一个简单的例子说明如何编写和运行脚本文件。,8.1.2 函数文件(MATLAB functions),上一小节介绍了M-文件的一种形式:脚本文件。本节将继续介绍M-文件的另一种形式:函数文件(MATLAB fu

5、nctions),读者需要特别注意对于这两种文件的比较和区别。 相对于脚本文件来说,函数文件稍显复杂。表面上看来,函数文件只是在同功能的脚本文件的基础上,在文件中代码开始处,多添加了一行函数定义行,如上一小节例1.1中脚本文件对应的函数文件如图所示。,8.1.3 M-文件的组成结构,上两小节从M-文件分类的角度,分别介绍了脚本和函数文件的特点和编写调用方法。函数和脚本两者本是同宗,从结构外观上看,函数文件也只比脚本文件多了一行函数声明行代码,所以本节在介绍M-文件基本结构时,把两者结合在一起进行介绍,这样不但思路统一,而且可以相互比较,让读者在理解的时候加深印象。 首先,仍然举一个简单的M-文

6、件的例子,本例是一个求和函数文件“sum”,具体结构如图所示。,8.1.4 P-码文件,所有M-文件首次被MATLAB调用时,系统会首先对文件进行语法分析,并把生成的相关内部伪代码(Psedocode)文件存放于内存中,P-码是伪代码(Psedocode)的缩写。当系统再次对该-文件进行调用时,将直接调用存放于内存中对应的P-码文件,而不是再次对原M-文件进行重复的分析。 P-码文件和对应的M-文件具有同样的文件名,但其却是以“.p”作为扩展名,对于用户输入的的文件名,系统优先调用同名的P-码文件,而且对于规模较大的文件,用户可以明显地感觉到,P-码文件的执行速度比M-文件高。 读者需要注意的

7、是,虽然P-码文件可以随着M-文件的被调用而产生,但其不仅仅只能作为M-文件的“附属品”,也就是说用户可以预先创建P-码文件并对内存中的P-码文件进行操作。,8.2 MATLAB的程序结构及流控制语句,MATLAB语言作为一种高级编程语言,提供给了用户一些判断程序结构并控制程序运行的流程控制语句,方便用户对于程序的编写和执行顺序的控制。 一般来说MATLAN的程序按照大类,可以分为3种,即顺序结构、循环结构和分支结构。本节将分别介绍这3种结构和对应的流控制语句。,8.2.1 顺序结构,顺序结构是MATLAB程序结构中最基本的结构,不需要任何流程控制语句,完全是依照自上而下的顺序进行代码的执行,

8、用户熟知的批处理文件就是典型的顺序结构。 一般的程序中,都要包含顺序结构,读者要把此结构的程序作为程序的基础来熟练掌握。 【例3】使用MATLAB顺序结构,编辑一个计算两数的积商的程序。 用户首先新建一个M-文件,在M-文件编辑器中输入如下代码: % 定义变量a,并赋值 a=10; % 定义变量b,并赋值 b=100; % 输出两数乘积 fprintf(product=%fn,a*b); % 输出两数的商 fprintf(quotient=%fn,b/a);,8.2.2 for循环结构,循环结构一般用于规律性较强的运算,程序中被循环执行的语句称为循环体。MATLAB中的循环结构控制语句有for

9、和while两种,都属于“当型循环控制语句”,即当条件m为“真”时,反复执行a语句,直到m为假为止,才停止循环,如图所示。,8.2.3 while循环结构,上一小节介绍了常用循环结构的一种for循环结构,本节将对照for语句,讲解while循环语句的结构和使用方法。 While语句的格式如下: while expression statements; end 其中,expression代表条件表达式,而statements表示执行的循环体,一般情况下,expression提供的是一个标量,有时也可以是数组。以expression是标量为例,只要其为“真(True)”,那么statements循

10、环体就会一直循环下去,直到expression变为“假(False)”为止;而如果expression是一个数组,那么statements循环与否的条件则分别是数组所有元素均为“真”和不全为“真”。,8.2.4 if条件分支结构,与循环结构一样,分支结构也是程序设计中的常见结构之一。当程序需要表达选择意向的时候,用户往往需要使用条件分支控制语句。条件分支结构的执行顺序一般是,条件P为“真”时,执行语句A,否则,执行语句B,在执行完成任意分支后,输出结果。 MATLAB中常见的条件分支控制语句有if和switch语句,本节将首先介绍if分支语句。 if语句是MATLAB程序设计中的重要语句之一,

11、其调用格式有3种,分别是:单分支、双分支和多分支,下面分别介绍这3种分支语句的格式和用法。,8.2.5 switch条件分支结构,MATLAB中还有一种常用的多分支结构语句,即switch语句。与if多分支语句相比较而言,switch语句主要用于条件多且单一的情况,比如学生成绩分类、人口年龄层次结构统计等,这些问题如果用if语句来处理,虽然也可以得到结果,但是由于分支较多,嵌套的if语句层数太多,程序烦琐复杂,不便于理解,可读性差。 switch条件分支语句的调用格式为: switch expression case value1 statements1 case value2 stateme

12、nts2 case value3 statements3 . otherwise statements end,8.3 MATLAB交互式程序控制语句,上一节主要讲解了MATLAB程序的3种一般结构和对应的常用控制语句,在使用控制语句编写程序来解决实际问题时,用户不仅需要确定程序的结构对实现问题的表述,还常常会遇到程序提前终止循环、跳出子程序、显示出错信息、输入用户数据、暂停程序执行以及显示执行命令等情况。 针对此类问题,MATLAB特别提供了一系列交互式控制语句,来实现上述的功能,本节将结合具体的示例,介绍以下的指令:continue、break、return、try-catch、error

13、、warning、input、keyboard、pauseecho等。,8.3.1 continue结束循环语句,continue语句的功能是跳过程序中未执行的循环语句来结束循环。其调用格式十分简单,即直接输入continue,代码如下。 continue continue语句一般通过与if条件语句结合使用于循环结构中,下面举例说明其用法。,8.3.2 break结束循环语句,在MATLAB程序设计中,break语句与continue语句的功能类似,作用是终止本次循环,跳出最内层循环中所有剩下的语句,即根据条件而不必等到循环结束,继续下一次循环。break语句常与if语句配合使用来强制结束循环

14、,下面举例说明其用法。,8.3.3 return终止操作语句,上一小节介绍的break语句一般只用于循环体内部,如果用户需要在循环语句之外结束操作,则可以使用return语句。return语句的用法比continue和break语句都要灵活,一般用在函数的末尾,MATLAB调用函数正在运行时,return语句可以强制程序结束,或者在满足某条件时强制退出此函数的运行,并返回主调函数或者键盘。 正常情况下,程序于end语句处结束,使用return语句可以提前结束程序,下面举例说明return语句的用法。,8.3.4 warning错误警告语句,在MATLAB程序设计中,有一类专门对警告或错误情况进

15、行捕获和处理的语句,常用的包括warning、error和try-catch语句等,本小节将介绍warning语句的功能和使用方法。在编写程序的时候,遇到错误时,需要给使用者必要的提示,warning语句是常见的警告提示语句,其调用格式如下。 warning(message) 其中,message表示显示的警告内容,出现警告时,程序继续进行。下面举例说明warning语句的用法。,8.3.5 error语句错误警告终止语句,error语句的功能与warning语句类似,同样是针对程序中错误代码的报错显示。error语句的常用调用格式和功能如下。 error(message):其中,messag

16、e为显示的出错信息,此语句终止程序的执行。 errordlg(errorstring,dlgname):显示出错信息的对话框,其中,errorstring为对话框内容,而dlgname为对话框的标题。 下面借用上一小节的例子,说明error语句的用法。,8.3.6 try-catch纠错模块语句,读者理解了error语句的使用方法后,对于功能类似的try-catch语句的理解,就会感到十分轻松。try-catch语句允许用户对一个程序中的错误进行操作,用户可以使用此语句判断程序的某处代码是否确实有错误。try-catch语句的调用格式和功能如下。 try % try模块 statement .

17、 statement catch %catch模块 statement statement end,8.3.7 pause暂停语句,用户在进行程序设计的时候,往往需要在程序执行的过程中,暂停或者终止程序的运行。pause语句就是常用的可以实现这项功能的语句之一。pause语句执行时,系统暂停执行,等待用户按任意键继续执行。pause语句常用于程序的调试过程中和用户需要查看程序执行的中间结果的时候。 pause语句的调用格式和功能如下: pause:暂停程序的执行,等待用户按任意键继续。 pause(n):暂停程序的执行,n秒后继续执行(n可以是分数)。 pause on:使后续的pause或者

18、pause(n)指令予以执行。 pause off:使后续的pause或者pause(n)指令不予以执行。,8.3.8 echo指令查询语句,一般来说,用户在调用M-文件,执行其中程序代码时,在命令窗口是看不到代码执行的具体过程的,有时为了便于分析、演示和讲解,用户恰恰要对具体的运行过程,甚至每一行代码进行细致地了解。 对于脚本文件和函数文件,echo语句的调用方式有一定的区别,对于脚本文件,其调用格式如下: echo on:显示其后所有执行文件的指令。 echo off:不显示其后所有执行文件的指令。 echo:在上两种之间切换,变换显示状态。 而对于函数文件,echo语句的调用格式为: e

19、cho function_name on:显示名为function_name的文件中执行的指令。 echo function_name off:不显示名为function_name的文件中执行的指令。 echo on all:显示所有文件中执行的指令。 echo off all:不显示所有文件中执行的指令。,8.3.9 input输入控制语句,在前面举例介绍MATLAB程序结构和控制语句时,已经用到了input用户输入语句。Input语句主要作用是提示用户在程序运行过程中给运算输入参数(包括数据、字符串和表达式),并使系统接受所输入的值。input语句的调用格式和具体功能如下: variabl

20、e=input(prompt):在屏幕上显示提示信息prompt,等待用户输入,并把用户输入的值赋给变量variable。 variable=input(prompt,s):返回字符串作为文本变量,而不是给变量赋一个名称或者数值。 下面举一个猜数游戏的例子,说明input语句的用法。,8.3.10 Keyboard键盘控制语句,MATLAB中的keyboard语句常用在程序调试和运行中的变量修改。用户在程序中使用keyboard语句,当系统执行此语句时,将停止文件的执行,显示提示符“K”,并把控制权交给键盘,等待用户的输入,显示如下。 K 当用户输入return指令,按Enter键,则控制权交

21、回给程序,程序继续运行,显示如下。 K return ,8.4 关系运算符和逻辑运算符,读者如果有C或者FORTRAN语言的变成经验,那么对于关系和逻辑运算便不会陌生,这两种运算主要是为用户解决程序设计中的“真”、“假”问题。 MATLAB不但提供给用户比较齐全的算数运算符号,作为高级语言之一,同样也支持关系运算和逻辑运算,并且经常在程序中涉及这两种运算。如果读者仔细阅读本章前面的内容,就很容易发现,在M-文件中编写程序代码,特别是在使用各种控制语句的时候,用户常需要使用这两种运算的结果(“真”或者“假”)作为控制语句的判断条件。 MATLAB中的关系和逻辑运算式,所有输入非0的数都为“逻辑真

22、”,只有0才为“逻辑假”;而计算结果,即输出为一个逻辑数组(Logical Array),其中的元素,如果值为1,则表示“真”;如果值为0,则表示假。本节主要介绍MATLAB中常用的关系运算符和逻辑运算符,以及MATLAB中各种常用运算符的优先级顺序。,8.4.1 关系运算符,MATLAB中的关系运算符可以实现常见的关系比较,具体符号和功能如表所示。,8.4.2 逻辑运算符,MATLAB中的逻辑运算,包括我们常见的“与、或、非、异或”运算。逻辑运算的表现方式有3种,分别是元素方式(Element-wise)、比特方式(Bit-wise)以及短路方式(Short-Circuit)。下面分别介绍3

23、种方式的逻辑运算符。 1元素式逻辑运算符 元素式逻辑运算符,只接受逻辑类型的变量输入,一般是对于标量进行操作。 2比特式逻辑运算符 比特式逻辑运算先按照元素式逻辑运算规则把十进制的数值进行操作,再把得到的二进制逻辑数值转换为十进制数值。 3短路式运算符 短路式运算符之所以这样取名,是因为其提供了避绕式的操作,即如果符号左边的数值可以确定返回结果,那么系统不考虑符号右边的数值,只有在左边数值不能确定结果的情况下,才继续对右边的数值进行操作。,8.4.3 运算符的优先级,本书在前面的章节,介绍了MATLAB的算数运算,本章又进一步总结了关系和逻辑运算。对于不同的运算,优先级是个很重要的问题,读者在

24、程序设计中尤其会碰到类似的问题。搞清不同种类运算符的优先级顺序,可以帮助读者更好的理解MATLAB的程序结构和执行规则。 MATLAB在执行包含算数、关系及逻辑运算符的运算时,遵循的原则是:按照优先级从高到低,同级的从左到右顺序执行。之与一般的运算法则是类似的,下面,列出常用的MATLAB运算符的优先级顺序,从上到下优先级依次是从高到低。,8.5 变量,本书的第2章曾用一节的篇幅简要介绍了MATLAB中变量(variables)的命名规则、MATLAB中特殊变量和关键字。由于变量是MATLAB中的重要概念,且与M-文件的编写和程序的执行,有着密切的联系,所以本节还要进一步介绍变量的分类,各种变

25、量的区别及使用、变量的检测传递以及变长度函数。,8.5.1 变量的分类,MATLAB中的变量可分为3类,分别为局部变量(Local Variables)、全局变量(Global Variables)和永久变量(Persistent Variables)。 1局部变量:在MATLAB中,每一个函数有其独立的局部变量,这些临时定义的变量不被加载到MATLAB的工作空间中,与其他函数或是MATLAB基本工作空间中的变量互不影响(除嵌套函数之外)。除非特别定义了全局变量或者永久变量,否则当函数结束调用时,所有局部变量将随之被擦除。 2全局变量:用户有时需要定义全局变量来减少数据传递的次数,全局变量是通

26、过global指令来定义的,格式如下: global VAR1 VAR2; 3永久变量:除了通过全局变量共享数据外,函数式M-文件还可以通过声明一个变量persistent来对两数中重复使用和递归调用的变量的访问进行限制,使用格式如下。 persistent VAR,8.5.2 变量检测函数,为了提高用户传递参数的效率和进一步优化程序设计的流程,MATLAB提供了多种函数,用于变量检测、传递以及变长度输入输出变量。首先本节将介绍变量检测的功能和用法。 输入、输出变量检测函数专门用于检测输入输出变量的个数,函数的调用格式和功能如下。 nargin:在函数体内,获取实际输入变量。 nargout:

27、在函数体内,获取实际输出变量。 nargin(fun):获取函数fun中标称的输入变量个数。 nargout(fun):获取函数fun中标称的输出变量个数。 inputname(n):在函数体内,获取第n个输入变量的实际调用变量名。,8.5.3 “变长度”变量函数,在MATLAB中,用户会接触到一些比较特殊的函数,这些函数可以接受任意数目的输入和输出。比如二微绘图函数plot,plot函数的调用格式如下。 plot(x,y,PropertyName1,PropertyValue1,PropertyName2,PropertyValue2,PropertyName3,PropertyValue3

28、,) 函数可以接受任意多个输入输出变量,作为“属性名和属性值”,来对绘制的图形进行精细的描绘和控制。 用户可以自行编辑与plot函数具备同样能力的函数,本节主要讲解为帮助用户实现这种想法,MATLAB提供的两个函数:varargin和varargout。 varargin:“变长度”输入变量列表(Variable length input argument list)。 varargout:“变长度”输出变量列表(Variable length output argument list)。,8.5.4 变量的跨空间传递函数,当需要进行所处不同工作空间的函数的互相传递时,用户可以使用全局变量,也

29、可以通过使用函数的输入、输出变量。针对此类问题,本小节还要介绍一种新的方法,即调用跨空间变量传递函数。 函数evalin可以让用户在非当前工作空间执行一个表达式,并把结果返回到当前工作空间,其调用格式和具体功能如下: evalin(workspace,expression):跨空间计算字符串表达式值。workspace可以取base和caller两个值。当workspace取base时,调用eval(expression)时,从MATLAB基本工作空间获取变量值;如workspace取caller时,调用eval(expression)时,将从主调函数工作空间获取变量值。 evalin(wor

30、kspace,expression1, expression2):跨空间计算替代字符串表达式值。从所在函数工作空间获取变量值,调用eval(expression1)计算原字符串表达式,如果发生错误,则再从workspace指定的工作空间中获取变量值,再调用eval(expression2)计算替代字符串表达式。,8.6 函数,函数是MATLAB中的一个重要概念,本书前面的章节也多次涉及到函数的各方面知识。读者对于MATLAB中函数应该不感到陌生,如果读者认真阅读本书前面的章节,诸如clear、abs、plot等函数应该已经使读者印象深刻了。调用函数执行某种操作是用户常用的MATLAB功能,当然

31、也已经成为了本书中读者熟知的用语。 函数的作用是使问题解决模块化,用户不需要知道内部步骤,函数只需要接受用户指定的输入、输出参数,返回结果。用户在MzATLAB 7.0中创建新函数的方法有以下两种: 编写M-函数文件; 直接在MATLAB命令窗口进行指令的输入。 本节主要从MATLAB函数创建的不同方法、函数的调用方式以及函数功能的角度进一步阐述函数的概念,并介绍MATLAB中数据类型的一种:函数句柄;另外,还将介绍一种较为特殊的函数:字符串计算函数。,8.6.1 主函数与子函数,正如本节开头综述介绍的,使用M-文件编辑代码创建函数文件是创建函数的方法之一,也是用户最常用的方法,本书之前涉及的

32、所有函数都是使用此种方法得到的。 以M-文件方式存储的函数包含主函数(primary function)、子函数(subfunction)和嵌套函数(nested function)等。本小节主要介绍主函数和子函数。 M-文件可以包含任意多个函数,主函数是指M-文件中的第一个函数。本书之前介绍的所有M-文件都只包含一个函数,即所调用的函数都是主函数。子函数是除了主函数之外的函数,一个M-文件可以有任意多个子函数,但是只能有一个主函数。,8.6.2 嵌套函数,本小节主要介绍的嵌套函数是M-文件函数的一种重要分支。用户在创建M-文件函数时,可以在文件中定义多个函数,这种定义可以使用子函数的方式,即

33、多个并列的、平行的函数;另一种方式就是定义一个主函数,在主函数中再嵌套定义从属的函数,这种包含在函数中的函数,称为嵌套函数。 嵌套函数在M-文件内部定义,与一般主函数一样,其包括函数的所有基本组成部分。嵌套函数的创建格式如下。 function x = A(p1, p2) . function y = B(p3) . end . end,8.6.3 函数句柄,在“数据类型”一章曾介绍过,函数句柄(function handle)是MATLAB 7.0中的一种数据类型。函数句柄作为一种间接访问函数的手段,可以使用户调用函数变得简单,提高过程的效率和可靠性,避免或减少程序设计中的冗余,并在执行函数

34、调用过程中保存相关信息。函数句柄的创建格式如下: fun_handle=fun_name 其中,fun_handle代表函数句柄,fun_name为函数名,符号“”是函数句柄创建时的特殊符号。例如,给上一小节的嵌套函数创建一个函数句柄t,输入代码及得到的结果如下。 t=try_nest t = try_nest,8.6.4 匿名函数,在MATLAB中,用户创建函数的方式之一是直接在命令窗口中输入代码,创建匿名函数。上一小节介绍了有关函数句柄的知识,这有助于读者对于匿名函数的理解。 匿名函数使用户可以创建简单的程序,避免M-文件的编写,匿名函数的生成不同于前面章节介绍的M-文件函数,它并不是以编

35、写程序,并以M-文件的形式保存的方式创建的,而是直接在MATLAB命令窗口输入代码。匿名函数的创建格式如下。 fun_handle=(arg1,arg2,.) expression 其中,fun_handle为创建的函数句柄,arg1、arg2为输入变量,expression为函数的主体表达式。,8.6.5 字符串调用函数,字符串调用函数的调用参数为字符串,此字符串的内容可以是所有有效的MATLAB形式,如表达式、语句、指令和文件名。本小节主要介绍两个常用的字符串调用函数eval和feval。 eval函数的调用格式及具体功能如下。 eval(string):计算字符串的值,string可以是

36、MATLAB的所有有效形式。 a1,a2,=eval(function(b1,b2,):计算参数为b1、b2的函数function,并把结果返回给名为a1、a2的输出变量。,8.7 程序的调试,用户在MATLAB中进行程序设计时,难免会出现错误和漏洞,也就是俗称的bug,在大规模、多人协作的开发环境中,此种情况更容易发生。针对这种情况,程序设计者必须对程序进行调试(Debug),以此提高程序的正确率和运行效率。 一般来说,程序中的错误可以分为两类:语法错误(Syntax Errors)和逻辑错误(Logical Errors)。常见的语法错误包括混淆变量或者函数名称、错误标点符号的运用、部分控

37、制语句的缺少等。在MATLAB中把错误表达式或包含语法错误的函数进行编译,保存于内存时,会发现这些错误,并立即标识出这些错误的类型和所在位置(行数)。根据系统的提示,用户可以方便地修改这些错误。,8.7.1 直接调试法,MATLAB语言与其他高级编程语言相比,具有简单易读,向量化程度高的优势,对于简单的问题,使用下面几种方法可以方便地进行错误的查找和修改。 (1)将程序中最可能出现错误或者输出关键值的行的分号(;)去掉,或者改成逗号(,),这样,这些运算的中间结果将在命令窗口中予以显示,用户可以据此来检查中间结果的正确性。 (2)在程序中的适当位置添加些语句(如disp语句),用来显示要查看的

38、重要变量的值。 (3)在M-文件中,添加keyboard语句,如本章前面介绍此语句的内容所述,当MATLAB运行到keyboard语句时,会暂停程序的执行,并在MATLAB命令窗口显示“K”提示符,将控制权交给键盘,等待用户的输入。 (4)由于函数文件的工作空间是临时的独立工件,而脚本文件的工作空间就是MATLAB工作空间(Workspace),所以如果用户需要查询函数文件中的变量,只需要把其暂时转变为脚本文件。,8.7.2 工具调试法,上一小节的直接调试法适用于比较简单的程序,对于调用关系烦琐、大型、复杂程序,直接调试法往往不能起到很好的效果。为此,MATLAB提供给了用户一个专门的调试工具“调试器(Debugger)”,用户可以使用工具调试法中的调试图标对程序进行调试。 MATLAB编译器调试工具栏包含7个调试功能图标和一个空间堆栈下拉菜单,如图所示。,

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1