MATLAB编程基础.ppt_第1页
MATLAB编程基础.ppt_第2页
MATLAB编程基础.ppt_第3页
MATLAB编程基础.ppt_第4页
MATLAB编程基础.ppt_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

,第四章MATLAB编程基础,2006年10月,本章讲述的主要内容如下:,流程控制脚本文件和函数文件M文件的调试和性能分析,4.1流程控制,结构化的程序主要有三种基本的程序结构:顺序结构、选择结构、循环结构。选择结构依照不同的判断条件进行判断,然后根据判断的结果选择某一种方法来解决某一个问题。MATLAB用于实现选择结构的语句有if语句、switch语句和try语句。,1.if语句,在MATLAB中,if语句有三种格式。(1)单分支if语句if条件语句组end(2)双分支if语句if条件语句组1else语句组2end,(3)多分支if语句if条件1语句组1elseif条件2语句组2elseif条件m语句组melse语句组m+1end,可以嵌套地使用。,switch语句根据表达式的取值不同,分别执行不同的语句。其语句格式为:switch表达式case表达式1语句组1case表达式2语句组2case表达式m语句组motherwise语句组m+1end,2.switch语句,当表达式的值等于表达式1的值时,执行语句组1,当表达式的值等于表达式2的值时,执行语句组2,,当表达式的值等于表达式m的值时,执行语句组m,当表达式的值不等于case所列的表达式的值时,执行语句组m+1。当任一分支的语句执行完后,直接执行switch语句的下一句。case子句后面的表达式不仅可以为一个标量或一个字符串,而且还可以为一个元胞矩阵,则表达式的值等于该元胞矩阵中的某个元素时,执行相应的语句组。,3.try语句,try语句是一种试探性执行语句。可以进行错误的处理,提高计算的可靠性。语句格式为:try语句组1catch语句组2end,先试探性执行语句组1,如果出现错误,则将错误信息赋给lasterr变量,并转去执行语句组2。,循环结构,循环是指按照给定的条件,重复执行指定的语句。MATLAB提供两种实现循环结构的语句:for语句和while语句。1.for循环for循环允许一组命令以固定的次数重复,语句格式为:for循环变量=表达式1:表达式2:表达式3循环体语句end其中表达式1的值为循环变量的初值,表达式2的值为步长,表达式3的值为循环变量的终值。步长为1时,表达式2可以省略。,可以嵌套使用,for语句的循环变量可以是标量也可以是一个列向量。更一般的格式为:,for循环变量=矩阵表达式循环体语句end,执行过程是依次将矩阵的各列元素赋给循环变量,然后执行循环体语句,直至各列元素处理完毕。,2.while循环,while循环的循环次数不确定,一般格式为:while(条件)循环体语句end,break语句和continue语句,break语句的作用:能够在执行循环体的时候强迫终止循环,即控制程序的流程,使其提前退出循环。continue语句的作用:能够中断本次的循环体运行,将程序的流程跳转到判断循环条件的语句处,继续下一次的循环。,提高运算性能,由于MATLAB采用了解释型语言,执行效率比较低。尽量不要使用这些流程控制命令,尤其是循环控制命令。1.向量化运算通过例子,可以看出采用向量化运算可以提高程序的执行效率。2.预分配存储空间在编写程序时尽量使用内存预分配函数进行内存预分配,少使用或不使用数组内存空间的自动扩充方式,以提高程序的执行效率。,4.2脚本文件和函数文件,M文件有两类:脚本文件(ScriptFile)和函数文件(FunctionFile)。它们的扩展名均为.m。主要区别在于:(1)脚本文件没有输入参数,也不返回输出参数,而函数文件可以带输入参数,也可以返回输出参数。(2)脚本文件对MATLAB工作空间中的变量进行操作,文件中所有命令的执行结果也完全返回到工作空间中,而函数文件中定义的变量为局部变量,当函数文件执行完毕时,这些变量被清除。(3)脚本文件可以直接运行,在MATLAB命令窗口输入脚本文件的名字,就会顺序执行脚本文件中的命令,而函数文件不能直接运行,而要以函数调用的方式来调用它。,脚本文件中常用的MATLAB指令,函数文件,把一个比较大的任务分解为多个比较小的任务,它们之间通过调用实现参数传递,小任务可以是函数。函数文件由function语句引导,其基本结构为:function输出形参表=函数名(输入形参表)注释说明部分函数体语句以function开头的一行为函数定义行,表示M文件是一个函数文件。函数名的命名规则与变量名相同。当输出形参多于一个时,则应用方括号括起来。,说明:,(1)关于函数文件名。函数文件名通常由函数名再加上扩展名.m组成,不过函数文件名与函数名也可以不相同,当不同时,调用时使用函数文件名。最好统一,以免出错。(2)关于注释说明部分。紧随函数定义行之后以%开头的第一注释行。这一行一般包括大写的函数文件名和函数功能简要描述,供lookfor关键词查询和help在线帮助用。第一注释行及之后连续的注释行,构成全部的在线帮助文本。与在线帮助文本相隔一空行的注释行,用于软件档案管理。,1.函数调用,函数调用的一般格式:输出实参表=函数名(输入实参表),注意:调用时各实参出现的顺序和个数,函数可以嵌套调用,即一个函数可以调用别的函数,甚至调用它自身(也就是递归调用),2.输入输出参数(1)函数所传递参数数目的可调性。在调用函数时,MATLAB用两个永久变量nargin和nargout分别记录调用该函数时的输入实参和输出实参的个数。凭借这一点,一个函数可完成多种功能。,(2)输入输出参数的不确定性。,M函数文件可以具有个数不确定的输入输出参数,完成该功能主要依靠varargin和varargout函数。使用varargin函数接受M函数参数时,将所有输入参数构建成一个元胞矩阵。过程unpacking:从元胞矩阵varargin中正确提取变量。过程packing:将函数的输出参数传递给元胞矩阵varargout。,3.子函数和私有函数,(1)子函数同一个函数文件可以包含多个函数。将出现在文件中的第一个M函数称为主函数,其余的函数称为子函数。函数文件的名称与主函数的名称保持一致。(2)私有函数这类函数被放置在private子目录中。只要将那些需要设置为私有的函数copy到一个private子目录中,则这些函数就能被位于父层目录中的M函数调用。,4.局部变量和全局变量,函数有它们自己的专用工作空间,它与MATLAB的基本工作空间分开。当函数执行完毕,则函数的工作空间就不存在了。函数内所创建的变量(局部变量)只驻留在函数的工作空间,而且只在函数执行期间临时存在,以后就消失。使用global命令可以将变量说明为全局的,全局变量被保存在特殊的工作空间中,则在函数、命令行等都可以共享这些变量。在实际应用中,应当尽量避免使用全局变量。要是用了全局变量,建议全局变量名要长,并有选择地以首次出现的M文件的名字开头。如果遵循建议,则在全局变量之间不必要的互作用减至最小。,clearclearall,5.函数执行规则,MATLAB解释器解析命令按照一定的优先级进行。例如,命令行输入cool,MATLAB首先认为cool是一个变量。如果它不是,那么MATLAB认为它是一个内建函数。如果还不是,MATLAB检查cool.m是否在当前的目录或文件夹。如果它不存在,MATLAB就检查cool.m在MATLAB搜寻路径上的所有目录或文件夹。,4.3M文件的调试和性能分析,M文件的调试在文件编辑器中可以对M脚本文件、函数文件进行调试,以排查程序的错误。设置断点(用户自定义和自动断点类型)程序运行中断,进入调试状态;命令行窗口也处于调试状态,命令提示符为K程序退出调试状态,dbquit。,whos,M文件性能分析,使用M文件性能分析器有两种方法:(1)通过命令行profileon%开启性能分析器清除前面统计%运行需要分析的M文件profilereport%创建性能分析的总结文档(2)通过图形用户界面Start菜单中MATLAB子菜单下“Profiler”命令或者profview打开图形用户界面。,例4.1,输入一个字符,若为大写字母,则输出其后继字符,若为小写字母,则输出其前导字符,若为数字字符则输出其对应的数值,若为其他字符则原样输出。,例4.2,矩阵乘法要求两矩阵的维数相容,即两矩阵可乘,否则会出错。先求两矩阵的乘积,若出错,则自动转去求两矩阵的点乘。,例4.3,已知5个学生4门功课的成绩,求每名学生的总成绩。,例4.4,例4.5,nargin和nargout用法示例。,例4.6,不确定的输入输出参数。,元胞矩阵,元胞矩阵把不同属性的数据放在一个变量中。元胞矩阵也可以是多维矩阵。1.元胞矩阵的创建(1)直接输入法创建时需要使用。例如:a=10,Liu,11,21;34,78;12,Wang,34,191;27,578(2)函数创建cell创建空元胞矩阵例如:b=cell(2,3),2.元胞矩阵的访问,单下标和全下标两种方式。使用圆括号“()”直接访问元胞矩阵的元胞。获取的数据也是元胞类型。A()使用花括号“”直接获取元胞矩阵的元胞的内容。获取的数据是元胞的内容的数据类型。A例如:a(2,2)a(4)a2,2a4a2,2(2),3.元胞矩阵的扩充、收缩、重组,元胞矩阵A、BC=A,BC由A、B扩充得到的一个元胞矩阵。D=A,B;C利用空矩阵可以收缩元胞矩阵。利用reshape函数对元胞矩阵进行重组。操作元胞矩阵时,可以使用针对一般矩阵的操作方法。,A、B行数相同,4.元胞矩阵的操作函数,cellfun为元胞矩阵的每个元胞执行指定的函数。celldisp显示所有元胞的内容cellplot利用图形方式显示元胞矩阵,结构矩阵,MATLAB通过使用结构数据类型把一组不同类型,同时又相关的数据组成一个有机的整体,以便于管理和引用,比如要存储学生的基本情况数据就可以采用结构数据。1.创建结构矩阵(1)直接赋值法结构矩阵名.成员名=表达式例如:创建一个含有3个元素的结构

温馨提示

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

评论

0/150

提交评论