第八章程序设计ppt课件_第1页
第八章程序设计ppt课件_第2页
第八章程序设计ppt课件_第3页
第八章程序设计ppt课件_第4页
第八章程序设计ppt课件_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

1、第六章 M文件程序设计根底主要内容M文本编辑器M文件MATLAB的数据类型MATLAB控制流程序调试函数句柄一、M文件M脚本命令文件M函数文件部分变量和全局变量M文件的普通构造变量的检测传送和限权运用函数1、M脚本命令文件Script 是假设干命令和函数的集合,执行特定的功能 不存在参数的输入和输出 在MATLAB环境下,脚本可以直接访问整个任务空间的变量;而且由脚本建立的变量在脚本文件执行终了后仍坚持在任务空间中,直到clear命令去除为止。例:建立fibonnaci.m文件,其内容如下:%计算Fibonnaci数clear;f(1)=1;f(2)=1;for n=1:1:8 f(n+2)=

2、f(n)+f(n+1);endf2、M函数文件 Function 函数不但可以接受输入参数,还可以输出参数 存储函数的M文件的文件名必需与函数名一致 函数只能访问本身空间的变量 每当函数文件运转,MATLAB就会专门为它开辟一个暂时函数任务空间(Function workspace)。一切中间变量都存放在函数任务空间中。当执行完文件最后一条指令或遇到return时,就终了该函数文件的运转,同时该暂时函数空间及其一切的中间变量就立刻被去除。MATLAB允许运用比“标称数目较少的输入输出宗量,实现对函数的调用。函数空间随详细M函数文件的被调用而产生,随调用终了而删除。函数空间是相对独立的、暂时的。

3、在MATLAB整个运转期间,可以产生恣意多个暂时函数空间。假设在函数文件中,发生对某脚本文件的调用,那么该脚本文件运转产生的一切变量都存放于该函数空间之中,而不是存放在根本空间。例:把前例计算fibonnaci数的脚本文件改成函数文件如下:function f=fibo(N)%FIBO; 计算参数N个Fibonnaci数的函数文件%f=fibo(N); N可取恣意自然数%.%编写于.f(1)=1; %初始化1f(2)=1; %初始化2for n=1:N f(n+2)=f(n)+f(n+1);end;3、部分变量和全局变量部分Local变量它存在于函数空间内部的中间变量,产生于该函数的运转过程中

4、,其影响范围也仅限于该函数本身。全局Global变量经过global指令,MATLAB也允许几个不同的函数空间以及根本空间共享一个变量。这种被共享的变量称为全局变量。每个希望共享全局变量的函数或MATLAB根本任务空间,必需逐个用global对详细变量加以专门定义。没采用global定义的函数或根本空间,将无权享用全局变量。假设某个函数的运作使全局变量的内容发生了变化,那么其他函数空间以及根本任务空间中的同名变量也就随之变化。除非与全局变量联络的一切任务空间都被删除,否那么全局变量依然存在。3、部分变量和全局变量4、M文件的普通构造由于从构造上看,脚本文件只是比函数文件少一个“函数声明行。典型

5、M函数文件的构造:函数声明定义行(Function declaration line):H1行(The first help text line):在线协助文本(Help text)区:编写和修正记录:函数体(Function body):函数声明定义行(Function declaration line)位于函数文件的首行,以MATLAB关键字function开头,函数名以及函数的输入输出宗量都在这一行定义。H1行(The first help text line):紧随函数声明行之后以%开头的第一注释行。按MATLAB本身文件的规那么,H1行包含:大写体的函数文件名;运用关键词简要描画的函

6、数功能。该H1行供lookfor关键词查询和help在线协助运用。在线协助文本(Help text)区:H1行及其之后的延续以%开头的一切注释行构成整个在线协助文本。它通常包括:函数输入输出宗量的含义,调用格式阐明。编写和修正记录与在线协助文本区相隔一个空行,也以%开头,标志编写及修正该M文件的作者和日期、版本记录。它用于软件档案管理。函数体(Function body):为明晰起见,它与前面的注释行以空行相隔。这部分内容由实现该M函数文件功能的MATLAB指令组成。它接纳输入宗量,进展程序流控制,得到输出宗量。其中为阅读、了解方便,也配置适当的空行和注释。假设注解行很多,可以用注解块操作符%

7、5、变量的检测传送和限权运用函数 输入输出宗量检测指令跨空间变量传送子函数和私用函数输入输出宗量检测指令nargin在函数体内,用于获取实践输入宗量nargout在函数体内,用于获取实践输出宗量nargin(fun)获取fun指定函数的标称输入宗量数nargout(fun)获取fun指定函数的标称输出宗量数inputname(n)在函数体内运用,给出第n个输入宗量的实践调用变量名跨空间变量传送全局变量函数输入参数跨空间计算串表达式的值跨空间赋值跨空间计算串表达式的值evalin(workspace,expression)跨空间计算串表达式值workspace可取两个值:base和callerB

8、ase:表示计算eval(expression时,将从根本任务空间获得变量值。Caller:表示计算eval(expression时,将从主调函数任务空间获得变量值。主调函数是相对被调函数而言的。这里,被调函数是指evalin所在的函数。evalin(workspace,expression1, expression2)跨空间计算替代串表达式值workspace可取两个值:base和caller该调用格式的执行机理:先从所在函数空间获得变量值用eval(expression1计算原串表达式;假设该计算失败,那么在从workspace 指定的根本或主调函数任务空间获取变量值,再经过eval(ex

9、pression2计算替代串表达式 。跨空间赋值assignin(workspace,VN,x)把当前任务空间内变量x的值赋给workspace指定空间名的VN变量。子函数MATLAB允许一个M函数文件包含多个函数的代码。其中,第一个出现的函数称为主函数(Primary function),该文件中的其他函数称为子函数(Subfunction)。保管时所用的函数名与主函数定义名一样。外部程序只能对主函数进展调用。子函数的性质:每个子函数的第一行是其本人的函数声明行。在M函数文件内,主函数的位置不可改动,但子函数的陈列次序可恣意改动。子函数只能被处于同一文件的主函数或其他子函数调用。在M函数文件

10、中,任何指令经过“名字对函数进展调用时,子函数的优先级仅次于内装函数。同一文件的主函数、子函数的任务空间都是彼此独立的。各函数间的信息,或经过输入输出宗量传送,或经过全局变量传送,或经过跨空间指令传送。查看子函数的注释用help mainfun/subfun的方式私用部分函数所谓私用部分函数,是指位于private目录上的M文件函数。私用部分函数的性质:私用部分函数的构造与普通M函数完全一样。私用部分函数的只能被private目录的直接父目录上的M函数文件所调用。它不能被其他目录上的任何M函数、M脚本文件或MATLAB指令窗中的命令所调用,也不能被直接父目录上的M脚本文件调用。M文件中,任何指

11、令经过“名字对函数进展调用时,私用部分函数的优先级虽低于内装函数和子函数,但高与其他任何目录上的函数。help,lookfor等指令都不能提供关于私用部分函数的任何协助信息。二、MATLAB的数据类型6种根本数据类型及假设干衍生类型。数据类型Data Types数值Numeric字符串Char元胞Cell构架Structure函数句柄Function handleJAVA类JAVA Class双精度double单精度single整数类Int*,uint*稀疏sparse数据文件MATLAB允许接受的数据文件大致可分为以下几类:以.mat为扩展名的二进制数据文件。以.txt、.dat为扩展名的A

12、SCII码数据文件。以.bmp、.jpg、.tif等为扩展名的图像文件。以.wav为扩展名的声音文件。三、MATLAB控制流for循环构造while循环构造 if-else-end分支构造 switch-case构造 try-catch构造 控制程序流的其它常用指令 1、for循环构造for x=array(commands)endarray也可以为二维mn,此时,以arry的列数n作为循环次数。每次循环时,将数组的每一列向量赋给x2、while循环构造while expression(commands)end当expression为空数组时,条件断定为假假设expression为数组,只需它

13、一切元素的值不为,条件才为真3、if-else-end分支构造单分支双分支多分支if expression (commands)endif expression (commands1)else (commands2)endif expression1 (commands1)elseif expression2 (commands2)else (commandsk)end常用常用该使用方法常被switch-case所取代4、switch-case构造switch express case test1 (commands1)case test2 (commands2)case testk (com

14、mandsk)otherwise(commands)endExpress可以是数值或字符串表达式5、try-catch构造try(commands1)catch(commands2)end组命令1总被执行。假设正确,那么跳出此构造仅当组命令1出现执行错误,组命令2才被执行假设组命令2出错,那么直接退出循环,除非,其中有try catch语句6、控制程序流的其它常用指令指令及使用格式使用说明v=input(message)v=input(message,s)该指令执行时,“控制权”交给键盘;待输入结束,按下Enter键,“控制权”交还MATLAB。message是提示用的字符串。第一种格式用于键

15、入数值、字符串、元胞数组等数据;第二种格式,不管键入什么,总是以字符串形式赋给变量vkeyboard遇到keyboard时,将“控制权”交给键盘,用户可从键盘输入各种MATLAB指令。仅当用户输入return指令后,“控制权”才交还给程序。它与input的区别是:它允许输入任意多个MATLAB指令,而input只能输入赋给变量的值breakbreak指令可导致包含该指令的while、for环终止;也可在if-end,switch-case,try-catch中导致中断continue跳过位于其后的循环中的其他指令,执行循环的下一个迭代pausepause(n)第一种格式使程序暂停执行,等待用户

16、按任意键继续;第二种格式使程序暂停n秒后,再继续执行指令及使用格式使用说明return结束return指令所在函数的执行,而把控制转至主调函数或指令窗。否则,只有待整个被调函数执行完后,才会转出error(message)显示出错信息message,终止程序lasterr显示最新出错原因,并终止程序lastwarm显示MATLAB自动给出的最新警告程序继续运行warning(message)显示警告信息message,程序继续运行6、控制程序流的其它常用指令四、程序调试与优化程序调试概述普通调试技巧程序调试器的运用程序设计的优化M文件调用记录程序调试概述MATLAB的调试器(Debugger)

17、可以迅速地帮您找出程序错误所在,其功能包含:查询每一个函数的任务空间(Workspace).显示函数调用的堆栈(Function Call Stack).一行一行地执行M文件.普通调试技巧普通而言,计算机程序能够发生的错误可分为两种:语法错误Syntax Errors逻辑错误Logic Errors普通检测逻辑错误的方法:删除表达式最尾端的分号。假设调试一个单独函数,可在其第一行的函数声明行加上%,并定义输入变量的值,直接以脚本的方式来执行此M文件,并保管一切变量于MATLAB任务空间中,以便后续查看及调试。在程序中参与keyboard命令,可使程序执行至此处即暂停,并显示“k的提示号。此时可恣意查看或改动任务空间的任何变量。假设要继续执行程序,可在命令窗输入“return并按下Enter键。运用MATLAB程序调试器。程序设计的优化以矩阵运算替代循环运算数据的预定义内存的管理五、函数句柄函数句柄(Function handle)是MATLAB6.0版启用的新数据类型。它保管着“为该函数创建句柄时的途径、视野、函数名,以及能够存在的重载方法。函数句柄的创建和察看函数句柄并不是伴随函数文

温馨提示

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

评论

0/150

提交评论