MATLAB程序设计优秀课件_第1页
MATLAB程序设计优秀课件_第2页
MATLAB程序设计优秀课件_第3页
MATLAB程序设计优秀课件_第4页
MATLAB程序设计优秀课件_第5页
已阅读5页,还剩69页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第7章MATLAB2007程序设计MATLABR2007基础教程清华大学出版社教学目标教学重点教学内容4/21/20231教学目标熟悉MATLAB的编程环境掌握MATLAB的变量类型掌握MATLAB中的流程控制语句掌握MATLAB的函数类型和函数操作了解MATLAB中的错误处理了解MATLAB程序调试方法了解MATLAB代码优化方法4/21/20232教学重点MATLAB的编程环境MATLAB的变量类型MATLAB中的流程控制语句MATLAB的函数类型和函数操作MATLAB程序调试方法4/21/20233教学内容M文本文件介绍函数流程控制函数变量函数类型函数操作MATLAB编程错误处理程序设计的辅助函数调试程序优化程序4/21/20234M文本文件介绍一个M文件通常包含五个部分,函数定义语句、H1帮助行、帮助文本、函数体或者脚本文件语句和注释语句。H1行为紧随函数定义语句后面的一行注释语句。当用户通过help命令查询该函数的说明信息时H1行显示为第一行,另外lookfor函数只检索和显示H1行。帮助文本为H1行后面连续的注释行,当在命令窗口中通过help命令查询该函数的说明信息时则在窗口中显示这些内容。函数体为M文件的主要部分,是函数的执行代码。除上面的H1行和帮助文本外,为了易于理解,可以在书写代码时添加注释语句。这些注释语句在编译程序时会被忽略,因此不会影响编译速度和程序运行速度,但是能够增加程序的可读性。4/21/20235一个完整的M文件的结构为:functionf=fact(n)函数定义语句%Computeafactorialvalue.H1行%FACT(N)returnsthefactorialofN,帮助文本%usuallydenotedbyN!%Putsimply,FACT(N)isPROD(1:N).注释语句f=prod(1:n);函数体函数定义语句只在函数文件中存在,定义函数名称、输入输出参数的数量和顺序。函数定义语句的格式为:functiony=fact(x)。4/21/20236函数式M文件函数式M文件比脚本式M文件相对复杂一些,脚本文件不需要自带参数,也不一定返回结果,而函数文件一般要自带参数,并且有返回结果,以便于更好的把整个程序连为一段。函数文件也可以不带参数,此时文件中一般使用一些全局变量来实现与外界和其他函数之间的数据交换。函数文件的第一行以function开始,说明此文件是一个函数。其实质为用户向MATLAB函数库中添加的子函数。在默认情况下,函数文件中的变量都是局部变量,仅在函数运行期间有效,函数运行结束后,这些变量将从工作区中清除。4/21/20237函数流程控制顺序结构判断语句(if…else…end)分支语句循环语句try…catch…end语句其他流程控制函数4/21/20238顺序结构顺序结构是最简单的程序结构,系统在编译程序时,按照程序的物理位置顺序执行。这种程序容易编制,但是结构单一,能够实现的功能有限。4/21/20239判断语句(if…else…end)if…endif…else…endif…elseif…else…end4/21/202310if…end此时的程序结构如下:if表达式执行代码块end这是最简单的判断语句,只有一个判断语句,其中的表达式为逻辑表达式,当表达式为真时,执行相应的语句,否则,直接跳到下一段语句。4/21/202311if…else…end当程序有两个选择时,可以选择if…else…end结构,此时程序结构为:if表达式执行代码块1else执行代码块2end当判断表达式为真时,执行代码块1,否则执行代码块2。4/21/202312if…elseif…else…end上面的两种形式中,分别包含一个选择和两个选择,当判断包含多个选择时,可以采用elseif语句,结构为:if表达式1执行代码块1elseif表达式2执行代码块2elseif..................else执行代码块end其中可以包含任意多个elseif语句。4/21/202313分支语句上一节中的if…elseif…else…end语句可以适用于多种选择的流程控制,此时对else之外的每一个选择语句设置一个表达式,表达式为真时则执行该模块。MATLAB中的另一种多选择语句为分支语句。分支语句的结构为:switch分支语句case条件语句执行代码块case{条件语句1,条件语句2,条件语句3,...}执行代码块otherwise执行代码块end4/21/202314其中的分支语句为一个变量,可以是数值变量或者字符串变量,如果该变量的值与某一条件相符,则执行相应的语句,否则,执行otherwise后面的语句。在每一个条件中,可以包含一个条件语句,可以包含多个条件,当包含多个条件时,将条件以单元数组的形式表示。MATLAB的分支语句类似于C语言的分支语句,但是又不完全相同:MATLAB语句从上到下依次判断条件,条件符合则执行相应的代码块,之后退出该分支语句,因此在代码块后面不需要添加“break”语句。4/21/202315循环语句for语句while语句4/21/2023161.for语句for语句将相同的代码执行预定义的次数。for语句的结构为:for循环变量=表达式执行代码块endfor循环的语句在前面的例子中已经有所涉及,上节的例子中,第二个程序中也涉及到了for循环语句。下面为for循环的更多例子。4/21/2023172.while语句while语句用于将相同的代码块执行多次,但是次数并不预先指定,当while的条件表达式为真时,执行代码块,直到条件表达式为假。while语句的结构为:while表达式执行代码块end4/21/2023186.2.5try…catch…end语句MATLAB中的另一种判断语句为try…catch语句,这种语句可以包容程序运行中的错误,并返回错误类型。这种语句的结构为:try运行代码块catch运行代码块end该语句首先从上到下依次执行,如果遇到程序错误则运行下一个catch中的语句,依次向下进行。如果程序运行成功,则退出该判断语句。如果在catch和end之间的程序运行出错,则程序运行终止,或者如果存在其他的try…catch结构,则运行下一个try…catch结构。可以利用lasterr命令查看发生错误的原因。4/21/2023196.2.6其他流程控制函数

continue:continue语句通常用在循环控制中,包括for循环和while循环,用于结束当次循环,继续执行下一次循环,但是不结束当前循环。一般continue语句与if语句相结合,当满足一定的条件时,执行continue语句。break:与continue相同的是,break函数也是用于循环控制,中断当前循环。与continue不同,break跳出当前循环,不再执行该循环的任何操作。return:结束该程序的执行,返回到调用函数或者键盘。4/21/2023206.3函数变量6.3.1变量类型局部变量全局变量永久变量4/21/202321局部变量每个函数都有自己的局部变量,这些变量存储在该函数独立的工作区中,与其他函数的变量及主工作区中的变量分开存储。当函数调用结束时,这些变量随之删除,不保存在内存中。并且,除了函数返回值,该函数不改变工作区中其他变量的值。然而脚本文件没有独立的工作区,当通过命令窗口调用脚本文件时,脚本文件分享主工作区,当函数调用脚本文件时,脚本文件分享主调函数的工作区。需要注意的是,如果脚本中改变了工作区中变量的值,则在脚本文件调用结束后,该变量的值发生改变。在函数中,变量默认为局部变量。4/21/202322全局变量局部变量只在一个工作区内有效,无论是函数工作区还是MATLAB主工作区。与局部变量不同,全局变量可以在定义该变量的全部工作区中有效。当在一个工作区内改变该变量的值时,该变量在其他工作区中的变量同时改变。任何函数如果需要使用全局变量,则必须首先声明,声明格式为:global变量名1变量名2如果一个M文件中包含的子函数需要访问全局变量,则需在子函数中声明该变量,如果需要在命令行中访问该变量,则需在命令行中声明该变量。4/21/202323永久变量除局部变量和全局变量外,MATLAB中还有一种变量类型为永久变量。永久变量的特点为:只能在M文件内部定义;只有该变量从属的函数能够访问该变量;当函数运行结束时,该变量的值保留在内存中,因此当该函数再次被调用时,可以再次利用这些变量。永久变量的定义方法为:persistent变量名1变量名2。4/21/2023246.4函数类型6.4.1匿名函数6.4.2主函数6.4.3子函数6.4.4嵌套函数6.4.5私有函数6.4.6重载函数4/21/202325匿名函数关于匿名函数在前面“MATLAB的数学运算”一章中已有初步涉及,在“函数运算”一节的示例中用到了大量的匿名函数。本节对匿名函数做进一步的介绍。匿名函数提供了一种创建简单程序的方法,使用它用户可以不必每次都编写M文件。用户可以在MATLAB的命令窗口或是其他任意M文件和脚本文件中使用匿名函数。匿名函数的格式为:fhandle=@(arglist)expr其中fhandle是为该函数创建的函数句柄;@符号用于创建函数句柄;arglist为用逗号分隔的参数列表;expr为函数主体,为MATLAB表达式。4/21/202326主函数通常每个M文件中的第一个函数为主函数,主函数可以被该文件之外的其他函数调用,而子函数只能被该文件内的函数调用。主函数的调用通过存储该函数的M文件的文件名调用。我们在前面几节中编写的实验程序,大多为主函数,如例6-7。因此,这里不再过多介绍。4/21/202327子函数一个M文件中可以包括多个函数,除主函数之外的其他函数称为子函数。子函数只能被主函数或该文件内的其他子函数调用。每个子函数以函数定义语句开头,直至下一个函数的定义或文件的结尾。当函数中调用函数时,系统判断其函数类型的顺序为:首先判断是否为子函数,然后判断是否为私有函数,最后判断其是否为当前目录下的M文件函数或者系统内置函数。由于子函数具有最高的优先级别,因此,在定义子函数时,可以采用已有的其他外部函数的名称。4/21/202328嵌套函数一个函数内部可以定义其他的函数,这种内部的函数称作嵌套函数。1.嵌套函数的书写定义嵌套函数时,只要在一个函数内部直接定义嵌套函数即可。需要注意的是当一个M文件中存在嵌套函数时,该文件内的所有函数必须以end结尾。4/21/202329例6-14嵌套函数的结构functionx=A(p1,p2)...functiony=B(p3)...end...end4/21/202330每个函数中可以嵌套多个函数。例6-15多个平行嵌套函数functionx=A(p1,p2)...functiony=B(p3)...endfunctionz=C(p4)...end...end4/21/202331在这个程序中,函数A嵌套了函数B和函数C。另外,嵌套函数还可以包含嵌套函数,其结构如例6-16。例6-16多层嵌套函数functionx=A(p1,p2)...functiony=B(p3)...functionz=C(p4)...end...end...End在这段程序中,函数A嵌套了函数B,函数B嵌套了函数C。4/21/2023322.嵌套函数的调用一个嵌套函数可以被下列函数调用:(1)该嵌套函数的上一层函数,如上面例6-13中函数A可以调用函数B,函数B可以调用函数C,但是函数A不能调用函数C;(2)同一母函数下的同级嵌套函数,如上面例6-12中函数B可以调用函数C;(3)被任一低级别的函数调用。4/21/202333在这段程序中,函数A包含了嵌套函数B和嵌套函数D,函数B和函数D分别嵌套了函数C和函数E。这段程序中函数间的调用关系为:(1)函数A为主函数,可以调用函数B和函数D,但是不能调用函数C和函数E;(2)函数B和函数D为一级嵌套函数,B可以调用函数D和函数C,但是不能调用函数E;D可以调用函数B和函数E,但是不能调用C;(3)函数C和函数E为分属两个函数的嵌套函数,可以调用函数B和函数D,但是不能互相调用。4/21/202334私有函数私有函数是MATLAB中的另一类函数,这类函数位于名为“private”的子文件夹中,只能被上一级文件夹中的函数或者这些函数所调用的M文件调用。如,当前文件夹为matlabmath,matlabmath中包含子文件夹private,则private中的函数只能被matlabmath根目录下的函数及这些函数调用的M文件调用。私有函数只能被其父文件夹中的函数调用,因此,用户可以开发自己的函数库,函数的名称可以与系统标准M函数库名称相同,而不必担心在函数调用时发生冲突,因为MATLAB首先查找私有函数,再查找标准函数。4/21/202335重载函数函数重载为程序编写和用户调用都提供了很大的方便。函数重载允许多个函数使用相同的函数名,不同的输入参数类型。在函数调用时,系统根据输入参数的情况自动选择相应的函数执行。4/21/202336函数操作函数句柄利用函数句柄可以实现对函数的间接操作,可以通过将函数句柄传递给其他函数实现对函数的操作,也可以将函数句柄保存在变量中,留待以后调用操作。函数句柄是通过@符号创建的,格式为:fhandle=@functionname。4/21/202337若要保存函数句柄,可以使用单元数组,如下:trigFun={@sin,@cos,@tan};通过函数句柄实现对函数的间接调用,其调用格式与直接调用函数的格式相同:fhandle(arg1,arg2,...,argn),其中fhandle为函数句柄。4/21/202338函数参数当调用函数时,主调函数通过函数参数的形式向被调函数传递数据,被调函数通过函数返回值的形式向主调函数返回数据。本节介绍函数参数,内容包括:输入参数数目确定、输入可变数目的参数、向嵌套函数输入可选参数和修改参数值并返回。4/21/2023391.函数参数数目确定函数nargin和函数nargout分别用于确定函数的输入输出参数个数。在函数体内部用nargin(nargout)确定输入输出参数后可以用条件语句确定需要执行的操作。4/21/202340函数nargin和函数nargout允许函数接收或返回任意数目的参数。本节介绍参数数目可变的函数。在MATLAB中,输入输出参数是以单元数组的形式进行传输的:输入参数以单元数组的形式传递给函数,单元数组的每个元素为相应的参数,同样,输出参数也是以单元数组的形式组织的。如此的参数组织形式便于函数接受任意数目的参数。见下面的例子。4/21/202341在调用该函数时可以输入任意数目的参数,参数可以为二元数组或者表示线型的字符串,该函数将用指定的线型绘制输入数据的图像。指定线型的字符串可以在任意位置输入,并且可以输入多个,但是需要注意的是,只有最后一个字符串起作用。在上面的程序中,将所有输入参数作为一个单元数组,利用花括号和圆括号对数组元素进行访问,实现输入参数的调用。4/21/202342在嵌套函数中也可以使用可变参数。但是需要注意的是,varargin、varargout、nargin和nargout的意义可能有所不同。下面介绍这四个元素的应用规则。varargin和varargout这两个元素为变量,与MATLAB其他变量的作用范围相同。由于嵌套函数与主函数使用相同的工作区,因此varargin和varargout既可以表示嵌套函数的输入输出参数,也可以是主函数的输入输出函数,具体值取决于程序中的变量声明:如果嵌套函数在函数声明中包含varargin或者varargout,则在该函数内部调用这两个变量时,变量内容为该函数的输入输出参数;如果嵌套函数声明中没有包含varargin或者varargout,而在该函数的上层函数声明中包含varargin或者varargout,则当在该嵌套函数内部调用这两个变量时,变量内容为上层函数的输入输出参数。4/21/202343nargin和nargoutnargin和nargout是函数,当在函数中调用这两个函数时,其值为该函数的输入或输出参数,而不需要进行声明。如上面的例子中,在函数A中调用nargin(B(nargin,y*rand(4)))表示函数A的输入参数个数,在函数C中调用nargin表示函数C的输入参数个数。4/21/202344MATLAB编程错误处理通过try-catch语句检测错误对错误进行处理并且从错误中恢复消息标志符警告处理4/21/202345通过try-catch语句检测错误无论程序的编写多么谨慎,在不同的环境下运行时都有可能产生意外的错误。因此,有必要在程序中添加错误检测语句,保证程序在所有的条件下都能够正常运行。MATLAB中的try-catch语句可用于错误检测。如果程序中的一些语句可能会产生非预计的结果,可以将这些语句放在try-catch块中。try-catch语句可以检测所有错误,并且分别进行处理。格式如下:try表达式1catch表达式2end一个try-catch块分为两个部分。第一个部分以try开始,第二个部分以catch开始,整个块以end结束。程序首先正常执行第一部分,如果有错误发生,则停止执行该部分的其他语句,转而执行catch中的语句。catch部分对错误进行处理,可以显示错误提示、执行默认语句等。4/21/202346在try-catch语句中,可以嵌套其他的try-catch语句,其格式为:try表达式1%执行表达式1catchtry表达式2%尝试从错误中恢复catchdisp'Operationfailed'%处理错误endend4/21/202347对错误进行处理并且从错误中恢复1.发出错误报告MATALB中error函数可以报告错误并且中断程序运行。用户可以通过指定error函数参数的方式指定将要发出的错误信息。4/21/2023482.识别错误发生的原因当错误发生时,用户需要知道错误发生的位置及错误原因,以便能够正确处理错误。lasterror函数可以返回最后发生的错误的相关信息,辅助用户识别错误。lasterror返回结果为一个结构体,该结构体包含三个域,分别为message、identifier、stack。message为字符串,起内容为最近发生的错误的相关文本信息;identifier也是一个字符串,内容为错误消息的类别标志;stack为一结构体,其内容为该错误的堆栈中的相关信息。stack包含三个域,为file、name和line,分别为文件名、函数名和错误发生的行数。4/21/2023493.错误重现在一些情况下,需要重现已经抛出过的错误,以便于对错误进行分析。MATLAB中函数rethrow可以重新抛出指定的错误。该函数的格式为rethrow(err),其中输入参数err用于指定需要重现的错误。该语句执行后程序运行中断,将控制权转给键盘或catch语句的上一层模块。输入参数err需为MATLAB结构体,包含message、identifier、stack中至少一个域,这三个域的类型与lasterror返回结果相同。rethrow函数通常与try-catch语句一起使用。如:try表达式1catchdo_cleanuprethrow(lasterror)end4/21/202350消息标志符1.消息标志符的格式标志符为一个字符串,指定错误或警告消息的类别(component)及详细信息(mnemonic)。通常为“类别:详细信息”的格式。如:MATLAB:divideByZeroSimulink:actionNotTakenTechCorp:notFoundInPath等。两个部分都需要满足如下的规则:(1)不能包含空格(2)第一个字符必须为字母(3)后面的字符可以为数字或下划线类别部分指定错误或警告可能发生的大体位置,通常为某一产品的名字或者工具箱的名字,如MATLAB或者Control。MATLAB支持使用多层次的类别名称。详细信息用于指定消息的具体内容,如除数为0等。如下面的例子为一个完整的标志符:error('MATLAB:ambiguousSyntax','Syntax%scouldbeambiguous.\n',inputstr)。4/21/2023512.标志符的应用消息标志符通常与lasterror函数一起应用,使得lasterror函数和lasterr函数能够识别错误的原因。lasterror函数和lasterr函数返回消息标志符,用户可以通过其类别信息和详细信息分别获取错误的总体类别及具体信息。使用消息标志符的第一步为确定目的信息并为其指定标志符。消息标志符通过error函数指定,格式为:error('msg_id','errormsg')error('msg_id','formatted_errormsg',arg1,arg2,...)其中的消息标志符可以省略。如果lasterror函数不使用该信息,上面的语句可以简写为:error('errormsg')下面以两个实例说明消息标志符与lasterror的使用。4/21/202352函数功能catch指定对try部分发生的错误做出如何的操作error显示错误消息并听出程序运行ferror获取文件输入输出中的错误信息intwarning返回整数警告的控制状态lasterror上一个错误的信息rethrow重新抛出上一个错误try试图运行一个代码块,并捕捉错误warning警告信息4/21/202353警告处理警告用于提示用户在程序运行中出现异常情况。与错误不同的是,警告并不中断程序的运行,而是显示警告内容并继续执行。警告通过函数warning发出,格式与error函数相同,如:warning('Inputmustbeastring')warning('formatted_warningmsg',arg1,arg2,...)warning('Ambiguousparametername,"%s".',param)另外,与错误相同,警告也可以使用消息标志符,用以显示该警告信息的类别及具体信息。警告处理的方式与错误处理的方式类似这里不再赘述。4/21/202354程序设计的辅助函数表达式与函数的评估计时器函数4/21/202355函数功能arrayfun对数组的每个元素应用函数builtin以重载方式执行嵌套函数cellfun对单元数组的每个单元应用函数echo在执行中显示当前运行行eval执行包含MATLAB表达式的字符串evalc评估MATLAB表达式evalin在指定工作区中运行表达式feval函数评估iskeyword判断输入字符串是否为MATLAB关键字isvarname判断输入字符串是否为MATLAB有效变量名pause暂停,等待用户反应run运行非当前路径下的脚本script脚本文件描述structfun对结构体的每个域运行函数symvar判断表达式中的符号变量tic,toc采用计数器评估函数的运行4/21/202356计时器函数函数功能delete删除内存中的计时器对象disp显示计时器对象的相关信息get获取计时器对象的属性isvalid判断计时器对象是否有效set设置或显示计时器对象的属性start开启计时器startat在指定时间启动计时器stop关闭计时器timer生成计时器对象timerfind查找计时器对象timerfindall查找计时器对象,包括不可见对象wait等待,直至计时器停止4/21/202357调试程序直接调试法利用调试工具采用命令行调试程序采用调试界面调试程序4/21/202358直接调试法MATLAB语言具有强大的运算能力,指令系统简单,因此程序通常非常简洁。对于简单的程序可以采用直接调试的方法。在程序调试时,程序运行中变量的值为一个重要的线索。因此,查看变量值为程序调试的重要线索,由于在函数调用时只返回最后的输出参数,而不返回中间变量,因此,可以选择下面的方法查看程序运行中的变量值。(1)通过分析后,将可能出错的语句后面的分号(;)删除,将结果显示在命令窗口中,与预期值进行比较;(2)利用函数disp显示中间变量的值;(3)在程序中的适当位置添加keyboard指令。当MATLAB执行至此处时将暂停,等待用户反应。当程序运行至此时将暂停,在命令窗口中显示k>>提示符,用户可以查看工作区中的变量,可以改变变量的值。输入return指定返回程序,继续运行。(4)在调试一个单独的函数时,可以将函数改写为脚本文件,此时可以直接对输入参数赋值,然后以脚本方式运行该M文件,这样可以保存中间变量,在运行完成后,可以查看中间变量的值,对结果进行分析,查找错误所在。4/21/202359采用命令行调试程序函数功能dbstop设置断点dbclear删除断点dbcont重新开始dbdown恢复由dbup修改的变量值dbmex启动MEX文件调试dbstack列出调用关系dbstatus列出所有的断点dbstep执行一行或多行dbtype列出M文件并标出每行dbup修改工作区中变量的值dbquit退出调试模式4/21/202360函数功能echo显示执行的脚本或函数代码disp显示指定变量的值或者其他信息sprintf,fprintf格式化输出不同类型的变量whos查看工作区中的变量size显示数组维数keyboard中断程序执行,将控制权交给键盘,允许键盘输入return在keyboard中断后继续返回程序执行warning显示指定的警告消息error显示指定的错误消息lasterr返回最后一条错误消息lasterror返回最后一条错误消息及相关信息lastwarn返回最后一条警告消息4/21/202361文本编辑器中的Debug菜单提供了全部的调试选项,另外,MATLAB主窗口中的Debug菜单提供了一些调试命令,方便调试时在命令窗口中查看运行状态。调试选项及其功能如表所示。选项功能对应快捷键OpenM-fileswhenDebbuging选择该选项则在调试打开M文件无Step下一步F10StepIn进入被调用函数内部F11StepOut跳出当前函数Shift+F11Continue执行,直至下一断点F5GountilCursor执行至当前光标处无Set/ClearBreakpoint设置或删除断点F12Set/ModifyConditionalBreakpoint…设置或修改条件断点无Enable/DisableBreakpoint开启或关闭光标行的断点无ClearBreakpointsinAllFiles删除所有文件中的断点无StopifErrors/Warings遇到错误或者警告时停止无4/21/202362Set/ClearBreakpoint,设置或清除断点。可以选择该选项对当前行进行操作,或者通过快捷键F12,或者直接点击该行左侧的“-”,如图所示。设置断点时该处显示为红点。再次进行相同的操作则删除该断点。4/21/202363Set/ModifyConditionalBreakpoint…,该选项用于设置或修改条件断点。条件断点为一种特殊的断点,当满足指定的条件时则程序执行至此时停止,条件不满足时则程序继续进行。其设置界面如图6-6所示,在输入框中输入断点条件则将当前行设置为条件断点。4/21/202364Enable/DisableBreakpoint,该选项用于开启或关闭当前行的断点,如果当前行不存在断点,则设置当前行为断点;如果当前行是断点,则改变该断点的状态。在调试时,被关闭的断点将会被忽略。在程序调试中,变量的值是查找错误的重要线索,在MATLAB中查看变量的值可以有三种方法:(1)在编辑器中将鼠标放置在待查看的变量处,停留,则在此处显示该变量的值;(2)在工作区浏览器中查看该变量的值;(3)在命令窗口中输入该变量的变量名,则显示该变量的值。本节介绍了程序调试的函数和工具,在真正编写程序时,需要根据不同的情况灵活应用这些功能,达到最高的调试效率。4/21/202365优化程序通过Profiler进行程序运行分析通过tic、toc函数进行程序运行分析程序优化的常用方法4/21/202366通过Profiler进行程序运行分析Profiler工具为MATLAB中的图形用户接口,用于分析程序运行时各个部分所消耗的时间,辅助用户进行程序优化。通过Profiler,用户可以:避免由于疏忽造成的非必要操作替换运算较慢的算法,选择快速算法通过存储变量的方式避免重复计算通过Profiler工具进行程序运行分析通常按照下面的步骤进行:(1)查看Profiler生成的总体报告,查找运行时间最多的函数或调用最频繁的函数。(2)查看这些函数的详细报告,查找其中运行时间最多的语句或调用最频繁的语句。用户可以保存第一次分析的结果,以便修改后再次分析时进行比较。(3)确定在运行时间最多的函数或代码行是否存在改进的可能。(4)点击界面链接,打开相应文件,进行修改。(5)重复进行上述的分析、修改,直到得到满意结果。4/21/2023671.打开Profi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论