MATLAB及其在理工课程中的应用ppt课件

上传人:我*** 文档编号:148521731 上传时间:2020-10-20 格式:PPT 页数:18 大小:267.50KB
返回 下载 相关 举报
MATLAB及其在理工课程中的应用ppt课件_第1页
第1页 / 共18页
MATLAB及其在理工课程中的应用ppt课件_第2页
第2页 / 共18页
MATLAB及其在理工课程中的应用ppt课件_第3页
第3页 / 共18页
MATLAB及其在理工课程中的应用ppt课件_第4页
第4页 / 共18页
MATLAB及其在理工课程中的应用ppt课件_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《MATLAB及其在理工课程中的应用ppt课件》由会员分享,可在线阅读,更多相关《MATLAB及其在理工课程中的应用ppt课件(18页珍藏版)》请在金锄头文库上搜索。

1、M文件和函数句柄,7.1 M文本编辑器,MATLAB Editor/Debugger是一个集编辑与调试功能于一体的工具环境。 创建新M文件的三种方法 在MATLAB指令窗运行指令edit; 点击MATLAB指令窗工具条上的 利用MATLAB指令窗的File:New子菜单 打开已有M文件的方法 在MATLAB指令窗运行指令 edit filename 点击MATLAB指令窗工具条上的 利用MATLAB指令窗的File:Open子菜单,7.2 MATLAB控制流,for循环结构 for x=array %x称为循环变量 (command) %循环体 end 循环结构可以嵌套使用; 为了得到高效代码

2、,应尽量提高代码的向量化程度,避免使用循环结构;在循环指令之前应尽量对数组进行预定义; 由于i和j是预定义变量,作“虚单位”使用,所以尽量避免把i和j用作循环变量; 例题exm7.2-1,7.2 MATLAB控制流,while循环结构 while expression (commands) end 当MATLAB碰到while指令时,首先检测expression的值,若其值为逻辑真,则执行组命令。 与for循环的区别:while循环结构的循环体被执行的次数不是确定的,而for循环结构的循环体的执行次数是确定的。 while指令后的表达式为空数组,则表达式值为假,而不执行循环体。 例题exm7.

3、2-2,7.2 MATLAB控制流,if-else-end分支结构 if expression if expression (commands) (commands1) end else (commands2) end if指令判决和break指令的配合使用,可以强制终止for循环或while循环。 例题exm7.2-3,7.2-4,7.2 MATLAB控制流,switch-case结构 switch ex *ex为一标量或字符串 case test1 (commands 1) *当ex等于test1时,执行组命令1, case test2 *然后跳出该结构。 case testk *当ex等

4、于testk时,执行组命令k (commands k) *然后跳出该结构。 otherwise *otherwise指令可以不存在 (commands) *表达式不等于前面所有检测值时 *执行该组命令。 例题exm,7.2 MATLAB控制流,try-catch结构 try (commands1) *组命令1总被执行。若正确,则跳出该结构 catch (commands2) *仅当组命令1出现执行错误时,2才被执行 end 可调用lasterr函数查询出错原因。若lasterr的运行结果为一个空串,则表明组命令1被成功执行了。 当执行组命令2时又出错,MATLAB将终止该结构。 例题exm,7

5、.2 MATLAB控制流,控制程序流的其他常用指令 v=input(message), v=input(message,s) 该指令执行时,“控制权”交给键盘。Message是提示用的字符串。 keyboard 用户从键盘输入M指令,遇return返回程序。 break 令循环终止或令程序中断 continue 跳过位于其后的循环中的其他指令,执行下一迭代 pause,pause(n) 程序暂停执行(n秒) error(message) 显示出错信息message,终止程序 Lasterr 显示最新出错原因,并终止程序 Lastwarn 显示MATLAB自动给出的最新警告程序继续运行 warn

6、ing(message) 显示警告信息message,程序继续运行,7.3 脚本文件和函数文件,M脚本文件 对比较简单的问题,从指令窗中直接输入指令进行计算十分简单。但随指令数增加或控制流复杂度的增加,以及重复计算要求的提出,直接从指令窗进行计算显得烦琐。故适宜脚本文件 脚本文件运行后,所产生的所有变量都驻留在MATLAB基本工作空间(base workspace)中。只要用户不使用clear指令加以清除,且MATLAB指令窗不关闭,这些变量将一直保存在基本工作空间内。,7.3 脚本文件和函数文件,M函数文件 与脚本文件不同,函数文件(function file)犹如一个“黑箱”。从外界只能看

7、到传给它的输入量和输出结果,而内部运作是藏而不见的。 函数文件的第一行是以“function”引导的“函数声明行”。对“输入输出宗量”的标称数目没有限制。 函数文件运行,MATLAB为之专门开辟临时工作空间(functionworkspace)。当执行完文件最后一条指令或遇return时,结束运行,并清除临时工作空间内所有中间变量。 若在函数文件中调用某脚本文件,则该脚本文件运行产生的所有变量都存放于该函数空间中,而不存放在基本空间。,7.3 脚本文件和函数文件,局部变量和全局变量 局部变量:存在于函数空间内部的中间变量,产生于该函数运行过程中,影响范围仅限于该函数本身。 全局变量:用glob

8、al指令。每个共享全局变量的函数或MATLAB基本空间,必须逐个用global对具体变量加以专门定义。没采用global定义的函数或基本工作空间,无权享用全局变量。 全局变量的定义必须在该变量被使用之前进行。 为了提高M文件的可读性,选用大写字符命名全局变量。 由于全局变量损害函数的封装性,故不提倡使用全局变量。,7.3 脚本文件和函数文件,典型M函数文件的一般结构 函数申明行:位于函数文件的首行,以function开头,函数名以及函数的输入输出宗量都在该行定义。 H1行:紧随函数申明行之后以%开头的第一注释行。包括大写体的函数名,运用关键词简要描述的函数功能。 在线帮助文本区:H1行及其之后

9、的连续以%开头的所有注释行。包括函数输入输出宗量的含义,调用格式的说明。 编写和修改记录:与在线帮助文本区相隔一个空行,以%开头,标志编写及修改该M文件的作者、日期、版本记录。 函数体:与前面的注释行以空行相隔,由实现该M函数文件功能的MATLAB指令组成。 例题exm,7.4 变量的检测传递和限权使用函数,输入输出宗量检测指令 nargin 在函数体内,用于获取实际输入宗量 nargout 获取实际输出宗量 nargin(fun) 获取fun指定函数的标称输入宗量数 nargout(fun) 获取fun指定函数的标称输出宗量数 inputname(n) 给出第N个输入宗量的实际调用变量名 跨

10、空间变量传递 跨空间计算串表达式的值 evalin(workspace,expression) evalin(workspace,expression1,expression2) 跨空间赋值 assignin(workspace,VN,x) 跨空间向VN变量赋值。 例题exm,7.4 变量的检测传递和限权使用函数,子函数 MATLAB允许一个M函数文件包含多个函数的代码。第一个出现的函数成为主函数,其他函数成为子函数。 保存时所用函数文件名与主函数名相同。外部程序只能对主函数进行调用。 每个子函数的第一行是其函数申明行。 主函数的位置不可改变,子函数的排列次序可以任意改变。 子函数只能被处于同

11、一文件的主函数或其他子函数调用。 子函数的优先级仅次于内装函数。 同一文件的主函数、子函数的工作空间彼此独立。各函数间的信息,通过输入输出宗量传递,或通过全局变量传递,或通过跨空间指令传递。,7.4 变量的检测传递和限权使用函数,私用函数 指位于private目录上的M文件函数。 只能被private目录的直接父目录上的M函数文件所调用。不能被其他目录上任何M函数、M脚本文件或MATLAB指令窗中的命令所调用,也不能被直接父目录上的M脚本文件调用。 私用函数的优先级低于内装函数和子函数,高于其他任何目录上的函数。,7.5 串演算函数,“宏”操作能力(GUI的回调函数,各种泛函指令) 串演算函数

12、 y=eval(CEM) 执行CEM指定的计算 y1,y2, =eval(CEM) 执行对CEM的函数文件调用,输出结果 y1,y2, =feval(FH,arg1,arg2, ) 执行函数句柄FH指定的计算 例题exm7.5-3,7.5-4 内联函数 inline(CE,arg1,arg2) 把串表达式转化为arg1,arg2等指定输入 宗量的内联函数。 inline(CE, n) 把串表达式转化为x,P1,P2, ,Pn等指定输入宗量的 内联函数。 例题exm,7.6 函数句柄,是一种新的数据类型。 特点 使feval以及借助于它的泛函指令工作更加可靠; 使“函数调用”像“变量调用”一样灵活方便; 可迅速获得同名重载函数的位置、类型信息; 可在更大范围内调用子函数和私用函数,提高软件的重用性; 提高函数的调用速度,尤其在反复调用情况下。,7.6 函数句柄,函数句柄的创建 必须通过专门定义产生:利用符号或利用转换函数str2func 函数句柄的基本用法 若一个函数的调用格式: argout1,argout2, ,argoutn=FunName(argin1,argin2, ) 该函数句柄hfun已存在,通过函数句柄实现函数运算的调用格式: argout1,argout2, =feval(Hfun,argin1,argin2, ) 例题exm,

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

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

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