MATLAB_R2007基础教程ch07
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第20页
2015年12月4日
MATLAB R2007基础教程
清华大学出版社
6.3 函数变量
6.3.1 变量类型 局部变量 全局变量 永久变量
2015年12月4日
第21页
MATLAB R2007基础教程
清华大学出版社
局部变量
每个函数都有自己的局部变量,这些变量存储在该函数独 立的工作区中,与其他函数的变量及主工作区中的变量分 开存储。当函数调用结束时,这些变量随之删除,不保存 在内存中。并且,除了函数返回值,该函数不改变工作区 中其他变量的值。 然而脚本文件没有独立的工作区,当通过命令窗口调用脚 本文件时,脚本文件分享主工作区,当函数调用脚本文件 时,脚本文件分享主调函数的工作区。需要注意的是,如 果脚本中改变了工作区中变量的值,则在脚本文件调用结 束后,该变量的值发生改变。 在函数中,变量默认为局部变量。
函数定义语句只在函数文件中存在,定义函数名 称、输入输出参数的数量和顺序。函数定义语句 的格式为:
function y = fact(x)。
2015年12月4日
第6页
MATLAB R2007基础教程
清华大学出版社
函数式M文件 函数式 M 文件比脚本式 M 文件相对复杂一些,脚本文件 不需要自带参数,也不一定返回结果,而函数文件一般要 自带参数,并且有返回结果,以便于更好的把整个程序连 为一段。函数文件也可以不带参数,此时文件中一般使用 一些全局变量来实现与外界和其他函数之间的数据交换。 函数文件的第一行以 function 开始,说明此文件是一个 函数。其实质为用户向 MATLAB 函数库中添加的子函数。 在默认情况下,函数文件中的变量都是局部变量,仅在函 数运行期间有效,函数运行结束后,这些变量将从工作区 中清除。
2015年12月4日
第10页
MATLAB R2007基础教程
清华大学出版社
if…end 此时的程序结构如下:
if 表达式 执行代码块 end
这是最简单的判断语句,只有一个判断语句,其 中的表达式为逻辑表达式,当表达式为真时,执 行相应的语句,否则,直接跳到下一段语句。
2015年12月4日
2015年12月4日
第7页
MATLAB R2007基础教程
清华大学出版社
函数流程控制
顺序结构 判断语句(if…else…end) 分支语句 循环语句 try…catch…end语句 其他流程控制函数
2015年12月4日
第8页
MATLAB R2007基础教程
清华大学出版社
顺序结构
第15页
2015年12月4日
MATLAB R2007基础教程
清华大学出版社
循环语句
for 语句 while 语句
2015年12月4日
第16页
MATLAB R2007基础教程
清华大学出版社
1.for 语句
for 语句将相同的代码执行预定义的次数。 for 语句的结构为:
for 循环变量 = 表达式 执行代码块 end
顺序结构是最简单的程序结构,系统在编 译程序时,按照程序的物理位置顺序执行。 这种程序容易编制,但是结构单一,能够 实现的功能有限。
2015年12月4日
第9页
MATLAB R2007基础教程
清华大学出版社
判断语句(if…else…end)
if…end if…else…end if…elseif…else…end
清华大学出版社
教学内容
M文本文件介绍 函数流程控制 函数变量 函数类型 函数操作 MATLAB 编程错误处理 程序设计的辅助函数 调试程序 优化程序
第4页
2015年12月4日
MATLAB R2007基础教程
清华大学出版社
M文本文件介绍
一个 M 文件通常包含五个部分,函数定义语句、H1 帮助 行、帮助文本、函数体或者脚本文件语句和注释语句。 H1 行为紧随函数定义语句后面的一行注释语句。当用户 通过 help 命令查询该函数的说明信息时 H1 行显示为第 一行,另外 lookfor 函数只检索和显示 H1 行。帮助文本 为 H1 行后面连续的注释行,当在命令窗口中通过 help 命令查询该函数的说明信息时则在窗口中显示这些内容。 函数体为 M 文件的主要部分,是函数的执行代码。除上 面的 H1 行和帮助文本外,为了易于理解,可以在书写代 码时添加注释语句。这些注释语句在编译程序时会被忽略, 因此不会影响编译速度和程序运行速度,但是能够增加程 序的可读性。
MATLAB MATLAB R2007 R2007基础教程 基础教程
清华大学出版社 清华大学出版社
第7章 MATLAB 2007程序设计
教学目标 教学重点 教学内容
2015年12月4日
第1页
MATLAB R2007基础教程
清华大学出版社
教学目标
熟悉 MATLAB 的编程环境 掌握 MATLAB 的变量类型 掌握 MATLAB 中的流程控制语句 掌握 MATLAB 的函数类型和函数操作 了解 MATLAB 中的错误处理 了解 MATLAB 程序调试方法 了解 MATLAB 代码优化方法
2015年12月4日 第2页
MATLAB R2007基础教程
清华大学出版社
教学重点
MATLAB 的编程环境 MATLAB 的变量类型 MATLAB 中的流程控制语句 MATLAB 的函数类型和函数操作 MATLAB 程序调试方法
2015年12月4日
第3页
MATLAB R2007基础教程
while 表达式 执行代码块 end
2015年12月4日
第18页
MATLAB R2007基础教程
清华大学出版社
6.2.5 try…catch…end语句
MATLAB 中的另一种判断语句为 try…catch 语句,这种语句可以包 容程序运行中的错误,并返回错误类型。这种语句的结构为:
try 运行代码块 catch 运行代码块 end
第11页
MATLAB R2007基础教程
清华大学出版社
if…else…end 当程序有两个选择时,可以选择 if…else…end 结构,此时程序结构为:
if 表达式 执行代码块1 else 执行代码块2 end
当判断表达式为真时,执行代码块1,否则执行代 码块2。
第12页
2015年12月4日
– 只能在 M 文件内部定义; – 只有该变量从属的函数能够访问该变量; – 当函数运行结束时,该变量的值保留在内存中,因此 当该函数再次被调用时,可以再次利用这些变量。
永久变量的定义方法为:
persistent 变量名1 变量名2。
2015年12月4日
第24页
MATLAB R2007基础教程
清华大学出版社
MATLAB R2007基础教程
清华大学出版社
if…elseif…else…end 上面的两种形式中,分别包含一个选择和两个选择,当判断包含多个 选择时,可以采用elseif 语句,结构为:
if 表达式1 执行代码块1 elseif 表达式2 执行代码块2 elseif ...... ...... ...... else 执行代码块 end
第5页
2015年12月4日
MATLAB R2007基础教程
清华大学出版社
一个完整的 M 文件的结构为:
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); 函数体
该语句首先从上到下依次执行,如果遇到程序错误则运行下一个 catch 中的语句,依次向下进行。如果程序运行成功,则退出该判断 语句。如果在 catch 和 end之间的程序运行出错,则程序运行终止, 或者如果存在其他的 try…catch 结构,则运行下一个 try…catch 结 构。可以利用 lasterr 命令查看发生错误的原因。
其中可以包含任意多个 elseif 语句。
2015年12月4日
第13页
MATLAB R2007基础教程
清华大学出版社
分支语句
上一节中的 if…elseif…else…end 语句可以适用于多种 选择的流程控制,此时对 else之外的每一个选择语句设 置一个表达式,表达式为真时则执行该模块。MATLAB 中的另一种多选择语句为分支语句。分支语句的结构为:
2015年12月4日
第22页
MATLAB R2007基础教程
清华大学出版社
全局变量
局部变量只在一个工作区内有效,无论是函数工作区还是 MATLAB 主工作区。与局部变量不同,全局变量可以在 定义该变量的全部工作区中有效。当在一个工作区内改变 该变量的值时,该变量在其他工作区中的变量同时改变。 任何函数如果需要使用全局变量,则必须首先声明,声明 格式为:
fhandle = @(arglist) expr
for 循环的语句在前面的例子中已经有所涉 及,上节的例子中,第二个程序中也涉及 到了 for 循环语句。下面为 for 循环的更多 例子。
第17页
2015年12月4日
MATLAB R2007基础教程
清华大学出版社
2.while 语句
while 语句用于将相同的代码块执行多次, 但是次数并不预先指定,当 while 的条件 表达式为真时,执行代码块,直到条件表 达式为假。while 语句的结构为:
switch 分支语句 case 条件语句 执行代码块 case {条件语句1, 条件语句2, 条件语句3, ...} 执行代码块 otherwise 执行代码块 end
2015年12月4日
第14页
MATLAB ห้องสมุดไป่ตู้2007基础教程
清华大学出版社
其中的分支语句为一个变量,可以是数值变量或 者字符串变量,如果该变量的值与某一条件相符, 则执行相应的语句,否则,执行 otherwise 后面 的语句。在每一个条件中,可以包含一个条件语 句,可以包含多个条件,当包含多个条件时,将 条件以单元数组的形式表示。 MATLAB 的分支语句类似于 C 语言的分支语句, 但是又不完全相同:MATLAB 语句从上到下依次 判断条件,条件符合则执行相应的代码块,之后 退出该分支语句,因此在代码块后面不需要添加 “break”语句。
6.4 函数类型
6.4.1 6.4.2 6.4.3 6.4.4 6.4.5 6.4.6
匿名函数 主函数 子函数 嵌套函数 私有函数 重载函数
2015年12月4日
第25页
MATLAB R2007基础教程
清华大学出版社
匿名函数
关于匿名函数在前面“MATLAB 的数学运算”一章中已 有初步涉及,在“函数运算”一节的示例中用到了大量的 匿名函数。本节对匿名函数做进一步的介绍。 匿名函数提供了一种创建简单程序的方法,使用它用户可 以不必每次都编写 M 文件。用户可以在 MATLAB 的命令 窗口或是其他任意 M 文件和脚本文件中使用匿名函数。 匿名函数的格式为:
2015年12月4日
第19页
MATLAB R2007基础教程
清华大学出版社
6.2.6 其他流程控制函数
continue:continue 语句通常用在循环控制中, 包括 for 循环和 while 循环,用于结束当次循环, 继续执行下一次循环,但是不结束当前循环。一 般 continue 语句与 if 语句相结合,当满足一定 的条件时,执行 continue 语句。 break:与 continue 相同的是,break 函数也是 用于循环控制,中断当前循环。与 continue 不 同,break 跳出当前循环,不再执行该循环的任 何操作。 return:结束该程序的执行,返回到调用函数或 者键盘。
global 变量名1 变量名2
如果一个 M 文件中包含的子函数需要访问全局变量,则 需在子函数中声明该变量,如果需要在命令行中访问该变 量,则需在命令行中声明该变量。
2015年12月4日
第23页
MATLAB R2007基础教程
清华大学出版社
永久变量
除局部变量和全局变量外,MATLAB 中还有一种 变量类型为永久变量。永久变量的特点为:
2015年12月4日
MATLAB R2007基础教程
清华大学出版社
6.3 函数变量
6.3.1 变量类型 局部变量 全局变量 永久变量
2015年12月4日
第21页
MATLAB R2007基础教程
清华大学出版社
局部变量
每个函数都有自己的局部变量,这些变量存储在该函数独 立的工作区中,与其他函数的变量及主工作区中的变量分 开存储。当函数调用结束时,这些变量随之删除,不保存 在内存中。并且,除了函数返回值,该函数不改变工作区 中其他变量的值。 然而脚本文件没有独立的工作区,当通过命令窗口调用脚 本文件时,脚本文件分享主工作区,当函数调用脚本文件 时,脚本文件分享主调函数的工作区。需要注意的是,如 果脚本中改变了工作区中变量的值,则在脚本文件调用结 束后,该变量的值发生改变。 在函数中,变量默认为局部变量。
函数定义语句只在函数文件中存在,定义函数名 称、输入输出参数的数量和顺序。函数定义语句 的格式为:
function y = fact(x)。
2015年12月4日
第6页
MATLAB R2007基础教程
清华大学出版社
函数式M文件 函数式 M 文件比脚本式 M 文件相对复杂一些,脚本文件 不需要自带参数,也不一定返回结果,而函数文件一般要 自带参数,并且有返回结果,以便于更好的把整个程序连 为一段。函数文件也可以不带参数,此时文件中一般使用 一些全局变量来实现与外界和其他函数之间的数据交换。 函数文件的第一行以 function 开始,说明此文件是一个 函数。其实质为用户向 MATLAB 函数库中添加的子函数。 在默认情况下,函数文件中的变量都是局部变量,仅在函 数运行期间有效,函数运行结束后,这些变量将从工作区 中清除。
2015年12月4日
第10页
MATLAB R2007基础教程
清华大学出版社
if…end 此时的程序结构如下:
if 表达式 执行代码块 end
这是最简单的判断语句,只有一个判断语句,其 中的表达式为逻辑表达式,当表达式为真时,执 行相应的语句,否则,直接跳到下一段语句。
2015年12月4日
2015年12月4日
第7页
MATLAB R2007基础教程
清华大学出版社
函数流程控制
顺序结构 判断语句(if…else…end) 分支语句 循环语句 try…catch…end语句 其他流程控制函数
2015年12月4日
第8页
MATLAB R2007基础教程
清华大学出版社
顺序结构
第15页
2015年12月4日
MATLAB R2007基础教程
清华大学出版社
循环语句
for 语句 while 语句
2015年12月4日
第16页
MATLAB R2007基础教程
清华大学出版社
1.for 语句
for 语句将相同的代码执行预定义的次数。 for 语句的结构为:
for 循环变量 = 表达式 执行代码块 end
顺序结构是最简单的程序结构,系统在编 译程序时,按照程序的物理位置顺序执行。 这种程序容易编制,但是结构单一,能够 实现的功能有限。
2015年12月4日
第9页
MATLAB R2007基础教程
清华大学出版社
判断语句(if…else…end)
if…end if…else…end if…elseif…else…end
清华大学出版社
教学内容
M文本文件介绍 函数流程控制 函数变量 函数类型 函数操作 MATLAB 编程错误处理 程序设计的辅助函数 调试程序 优化程序
第4页
2015年12月4日
MATLAB R2007基础教程
清华大学出版社
M文本文件介绍
一个 M 文件通常包含五个部分,函数定义语句、H1 帮助 行、帮助文本、函数体或者脚本文件语句和注释语句。 H1 行为紧随函数定义语句后面的一行注释语句。当用户 通过 help 命令查询该函数的说明信息时 H1 行显示为第 一行,另外 lookfor 函数只检索和显示 H1 行。帮助文本 为 H1 行后面连续的注释行,当在命令窗口中通过 help 命令查询该函数的说明信息时则在窗口中显示这些内容。 函数体为 M 文件的主要部分,是函数的执行代码。除上 面的 H1 行和帮助文本外,为了易于理解,可以在书写代 码时添加注释语句。这些注释语句在编译程序时会被忽略, 因此不会影响编译速度和程序运行速度,但是能够增加程 序的可读性。
MATLAB MATLAB R2007 R2007基础教程 基础教程
清华大学出版社 清华大学出版社
第7章 MATLAB 2007程序设计
教学目标 教学重点 教学内容
2015年12月4日
第1页
MATLAB R2007基础教程
清华大学出版社
教学目标
熟悉 MATLAB 的编程环境 掌握 MATLAB 的变量类型 掌握 MATLAB 中的流程控制语句 掌握 MATLAB 的函数类型和函数操作 了解 MATLAB 中的错误处理 了解 MATLAB 程序调试方法 了解 MATLAB 代码优化方法
2015年12月4日 第2页
MATLAB R2007基础教程
清华大学出版社
教学重点
MATLAB 的编程环境 MATLAB 的变量类型 MATLAB 中的流程控制语句 MATLAB 的函数类型和函数操作 MATLAB 程序调试方法
2015年12月4日
第3页
MATLAB R2007基础教程
while 表达式 执行代码块 end
2015年12月4日
第18页
MATLAB R2007基础教程
清华大学出版社
6.2.5 try…catch…end语句
MATLAB 中的另一种判断语句为 try…catch 语句,这种语句可以包 容程序运行中的错误,并返回错误类型。这种语句的结构为:
try 运行代码块 catch 运行代码块 end
第11页
MATLAB R2007基础教程
清华大学出版社
if…else…end 当程序有两个选择时,可以选择 if…else…end 结构,此时程序结构为:
if 表达式 执行代码块1 else 执行代码块2 end
当判断表达式为真时,执行代码块1,否则执行代 码块2。
第12页
2015年12月4日
– 只能在 M 文件内部定义; – 只有该变量从属的函数能够访问该变量; – 当函数运行结束时,该变量的值保留在内存中,因此 当该函数再次被调用时,可以再次利用这些变量。
永久变量的定义方法为:
persistent 变量名1 变量名2。
2015年12月4日
第24页
MATLAB R2007基础教程
清华大学出版社
MATLAB R2007基础教程
清华大学出版社
if…elseif…else…end 上面的两种形式中,分别包含一个选择和两个选择,当判断包含多个 选择时,可以采用elseif 语句,结构为:
if 表达式1 执行代码块1 elseif 表达式2 执行代码块2 elseif ...... ...... ...... else 执行代码块 end
第5页
2015年12月4日
MATLAB R2007基础教程
清华大学出版社
一个完整的 M 文件的结构为:
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); 函数体
该语句首先从上到下依次执行,如果遇到程序错误则运行下一个 catch 中的语句,依次向下进行。如果程序运行成功,则退出该判断 语句。如果在 catch 和 end之间的程序运行出错,则程序运行终止, 或者如果存在其他的 try…catch 结构,则运行下一个 try…catch 结 构。可以利用 lasterr 命令查看发生错误的原因。
其中可以包含任意多个 elseif 语句。
2015年12月4日
第13页
MATLAB R2007基础教程
清华大学出版社
分支语句
上一节中的 if…elseif…else…end 语句可以适用于多种 选择的流程控制,此时对 else之外的每一个选择语句设 置一个表达式,表达式为真时则执行该模块。MATLAB 中的另一种多选择语句为分支语句。分支语句的结构为:
2015年12月4日
第22页
MATLAB R2007基础教程
清华大学出版社
全局变量
局部变量只在一个工作区内有效,无论是函数工作区还是 MATLAB 主工作区。与局部变量不同,全局变量可以在 定义该变量的全部工作区中有效。当在一个工作区内改变 该变量的值时,该变量在其他工作区中的变量同时改变。 任何函数如果需要使用全局变量,则必须首先声明,声明 格式为:
fhandle = @(arglist) expr
for 循环的语句在前面的例子中已经有所涉 及,上节的例子中,第二个程序中也涉及 到了 for 循环语句。下面为 for 循环的更多 例子。
第17页
2015年12月4日
MATLAB R2007基础教程
清华大学出版社
2.while 语句
while 语句用于将相同的代码块执行多次, 但是次数并不预先指定,当 while 的条件 表达式为真时,执行代码块,直到条件表 达式为假。while 语句的结构为:
switch 分支语句 case 条件语句 执行代码块 case {条件语句1, 条件语句2, 条件语句3, ...} 执行代码块 otherwise 执行代码块 end
2015年12月4日
第14页
MATLAB ห้องสมุดไป่ตู้2007基础教程
清华大学出版社
其中的分支语句为一个变量,可以是数值变量或 者字符串变量,如果该变量的值与某一条件相符, 则执行相应的语句,否则,执行 otherwise 后面 的语句。在每一个条件中,可以包含一个条件语 句,可以包含多个条件,当包含多个条件时,将 条件以单元数组的形式表示。 MATLAB 的分支语句类似于 C 语言的分支语句, 但是又不完全相同:MATLAB 语句从上到下依次 判断条件,条件符合则执行相应的代码块,之后 退出该分支语句,因此在代码块后面不需要添加 “break”语句。
6.4 函数类型
6.4.1 6.4.2 6.4.3 6.4.4 6.4.5 6.4.6
匿名函数 主函数 子函数 嵌套函数 私有函数 重载函数
2015年12月4日
第25页
MATLAB R2007基础教程
清华大学出版社
匿名函数
关于匿名函数在前面“MATLAB 的数学运算”一章中已 有初步涉及,在“函数运算”一节的示例中用到了大量的 匿名函数。本节对匿名函数做进一步的介绍。 匿名函数提供了一种创建简单程序的方法,使用它用户可 以不必每次都编写 M 文件。用户可以在 MATLAB 的命令 窗口或是其他任意 M 文件和脚本文件中使用匿名函数。 匿名函数的格式为:
2015年12月4日
第19页
MATLAB R2007基础教程
清华大学出版社
6.2.6 其他流程控制函数
continue:continue 语句通常用在循环控制中, 包括 for 循环和 while 循环,用于结束当次循环, 继续执行下一次循环,但是不结束当前循环。一 般 continue 语句与 if 语句相结合,当满足一定 的条件时,执行 continue 语句。 break:与 continue 相同的是,break 函数也是 用于循环控制,中断当前循环。与 continue 不 同,break 跳出当前循环,不再执行该循环的任 何操作。 return:结束该程序的执行,返回到调用函数或 者键盘。
global 变量名1 变量名2
如果一个 M 文件中包含的子函数需要访问全局变量,则 需在子函数中声明该变量,如果需要在命令行中访问该变 量,则需在命令行中声明该变量。
2015年12月4日
第23页
MATLAB R2007基础教程
清华大学出版社
永久变量
除局部变量和全局变量外,MATLAB 中还有一种 变量类型为永久变量。永久变量的特点为: