




已阅读5页,还剩48页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
MATLAB 7 简明教程 清华大学出版社 第10章 MATLAB 7程序设计 教学目标 教学重点 教学过程 Date 1第10章 MATLAB 7程序设计 MATLAB 7 简明教程 清华大学出版社 教学目标 用交互式的方式来编写程序适用于命 令行比较简单,输入比较方便,同时 处理的问题步骤较少的情况。 当需要处理重复、复杂且容易出错的 问题时,可以进行控制流的程序设计 ,这就是M文件的编程工作方式。 Date 2第10章 MATLAB 7程序设计 MATLAB 7 简明教程 清华大学出版社 教学重点 MATLAB 7的控制流语言 变量和函数的种类 了解程序的调试和优化 Date 3第10章 MATLAB 7程序设计 MATLAB 7 简明教程 清华大学出版社 教学过程 M文本编辑器的基本知识 MATLAB 7的控制流语言 变量和函数的种类 程序设计的辅助函数 程序的调试和优化 Date 4第10章 MATLAB 7程序设计 MATLAB 7 简明教程 清华大学出版社 1. M文本编辑器的基本知识 M文本编辑器 M文件的基本属性 M文件的组成部分 脚本式M文件 函数式M文件 Date 5第10章 MATLAB 7程序设计 MATLAB 7 简明教程 清华大学出版社 (1)M文本编辑器 M文件的语法类似于一般高级语言, 是一种程序化的编程语言,但是,与 传统的高级语言相比,M文件又有自 己的特点。它只是一个简单的ASC 型码文本文件,因此,它的语法比一 般的高级语言要简单,程序也容易调 试,并且有很好的交互性。 Date 6第10章 MATLAB 7程序设计 MATLAB 7 简明教程 清华大学出版社 M文件的基本属性 M文件有两种,一种为脚本式(Script) ,一种为函数式(Function) 。 函数M文件必须满足一些标准,另外,它们还 应该满足一些MATLAB 7的属性。主要有以下 几点: 函数式M文件名和出现在文件的第一行的函数名必 须相同。实际上,MATLAB 7忽略了第一行的函数 名,并且根据存储在硬盘上的文件名来执行函数 。 Date 7第10章 MATLAB 7程序设计 MATLAB 7 简明教程 清华大学出版社 M文件的组成部分 函数式M文件的组成部分。 调出Medit窗口,在里边输入如下内容: function f = fact(n) %函数的定义行 % Compute a factorial value. %H1行 % FACT(N) returns the factorial of N, %帮助文本 % usually denoted by N! % Put simply, FACT(N) is PROD(1:N). %注释 f = prod(1:n); % 函数体 Date 8第10章 MATLAB 7程序设计 MATLAB 7 简明教程 清华大学出版社 M文件的组成部分及其功能 M文件的组成部分及其功能 组 成 部 分描 述 函数定义行(仅限于 函数式M文件) 定义函数名,以及输入和输出变量的数目和顺序 H1 行H1行对程序进行概括性的描述,使用help和lookfor命令都可以调出 此行 帮助文本这是比H1 行更详细 的帮助信息,使用help命令时与H1行一起显示 函数体函数体是M文件的主要部分,程序的计算和设计 都在此实现 注释解释程序行的意义 Date 9第10章 MATLAB 7程序设计 MATLAB 7 简明教程 清华大学出版社 (2)脚本式M文件 用户可以将需要重复输入的所有命令按顺 序放到一个扩展名为m的文本文件下,每 次运行时只要输入该M文件的文件名即可 。 用户自己创建的M文件的文件名要避免与 MATLAB 7的内置函数和工具箱中的函数 重名,以免发生内置函数被替换的情况。 Date 10第10章 MATLAB 7程序设计 MATLAB 7 简明教程 清华大学出版社 脚本式M文件举例 本脚本式M文件 绘制一个正弦曲 线: %此文件用于绘制【 2pi,2pi】区间 的正弦曲线图 x=-2*pi:0.05:2*pi; y=sin(x); plot(x,y,c+) legend(正弦曲线图) Date 11第10章 MATLAB 7程序设计 MATLAB 7 简明教程 清华大学出版社 (3)函数式M文件 函数式M文件一般都要自带参数,并且有 返回结果 。 函数式M文件的第一行都是以function开 始,说明此文件是一个函数。函数式M文 件中的变量都不是全局变量,仅在函数运 行期间有效,函数运行完毕之后,它所定 义的变量将从工作区间中清除。 Date 12第10章 MATLAB 7程序设计 MATLAB 7 简明教程 清华大学出版社 函数式M文件举例 例11-4 判断某一年是否 为闰年。 解:调出Medit窗口,在 里边输入如下内容。 %该函数用于判断某一 年是否为闰年 %使用格式为 isleapea(y),其中y是用户 所要计算的年份 function isleapyear(year) sign=0; if rem(year,4)=0 sign=sign+1; end if rem(year,100)=0 sign=sign-1; end if rem(year,400)=0 sign=sign+1; end if sign=1 fprintf(%4d year is a leap year.n,year) else fprintf(%4d year is not a leap year.n,year) end Date 13第10章 MATLAB 7程序设计 MATLAB 7 简明教程 清华大学出版社 2. 控制流 最简单的程序控制就是顺序结构,用户依 次输入命令语句即可。 MATLAB 7语言还提供了4种高级的控制 结构。它们是:if-else-end结构、switch- case-otherwise-end结构、for循环和 while循环。 Date 14第10章 MATLAB 7程序设计 MATLAB 7 简明教程 清华大学出版社 (1)顺序结构 顺序结构是最简单的程序结构,用户在编 写好程序之后,系统将按照程序的物理位 置顺次执行。 a=1; b=2; c=3; s1=a+b s2=s1+c s3=s2/s2 Date 15第10章 MATLAB 7程序设计 MATLAB 7 简明教程 清华大学出版社 (2)ifend语句 只有一种选择时的情况 if 表达式 执行语句 end Date 16第10章 MATLAB 7程序设计 MATLAB 7 简明教程 清华大学出版社 ifend语句 有两种选择时的情况 if 表达式 执行语句1 else 执行语句2 end Date 17第10章 MATLAB 7程序设计 MATLAB 7 简明教程 清华大学出版社 ifend语句 有3种或3种以上选择时的情况 if 表达式1 表达式1为真时的执行语句1 elseif表达式2 表达式2为真时的执行语句2 elseif表达式3 表达式3为真时的执行语句3 elseif else 所有的表达式都为假时的执行语句 end Date 18第10章 MATLAB 7程序设计 MATLAB 7 简明教程 清华大学出版社 (3) switchcaseend语句 switch开关语句 case条件语句, 执行语句,执行语句 case 条件语句1,条件语句2, 条件语句3 , 执行语句,执行语句 otherwise, 执行语句,执行语句 end Date 19第10章 MATLAB 7程序设计 MATLAB 7 简明教程 清华大学出版社 (4) trycatchend try-catch模块给用户提供了一种错误捕获机制 。换句话说,利用try-catch模块,MATLAB 7编 译系统发现的错误将被其捕获,用户可以控制 MATLAB 7怎样对发生的错误进行处理。 try 执行语句1 catch 执行语句 2 end Date 20第10章 MATLAB 7程序设计 MATLAB 7 简明教程 清华大学出版社 (5) for循环语句 For语句是一种循环语句,可以让用 户很方地实现循环操作,从而可以从 容地应付大规模的循环语句。 for i =表达式, 执行语句,执行语句 end Date 21第10章 MATLAB 7程序设计 MATLAB 7 简明教程 清华大学出版社 (6)while循环语句 与for循环不同,while循环的判断控制可 以是逻辑判断语句,因此,它的循环次数 可以是一个不定数。这样就赋予了它比 for循环更广泛的用途。 while表达式 执行语句 end Date 22第10章 MATLAB 7程序设计 MATLAB 7 简明教程 清华大学出版社 (7) 人机交互命令 终止命令break和return 继续命令continue 等待用户反应命令pause echo命令 用户输入提示命令input 请求键盘输入命令keyboard Date 23第10章 MATLAB 7程序设计 MATLAB 7 简明教程 清华大学出版社 3. 变量和函数种类 与其他语言一样,MATLAB 7的变量 有输入变量、输出变量和函数内使用 的变量之分,而函数也有主函数、局 部函数和子函数之分,本节将介绍这 些不同种类变量和函数的特点。 Date 24第10章 MATLAB 7程序设计 MATLAB 7 简明教程 清华大学出版社 (1). 函数变量及其作用域 在MATLAB 7语言中,变量可以分为输入变量 、输出变量和函数内使用的变量。 输入变量相当于函数的入口数据,也是一个函 数操作的主要对象,从某种意义上来说,函数 的功能在于对输入变量进行一定的操作从而实 现一定的功能。函数的输入变量为局部变量, 函数对输入变量的一切操作和修改如果不依靠 输出变量的话,将不会影响工作区间中该变量 的值。 Date 25第10章 MATLAB 7程序设计 MATLAB 7 简明教程 清华大学出版社 函数变量及其作用域 变量的输入和输出规则 局部变量 全局变量 永久变量 Date 26第10章 MATLAB 7程序设计 MATLAB 7 简明教程 清华大学出版社 变量的输入和输出规则 MATLAB 7可以有任意数量的输入和输出 变量。这些参数的特性和规则如下所示: (1) 函数式M文件可以没有输入和输出变量。 (2) 函数可以用比M文件中的函数定义行所规定的输 入输出变量更少的变量进行调用。但是不能用比规定 的输入输出变量更多的变量进行调用。 (3) 在一次调用中所用到的输入和输出变量的个数可 以通过分别调用函数nargin和nargout来确定。因为 nargin和nargout是函数而不是变量,所以用户不能 用诸如nargin=nargin+pi之类的语句对它们进行重新 赋值。 Date 27第10章 MATLAB 7程序设计 MATLAB 7 简明教程 清华大学出版社 局部变量 局部变量是在函数内部使用的变量, 其影响范围只能在本函数内,每个函 数在运行时,都占有独立的函数工作 空间,此工作空间和MATLAB的工作 空间时相互独立的,局部变量仅存在 于函数的工作空间内。当函数执行完 毕之后,该变量即自行消失。 Date 28第10章 MATLAB 7程序设计 MATLAB 7 简明教程 清华大学出版社 全局变量 在MATLAB 7语言中,函数内部定义 的变量都是局部变量,它们不被加载 到工作区间中。有时,用户需要使用 全局变量,这时要使用global函数来 进行定义,而且在任何使用该全局变 量的函数中都应加以定义,即使是在 命令窗口也不例外。 Date 29第10章 MATLAB 7程序设计 MATLAB 7 简明教程 清华大学出版社 永久变量 除了通过全局变量共享数据外,函数式M 文件还可以通过声明一个变量persistent 来对函数中重复使用和递归调用的变量的 访问进行限制,使用格式形如persistent (X Y Z)。永久变量与全局变量类似,但 是它的范围被限制在声明这些变量的函数 内部,不允许在其他的函数中对它们进行 改变。只要M文件还在MATLAB 7的内存 中,永久变量就存在。 Date 30第10章 MATLAB 7程序设计 MATLAB 7 简明教程 清华大学出版社 (2)函数的分类 主函数 匿名函数 嵌套式函数 子函数 局部函数 Date 31第10章 MATLAB 7程序设计 MATLAB 7 简明教程 清华大学出版社 主函数 M文件中的第一个函数就叫做主函数,前边章节中所引 用的函数事实上都是主函数,主函数之后可以是任意数 量的子函数, 它们可以作为主程序的子程序。一般来 说,在命令窗口或是其他的M文件只能调用主函数,调 用的时候就是直接调用其函数名。 比如,函数average的M文件average.m如下: function y = average(x) % AVERAGE Mean of vector elements. y = sum(x)/length(x); % Actual computation Date 32第10章 MATLAB 7程序设计 MATLAB 7 简明教程 清华大学出版社 匿名函数 匿名函数提供了一种创建简单程序的方法 ,使用它用户可以不必每次都编写M文件 。用户可以在MATLAB 7的命令窗口或是 其他任意M文件和脚本文件中使用匿名函 数。 匿名函数的格式如下所示。 fhandle = (arglist) expr Date 33第10章 MATLAB 7程序设计 MATLAB 7 简明教程 清华大学出版社 嵌套式函数 在MATLAB 7中,可以在一个函数的内部 定义一个或多个其他的函数,这些在内部 定义的函数被称作嵌套式函数,应当注意 的是,在嵌套式函数的内部也可以定义嵌 套式函数。 定义嵌套式函数时,只需在另一个M文件 的内部定义该函数即可,同其他M文件一 样, 嵌套式函数包含有M文件的所有基本 部分。 Date 34第10章 MATLAB 7程序设计 MATLAB 7 简明教程 清华大学出版社 子函数 与其他的高级语言一样,在MATLAB 7语言中也可以很方便地定义子函数 ,用来扩充函数的功能。在函数文件 中题头定义的函数为主函数,而在函 数体内定义的其他函数都被视为子函 数。子函数只能为主函数或同一主函 数下的其他子函数所使用。 Date 35第10章 MATLAB 7程序设计 MATLAB 7 简明教程 清华大学出版社 局部函数 MATLAB 7语言中把放置在目录private下的函 数称为局部函数,这些函数只有private目录的 父目录中的函数才可以调用,其他目录下的函 数不能调用。 局部函数与子函数所不同的是,局部函数可以 被其父目录下的所有函数所调用,而子函数则 只能被其所在的M文件的主函数所调用。所以 ,局部函数在可用的范围上大于子函数;在函 数编辑的结构上,局部函数与一般的函数文件 的编辑相同,而子函数只能在主函数文件中编 辑。 Date 36第10章 MATLAB 7程序设计 MATLAB 7 简明教程 清华大学出版社 (3)函数句柄 函数句柄提供了一种间接访问函数的 手段,用户可以很方便地调用其他函 数;提供函数调用过程中的可靠性; 减少程序设计中的冗余; 同时可以 在使用函数的过程中保存函数相关的 信息,尤其是关于函数执行的信息。 Date 37第10章 MATLAB 7程序设计 MATLAB 7 简明教程 清华大学出版社 函数句柄 函数句柄的创建 函数句柄的调用 函数句柄的操作 Date 38第10章 MATLAB 7程序设计 MATLAB 7 简明教程 清华大学出版社 函数句柄的创建 函数句柄的创建比较简单,使用格式 形如: fhandle=functionname 其中fhandle为所创建的函数句柄, functionname为所创建的函数 。 Date 39第10章 MATLAB 7程序设计 MATLAB 7 简明教程 清华大学出版社 函数句柄的创建 trigFun = sin, cos, tan; plot(trigFun2(- pi:0.01:pi) Date 40第10章 MATLAB 7程序设计 MATLAB 7 简明教程 清华大学出版社 函数句柄的调用 function x = plotFHandle(fhandle, data) plot(data, fhandle(data) 在命令窗口中调用程序如下 。 plotFHandle(sin, - pi:0.01:pi) Date 41第10章 MATLAB 7程序设计 MATLAB 7 简明教程 清华大学出版社 函数句柄的操作 函 数 名功 能 描 述 functions返回函数句柄的相关信息 func2str根据函数句柄创建一个函数名的字符串 str2func由一个函数名的字符串创建一个函数句柄 save从当前工作区间向M文件保存函数句柄 load从一个M文件中向当前工作区间调 用函数句柄 isa判断一个变量是否包含由一个函数句柄 isequal判断2个函数句柄是否为某一相同函数的句柄 Date 42第10章 MATLAB 7程序设计 MATLAB 7 简明教程 清华大学出版社 4. 程序设计的辅助函数 执行函数 容错函数 时间运算函数 Date 43第10章 MATLAB 7程序设计 MATLAB 7 简明教程 清华大学出版社 (1)执行函数 执行函数及其功能 函 数 名功 能 描 述 assignin在MATLAB 7工作区间中分配变量 builtin外部加载调 用内置函数 eval字符串调用函数 evalc执行MATLAB 7的表达式 evalin计算工作区间中的表达式 feval字符串调用M文件 run运行脚本文件 Date 44第10章 MATLAB 7程序设计 MATLAB 7 简明教程 清华大学出版社 (2)容错函数 程序设计的好坏在很大程度上取决 于其容错能力的大小。MATLAB 7 语言提供了相应的报错及警告函数 error、warning、lasterr、lastwarn 以及errortrap on/off等,可以很方 便地实现这方面的功能。 Date 45第10章 MATLAB 7程序设计 MATLAB 7 简明教程 清华大学出版社 (3)时间运算函数 常用的时间控制函数及其功能 函 数 名功 能 描 述 clock以向量的形式显示当前的时间 和日期 date以字符型显示当前的日期 now以数值型显示当前的时间 和日期 calendar显示当月的日历表 weekday显示当前日期对应 的星期表达 eomday给出指定年月的当月最后一天 datetick指定坐标轴 的日期表达形式 datevec转换为 向量形式显示日期 Date 46第10章 MATLAB 7程序设计 MATLAB 7 简明教程 清华大学出版社 5. 程序的调试和优化 程序的调试 程序的错误种类 错误的识别和程序调试 程序的优化 程序优劣的分析 程序优化的技巧 有效地使用内存 Date 47第10章 MATLAB 7程序设计 MATLAB 7 简明教程 清华大学出版社 (1)程序的错误种类 在MATLAB 7的表达式中可能存在两种类 型的错误,即语法错误和运行错误 : 语法错误 语法错误发生在M文件程序代码的生成过程中,一般是由函 数参数输入类型有误或是矩阵运算阶数不符等引起。 运行错误 运行错误一般指在程序运行过程中,出现溢出或是死循环等 异常现象。 Date 48第10章 MATLAB 7程序设计 MATLAB 7 简明教程 清华大学出版社 (2)错误的识别和程序调试 对于简单的问题,使用下面的一种或几种方法 可以方便地求解: 将函数中输出关键值的行的分号(;)去掉,这样,这些运算的中 间结果将在命令窗口中予以显示,用户可以据此来检查中间结 果的正确性。 在函数中添加一些语句,用来显示用户认为很重要的变量的值 。 使用keyboard命令中断程序,该命令实现函数工作区间和命令 窗口工作区间的交互,从而获得用户所需要的信息,使用该命 令后,程序将处于调试状态,此时命令窗口的提示符由“”变 为“K”,用户可以进行相应的操作。 在函数头前加“%”,这样就将函数式M文件变为脚本式M文件, 而脚本式M文件运行时,其工作区间就是M
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 智能设备选矿应用-洞察及研究
- 2026届西藏拉萨市达孜县中学数学七上期末统考模拟试题含解析
- 江汉区部分学校2026届八年级数学第一学期期末考试试题含解析
- 山西省九级2026届数学八上期末联考模拟试题含解析
- 安徽省安庆市名校2026届数学八年级第一学期期末学业质量监测模拟试题含解析
- 四、变压器 教学设计高中物理人教版选修1-1-人教版2004
- 海上光伏2025年技术创新与产业链协同效应报告
- 2025年新能源商用车在城市物流配送新能源车辆市场竞争格局分析报告
- 2025年光伏电站智能运维系统在分布式应用场景下的市场前景分析报告
- 2025年风电叶片叶片设计优化与风电场运行稳定性报告
- 2025年机械工程师职称考试题及参考答案
- 统编版2025-2026学年语文五年级上册期中阶段培优情境卷试题(有答案)
- EHS风险管理监测规范制定
- 2025-2026学年上学期七年级历史第一次月考卷(含答案)
- 广东省深圳市龙岗区2024-2025学年七年级上学期语文第一次月考试卷(含答案)
- BIM技术在工程造价动态控制的创新应用
- 供配电站建设项目可行性研究报告
- 2025至2030年中国赛车主题公园行业发展前景预测及投资战略研究报告
- 2024新型电力负荷管理系统建设典型设计宣贯
- 人人享有心理健康
- 2025年信息系统工程师职业资格考试试题及答案
评论
0/150
提交评论