第讲函数与程序的调试.ppt

上传人:b****2 文档编号:2122365 上传时间:2022-10-27 格式:PPT 页数:26 大小:286KB
下载 相关 举报
第讲函数与程序的调试.ppt_第1页
第1页 / 共26页
第讲函数与程序的调试.ppt_第2页
第2页 / 共26页
第讲函数与程序的调试.ppt_第3页
第3页 / 共26页
第讲函数与程序的调试.ppt_第4页
第4页 / 共26页
第讲函数与程序的调试.ppt_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

第讲函数与程序的调试.ppt

《第讲函数与程序的调试.ppt》由会员分享,可在线阅读,更多相关《第讲函数与程序的调试.ppt(26页珍藏版)》请在冰豆网上搜索。

第讲函数与程序的调试.ppt

第第11讲讲函数与程序的调试函数与程序的调试2n本讲教学目标本讲教学目标掌握函数文件的基本结构掌握函数文件的基本结构掌握掌握Matlab函数的调用方法函数的调用方法了解函数参数的可调性了解函数参数的可调性掌握函数的句柄和常用的程序调试方法掌握函数的句柄和常用的程序调试方法了解各种不同类型的函数了解各种不同类型的函数3n11.1函数函数11.1.1函数文件基本结构函数文件基本结构n由由function语句引导,其基本结构为:

语句引导,其基本结构为:

function输出形参表输出形参表=函数名函数名(输入形参表输入形参表)注释说明部分注释说明部分函数体语句函数体语句n函数名的命名规则与变量名相同。

函数名的命名规则与变量名相同。

n输入形参为函数的输入参数,输出形参为函数的输输入形参为函数的输入参数,输出形参为函数的输出参数。

出参数。

n当输出形参多于一个时,则应该用方括号括起来。

当输出形参多于一个时,则应该用方括号括起来。

4n例例1:

编写函数文件求半径为编写函数文件求半径为r的圆的面积的圆的面积和周长。

和周长。

函数文件如下:

函数文件如下:

%calculatetheareaandperimeterofacircleofradiirfunctions,p=fcircle(r)%r圆半径圆半径,s圆面积圆面积,p圆周长圆周长s=pi*r*r;p=2*pi*r;5n11.1.2函数调用函数调用函数调用的一般格式是:

函数调用的一般格式是:

输出实参表输出实参表=函数名函数名(输入实参表输入实参表)n注意:

函数调用时各实参出现的顺序和个数,应与注意:

函数调用时各实参出现的顺序和个数,应与函数定义时形参的顺序和个数一致,否则会出错。

函数定义时形参的顺序和个数一致,否则会出错。

n函数调用时,先将实参传递给相应的形参,从而实函数调用时,先将实参传递给相应的形参,从而实现参数传递,然后再执行函数的功能。

现参数传递,然后再执行函数的功能。

在在MATLAB中,函数可以嵌套调用,即函数可中,函数可以嵌套调用,即函数可以调用别的函数,甚至调用它自身。

一个函数以调用别的函数,甚至调用它自身。

一个函数调用它自身称为递归调用。

调用它自身称为递归调用。

6n例例2:

利用函数文件,实现直角坐标利用函数文件,实现直角坐标(x,y)与极坐标与极坐标(rho,theta)之间的转换。

之间的转换。

函数文件函数文件tran.m:

nfunctionrho,theta=tran(x,y)rho=sqrt(x*x+y*y);theta=atan(y/x);调用调用tran.m的命令文件的命令文件main1.m:

nx=input(Pleaseinputx=:

);y=input(Pleaseinputy=:

);rho,the=tran(x,y)7n例例3:

利用函数的递归调用,求利用函数的递归调用,求n!

递归调用函数文件递归调用函数文件factor.m如下:

如下:

nfunctionf=factor(n)ifntrigFun=sin,cos,tan;plot(trigFun2(-pi:

0.01:

pi)12n函数句柄的操作函数句柄的操作13n11.1.5匿名函数匿名函数匿名函数提供了一种创建简单程序的方法,可匿名函数提供了一种创建简单程序的方法,可以使用户不必每次都编写以使用户不必每次都编写M文件,可以在命令文件,可以在命令窗口或其他任意窗口或其他任意M文件和脚本文件中使用。

文件和脚本文件中使用。

格式为:

格式为:

fhandle=(arglist)expr其中其中fhandle为该函数创建的函数句柄;为该函数创建的函数句柄;符符号用于创建函数句柄;号用于创建函数句柄;arglist为用逗号分隔的为用逗号分隔的参数列表;参数列表;expr为函数主体,一般为表达式。

为函数主体,一般为表达式。

14n11.1.6主函数主函数通常通常M文件中的第一个函数为主函数,主函数文件中的第一个函数为主函数,主函数之后可以是任意数量的子函数,它们可以作为之后可以是任意数量的子函数,它们可以作为主程序的子程序。

主程序的子程序。

一般来说,主函数可被该文件之外的其他函数一般来说,主函数可被该文件之外的其他函数调用,而子函数只能被该文件内的函数调用。

调用,而子函数只能被该文件内的函数调用。

在命令窗口或在命令窗口或M文件种只能调用主函数,调用文件种只能调用主函数,调用的时候是通过存储该函数的的时候是通过存储该函数的M文件名进行。

文件名进行。

15n11.1.7子函数子函数与其他语言一样,在与其他语言一样,在MATLAB7语言中也可以语言中也可以很方便地定义子函数,用来扩充函数的功能。

很方便地定义子函数,用来扩充函数的功能。

在函数文件中题头定义的函数为主函数,而在在函数文件中题头定义的函数为主函数,而在函数体内定义的其他函数都被视为子函数。

每函数体内定义的其他函数都被视为子函数。

每个子函数以函数定义语句开头,直至下一个函个子函数以函数定义语句开头,直至下一个函数的定义或文件的结尾。

数的定义或文件的结尾。

子函数只能为主函数或同一主函数下的其他子子函数只能为主函数或同一主函数下的其他子函数所使用。

函数所使用。

16n11.1.8嵌套函数嵌套函数一个函数内部可以定义其他的函数,这种内部一个函数内部可以定义其他的函数,这种内部的函数称作嵌套函数。

的函数称作嵌套函数。

定义嵌套函数时,只要在一个函数内部直接定定义嵌套函数时,只要在一个函数内部直接定义嵌套函数即可。

义嵌套函数即可。

注意:

当一个注意:

当一个M文件中存在嵌套函数时,该文文件中存在嵌套函数时,该文件内的所有函数必须以件内的所有函数必须以end结尾。

结尾。

17n例例6:

嵌套函数的结构嵌套函数的结构functionx=A(p1,p2).functiony=B(p3).end.endn每个函数中可以嵌套多个函数。

每个函数中可以嵌套多个函数。

18n11.1.9私有函数私有函数这类函数位于名为这类函数位于名为“private”的子文件夹中,只的子文件夹中,只能被上一级文件夹中的函数或者这些函数所调用的能被上一级文件夹中的函数或者这些函数所调用的M文件调用。

文件调用。

如当前文件夹为如当前文件夹为math,其中包含,其中包含private文件夹,文件夹,则则private中的函数只能被中的函数只能被math根目录下的函根目录下的函数及这些函数调用的数及这些函数调用的M文件调用。

文件调用。

用户可开发自己的函数库,其名称可以与系统标准用户可开发自己的函数库,其名称可以与系统标准M函数库名称相同,而不必担心在函数调用时发生函数库名称相同,而不必担心在函数调用时发生冲突,因为冲突,因为MATLAB首先查找私有函数,再查找首先查找私有函数,再查找标准函数。

标准函数。

19n11.1.10重载函数重载函数函数重载为程序编写和用户调用都提供了很大函数重载为程序编写和用户调用都提供了很大的方便。

的方便。

函数重载允许多个函数使用相同的函数名,不函数重载允许多个函数使用相同的函数名,不同的输入参数类型。

同的输入参数类型。

在函数调用时,系统根据输入参数的情况自动在函数调用时,系统根据输入参数的情况自动选择相应的函数执行。

选择相应的函数执行。

20n11.2程序的调试和优化程序的调试和优化11.2.1程序的调试程序的调试n程序的错误种类程序的错误种类n错误的识别和程序调试错误的识别和程序调试11.2.2程序的优化程序的优化n程序优劣的分析程序优劣的分析n程序优化的技巧程序优化的技巧n有效地使用内存有效地使用内存21n11.2.1程序的调试程序的调试程序的错误种类程序的错误种类n在在MATLAB的表达式中存在两种类型的错误:

的表达式中存在两种类型的错误:

n

(1)语法错误语法错误n语法错误发生在语法错误发生在M文件程序代码的生成过程中,一文件程序代码的生成过程中,一般是由函数参数输入类型有误或是矩阵运算阶数不般是由函数参数输入类型有误或是矩阵运算阶数不符等引起。

符等引起。

n

(2)运行错误运行错误n运行错误一般指在程序运行过程中,出现溢出或是运行错误一般指在程序运行过程中,出现溢出或是死循环等异常现象。

死循环等异常现象。

22n11.2.1程序的调试程序的调试错误的识别和程序调试错误的识别和程序调试n错误识别函数及其功能错误识别函数及其功能23n11.2.1程序的调试程序的调试错误的识别和程序调试错误的识别和程序调试n程序断点的设置程序断点的设置24n11.2.2程序的优化程序的优化程序优劣的分析程序优劣的分析n在在MATLAB7语言中,使用语言中,使用profile函数以及计时函函数以及计时函数数tic和和toc来分析程序中各个部分的耗时情况,从来分析程序中各个部分的耗时情况,从而帮助用户找出程序中需要改进的地方。

而帮助用户找出程序中需要改进的地方。

n其中其中profile在计算相对耗时以及查找文件执行过程在计算相对耗时以及查找文件执行过程中瓶颈问题时更为有效,而中瓶颈问题时更为有效,而tic和和toc函数在计算绝函数在计算绝对耗时时更为有效。

对耗时时更为有效。

25n11.2.2程序的优化程序的优化程序优化的技巧程序优化的技巧n

(1)程序的向量化操作程序的向量化操作n循环运算是循环运算是MATLAB中的最大弱点,在程序设计中,中的最大弱点,在程序设计中,应当尽量避免使用循环运算。

用户可以通过将应当尽量避免使用循环运算。

用户可以通过将M文文件向量化来优化件向量化来优化M文件,即使用向量和矩阵运算来文件,即使用向量和矩阵运算来代替代替for循环和循环和while循环。

循环。

n

(2)数据的预定义数据的预定义n使用使用for和和while循环来增加数据结构的大小时,将循环来增加数据结构的大小时,将影响系统和内存的使用,而预定义可提高效率。

影响系统和内存的使用,而预定义可提高效率。

26本节完,谢谢!

本节完,谢谢!

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

当前位置:首页 > 考试认证 > IT认证

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1