10- MATLAB 7程序设计
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第10章 MATLAB 7程序设计 4
2013-7-14
MATLAB 7 简明教程
清华大学出版社
1. M文本编辑器的基本知识
• M文本编辑器
– M文件的基本属性 – M文件的组成部分
• 脚本式M文件 • 函数式M文件
2013-7-14
第10章 MATLAB 7程序设计
5
MATLAB 7 简明教程
2013-7-14
第10章 MATLAB 7程序设计
10
MATLAB 7 简明教程
清华大学出版社
脚本式M文件举例
• 本脚本式M文件绘 制一个正弦曲线:
– %此文件用于绘制【- 2×pi,2×pi】区间的 正弦曲线图 – x=-2*pi:0.05:2*pi; – y=sin(x); – plot(x,y,'c+') – legend('正弦曲线图')
2013-7-14
• 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
2013-7-14
第10章 MATLAB 7程序设计
14
MATLAB 7 简明教程
清华大学出版社
(1)顺序结构
• 顺序结构是最简单的程序结构,用户在编 写好程序之后,系统将按照程序的物理位 置顺次执行。
• • • • • •
2013-7-14
a=1; b=2; c=3; s1=a+b s2=s1+c s3=s2/s2
第10章 MATLAB 7程序设计 8
MATLAB 7 简明教程
清华大学出版社
M文件的组成部分及其功能
• M文件的组成部分及其功能
组成部分 描 述
函数定义行 ( 仅限于 定义函数名,以及输入和输出变量的数目和顺序 函数式M文件)
H1 行 帮助文本 函数体 注释 H1 行对程序进行概括性的描述,使用 help 和 lookfor 命令都可以调出 此行 这是比H1 行更详细的帮助信息,使用help命令时与H1行一起显示 函数体是M文件的主要部分,程序的计算和设计都在此实现 解释程序行的意义
第10章 MATLAB 7程序设计
2013-7-14
27
MATLAB 7 简明教程
清华大学出版社
局部变量
• 局部变量是在函数内部使用的变量, 其影响范围只能在本函数内,每个函 数在运行时,都占有独立的函数工作 空间,此工作空间和MATLAB的工作 空间时相互独立的,局部变量仅存在 于函数的工作空间内。当函数执行完 毕之后,该变量即自行消失。
13
第10章 MATLAB 7程序设计
MATLAB 7 简明教程
清华大学出版社
2. 控制流
• 最简单的程序控制就是顺序结构,用户依 次输入命令语句即可。 • MATLAB 7语言还提供了4种高级的控制结 构。它们是:if-else-end结构、switchcase-otherwise-end结构、for循环和while 循环。
第10章 MATLAB 7程序设计 18
MATLAB 7 简明教程
清华大学出版社
(3) switch……case……end语句
• switch开关语句 • case条件语句, • 执行语句,……,执行语句 • case {条件语句1,条件语句2, 条件语句 3,……} • 执行语句,……,执行语句 • …… • otherwise, • 执行语句,……,执行语句 • end
MATLAB 7 简明教程
清华大学出版社
第10章 MATLAB 7程序设计
• • • 教学目标 教学重点 教学过程
2013-7-14
第10章 MATLAB 7程序设计
1
MATLAB 7 简明教程
清华大学出版社
教学目标
• 用交互式的方式来编写程序适用于命 令行比较简单,输入比较方便,同时 处理的问题步骤较少的情况。 • 当需要处理重复、复杂且容易出错的 问题时,可以进行控制流的程序设计, 这就是M文件的编程工作方式。
2013-7-14 第10章 MATLAB 7程序设计 19
MATLAB 7 简明教程
清华大学出版社
(4) try……catch……end
• try-catch模块给用户提供了一种错误捕获机制。 换句话说,利用try-catch模块,MATLAB 7编译 系统发现的错误将被其捕获,用户可以控制 MATLAB 7怎样对发生的错误进行处理。
第10章 MATLAB 7程序设计 23
2013-7-14
MATLAB 7 简明教程
清华大学出版社
3. 变量和函数种类
• 与其他语言一样,MATLAB 7的变量有 输入变量、输出变量和函数内使用的 变量之分,而函数也有主函数、局部 函数和子函数之分,本节将介绍这些 不同种类变量和函数的特点。
2013-7-14
• MATLAB 7可以有任意数量的输入和输出变 量。这些参数的特性和规则如下所示:
– (1) 函数式M文件可以没有输入和输出变量。 – (2) 函数可以用比M文件中的函数定义行所规定的输入 输出变量更少的变量进行调用。但是不能用比规定的 输入输出变量更多的变量进行调用。 – (3) 在一次调用中所用到的输入和输出变量的个数可以 通过分别调用函数nargin和nargout来确定ຫໍສະໝຸດ Baidu因为 nargin和nargout是函数而不是变量,所以用户不能用 诸如nargin=nargin+pi之类的语句对它们进行重新赋值。 – ……
2013-7-14
第10章 MATLAB 7程序设计
9
MATLAB 7 简明教程
清华大学出版社
(2)脚本式M文件
• 用户可以将需要重复输入的所有命令按顺 序放到一个扩展名为m的文本文件下,每次 运行时只要输入该M文件的文件名即可。 • 用户自己创建的M文件的文件名要避免与 MATLAB 7的内置函数和工具箱中的函数重 名,以免发生内置函数被替换的情况。
2013-7-14 第10章 MATLAB 7程序设计 11
MATLAB 7 简明教程
清华大学出版社
(3)函数式M文件
• 函数式M文件一般都要自带参数,并且有返 回结果 。 • 函数式M文件的第一行都是以function开始, 说明此文件是一个函数。函数式M文件中的 变量都不是全局变量,仅在函数运行期间 有效,函数运行完毕之后,它所定义的变 量将从工作区间中清除。
MATLAB 7 简明教程
清华大学出版社
M文件的基本属性
• M文件有两种,一种为脚本式(Script), 一种为函数式(Function) 。
– 函数M文件必须满足一些标准,另外,它们还 应该满足一些MATLAB 7的属性。主要有以下 几点:
• 函数式M文件名和出现在文件的第一行的函数名必 须相同。实际上,MATLAB 7忽略了第一行的函数 名,并且根据存储在硬盘上的文件名来执行函数。 • ……
– – – – –
2013-7-14
try 执行语句1 catch 执行语句 2 end
第10章 MATLAB 7程序设计 20
MATLAB 7 简明教程
清华大学出版社
(5) for循环语句
• For语句是一种循环语句,可以让用户 很方地实现循环操作,从而可以从容 地应付大规模的循环语句。
– for i =表达式, – 执行语句,……,执行语句 – end
2013-7-14 第10章 MATLAB 7程序设计 22
MATLAB 7 简明教程
清华大学出版社
(7) 人机交互命令
• • • • • • 终止命令break和return 继续命令continue 等待用户反应命令pause echo命令 用户输入提示命令input 请求键盘输入命令keyboard
2013-7-14 第10章 MATLAB 7程序设计 12
MATLAB 7 简明教程
清华大学出版社
函数式M文件举例
• 例11-4 判断某一年是否为 闰年。 • 解:调出Medit窗口,在里 边输入如下内容。 • %该函数用于判断某一年 是否为闰年 • %使用格式为isleapea(y), 其中y是用户所要计算的年 份 • function isleapyear(year) • sign=0; • if rem(year,4)==0 • sign=sign+1; • end
– if 表达式 – 执行语句1 – else – 执行语句2 – end
2013-7-14
第10章 MATLAB 7程序设计
17
MATLAB 7 简明教程
清华大学出版社
if……end语句
• 有3种或3种以上选择时的情况
– – – – – – – – – – –
2013-7-14
if 表达式1 表达式1为真时的执行语句1 elseif表达式2 表达式2为真时的执行语句2 elseif表达式3 表达式3为真时的执行语句3 elseif…… …… else 所有的表达式都为假时的执行语句 end
2013-7-14 第10章 MATLAB 7程序设计 7
MATLAB 7 简明教程
清华大学出版社
M文件的组成部分
• 函数式M文件的组成部分。
– 调出Medit窗口,在里边输入如下内容:
• • • • • •
2013-7-14
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); % 函数体
2013-7-14
第10章 MATLAB 7程序设计
21
MATLAB 7 简明教程
清华大学出版社
(6)while循环语句
• 与for循环不同,while循环的判断控制可以 是逻辑判断语句,因此,它的循环次数可 以是一个不定数。这样就赋予了它比for循 环更广泛的用途。
– while表达式 – 执行语句 – end
2013-7-14 第10章 MATLAB 7程序设计 2
MATLAB 7 简明教程
清华大学出版社
教学重点
• MATLAB 7的控制流语言 • 变量和函数的种类 • 了解程序的调试和优化
2013-7-14
第10章 MATLAB 7程序设计
3
MATLAB 7 简明教程
清华大学出版社
教学过程
• • • • • M文本编辑器的基本知识 MATLAB 7的控制流语言 变量和函数的种类 程序设计的辅助函数 程序的调试和优化
2013-7-14 第10章 MATLAB 7程序设计 25
MATLAB 7 简明教程
清华大学出版社
函数变量及其作用域
• • • • 变量的输入和输出规则 局部变量 全局变量 永久变量
2013-7-14
第10章 MATLAB 7程序设计
26
MATLAB 7 简明教程
清华大学出版社
变量的输入和输出规则
清华大学出版社
(1)M文本编辑器
• M文件的语法类似于一般高级语言,是 一种程序化的编程语言,但是,与传 统的高级语言相比,M文件又有自己的 特点。它只是一个简单的ASCⅡ型码 文本文件,因此,它的语法比一般的 高级语言要简单,程序也容易调试, 并且有很好的交互性。
2013-7-14 第10章 MATLAB 7程序设计 6
第10章 MATLAB 7程序设计 15
MATLAB 7 简明教程
清华大学出版社
(2)if……end语句
• 只有一种选择时的情况
– if 表达式 – 执行语句 – end
2013-7-14
第10章 MATLAB 7程序设计
16
MATLAB 7 简明教程
清华大学出版社
if……end语句
• 有两种选择时的情况
第10章 MATLAB 7程序设计
24
MATLAB 7 简明教程
清华大学出版社
(1). 函数变量及其作用域
• 在MATLAB 7语言中,变量可以分为输入变量、 输出变量和函数内使用的变量。 • 输入变量相当于函数的入口数据,也是一个函数 操作的主要对象,从某种意义上来说,函数的功 能在于对输入变量进行一定的操作从而实现一定 的功能。函数的输入变量为局部变量,函数对输 入变量的一切操作和修改如果不依靠输出变量的 话,将不会影响工作区间中该变量的值。
2013-7-14
MATLAB 7 简明教程
清华大学出版社
1. M文本编辑器的基本知识
• M文本编辑器
– M文件的基本属性 – M文件的组成部分
• 脚本式M文件 • 函数式M文件
2013-7-14
第10章 MATLAB 7程序设计
5
MATLAB 7 简明教程
2013-7-14
第10章 MATLAB 7程序设计
10
MATLAB 7 简明教程
清华大学出版社
脚本式M文件举例
• 本脚本式M文件绘 制一个正弦曲线:
– %此文件用于绘制【- 2×pi,2×pi】区间的 正弦曲线图 – x=-2*pi:0.05:2*pi; – y=sin(x); – plot(x,y,'c+') – legend('正弦曲线图')
2013-7-14
• 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
2013-7-14
第10章 MATLAB 7程序设计
14
MATLAB 7 简明教程
清华大学出版社
(1)顺序结构
• 顺序结构是最简单的程序结构,用户在编 写好程序之后,系统将按照程序的物理位 置顺次执行。
• • • • • •
2013-7-14
a=1; b=2; c=3; s1=a+b s2=s1+c s3=s2/s2
第10章 MATLAB 7程序设计 8
MATLAB 7 简明教程
清华大学出版社
M文件的组成部分及其功能
• M文件的组成部分及其功能
组成部分 描 述
函数定义行 ( 仅限于 定义函数名,以及输入和输出变量的数目和顺序 函数式M文件)
H1 行 帮助文本 函数体 注释 H1 行对程序进行概括性的描述,使用 help 和 lookfor 命令都可以调出 此行 这是比H1 行更详细的帮助信息,使用help命令时与H1行一起显示 函数体是M文件的主要部分,程序的计算和设计都在此实现 解释程序行的意义
第10章 MATLAB 7程序设计
2013-7-14
27
MATLAB 7 简明教程
清华大学出版社
局部变量
• 局部变量是在函数内部使用的变量, 其影响范围只能在本函数内,每个函 数在运行时,都占有独立的函数工作 空间,此工作空间和MATLAB的工作 空间时相互独立的,局部变量仅存在 于函数的工作空间内。当函数执行完 毕之后,该变量即自行消失。
13
第10章 MATLAB 7程序设计
MATLAB 7 简明教程
清华大学出版社
2. 控制流
• 最简单的程序控制就是顺序结构,用户依 次输入命令语句即可。 • MATLAB 7语言还提供了4种高级的控制结 构。它们是:if-else-end结构、switchcase-otherwise-end结构、for循环和while 循环。
第10章 MATLAB 7程序设计 18
MATLAB 7 简明教程
清华大学出版社
(3) switch……case……end语句
• switch开关语句 • case条件语句, • 执行语句,……,执行语句 • case {条件语句1,条件语句2, 条件语句 3,……} • 执行语句,……,执行语句 • …… • otherwise, • 执行语句,……,执行语句 • end
MATLAB 7 简明教程
清华大学出版社
第10章 MATLAB 7程序设计
• • • 教学目标 教学重点 教学过程
2013-7-14
第10章 MATLAB 7程序设计
1
MATLAB 7 简明教程
清华大学出版社
教学目标
• 用交互式的方式来编写程序适用于命 令行比较简单,输入比较方便,同时 处理的问题步骤较少的情况。 • 当需要处理重复、复杂且容易出错的 问题时,可以进行控制流的程序设计, 这就是M文件的编程工作方式。
2013-7-14 第10章 MATLAB 7程序设计 19
MATLAB 7 简明教程
清华大学出版社
(4) try……catch……end
• try-catch模块给用户提供了一种错误捕获机制。 换句话说,利用try-catch模块,MATLAB 7编译 系统发现的错误将被其捕获,用户可以控制 MATLAB 7怎样对发生的错误进行处理。
第10章 MATLAB 7程序设计 23
2013-7-14
MATLAB 7 简明教程
清华大学出版社
3. 变量和函数种类
• 与其他语言一样,MATLAB 7的变量有 输入变量、输出变量和函数内使用的 变量之分,而函数也有主函数、局部 函数和子函数之分,本节将介绍这些 不同种类变量和函数的特点。
2013-7-14
• MATLAB 7可以有任意数量的输入和输出变 量。这些参数的特性和规则如下所示:
– (1) 函数式M文件可以没有输入和输出变量。 – (2) 函数可以用比M文件中的函数定义行所规定的输入 输出变量更少的变量进行调用。但是不能用比规定的 输入输出变量更多的变量进行调用。 – (3) 在一次调用中所用到的输入和输出变量的个数可以 通过分别调用函数nargin和nargout来确定ຫໍສະໝຸດ Baidu因为 nargin和nargout是函数而不是变量,所以用户不能用 诸如nargin=nargin+pi之类的语句对它们进行重新赋值。 – ……
2013-7-14
第10章 MATLAB 7程序设计
9
MATLAB 7 简明教程
清华大学出版社
(2)脚本式M文件
• 用户可以将需要重复输入的所有命令按顺 序放到一个扩展名为m的文本文件下,每次 运行时只要输入该M文件的文件名即可。 • 用户自己创建的M文件的文件名要避免与 MATLAB 7的内置函数和工具箱中的函数重 名,以免发生内置函数被替换的情况。
2013-7-14 第10章 MATLAB 7程序设计 11
MATLAB 7 简明教程
清华大学出版社
(3)函数式M文件
• 函数式M文件一般都要自带参数,并且有返 回结果 。 • 函数式M文件的第一行都是以function开始, 说明此文件是一个函数。函数式M文件中的 变量都不是全局变量,仅在函数运行期间 有效,函数运行完毕之后,它所定义的变 量将从工作区间中清除。
MATLAB 7 简明教程
清华大学出版社
M文件的基本属性
• M文件有两种,一种为脚本式(Script), 一种为函数式(Function) 。
– 函数M文件必须满足一些标准,另外,它们还 应该满足一些MATLAB 7的属性。主要有以下 几点:
• 函数式M文件名和出现在文件的第一行的函数名必 须相同。实际上,MATLAB 7忽略了第一行的函数 名,并且根据存储在硬盘上的文件名来执行函数。 • ……
– – – – –
2013-7-14
try 执行语句1 catch 执行语句 2 end
第10章 MATLAB 7程序设计 20
MATLAB 7 简明教程
清华大学出版社
(5) for循环语句
• For语句是一种循环语句,可以让用户 很方地实现循环操作,从而可以从容 地应付大规模的循环语句。
– for i =表达式, – 执行语句,……,执行语句 – end
2013-7-14 第10章 MATLAB 7程序设计 22
MATLAB 7 简明教程
清华大学出版社
(7) 人机交互命令
• • • • • • 终止命令break和return 继续命令continue 等待用户反应命令pause echo命令 用户输入提示命令input 请求键盘输入命令keyboard
2013-7-14 第10章 MATLAB 7程序设计 12
MATLAB 7 简明教程
清华大学出版社
函数式M文件举例
• 例11-4 判断某一年是否为 闰年。 • 解:调出Medit窗口,在里 边输入如下内容。 • %该函数用于判断某一年 是否为闰年 • %使用格式为isleapea(y), 其中y是用户所要计算的年 份 • function isleapyear(year) • sign=0; • if rem(year,4)==0 • sign=sign+1; • end
– if 表达式 – 执行语句1 – else – 执行语句2 – end
2013-7-14
第10章 MATLAB 7程序设计
17
MATLAB 7 简明教程
清华大学出版社
if……end语句
• 有3种或3种以上选择时的情况
– – – – – – – – – – –
2013-7-14
if 表达式1 表达式1为真时的执行语句1 elseif表达式2 表达式2为真时的执行语句2 elseif表达式3 表达式3为真时的执行语句3 elseif…… …… else 所有的表达式都为假时的执行语句 end
2013-7-14 第10章 MATLAB 7程序设计 7
MATLAB 7 简明教程
清华大学出版社
M文件的组成部分
• 函数式M文件的组成部分。
– 调出Medit窗口,在里边输入如下内容:
• • • • • •
2013-7-14
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); % 函数体
2013-7-14
第10章 MATLAB 7程序设计
21
MATLAB 7 简明教程
清华大学出版社
(6)while循环语句
• 与for循环不同,while循环的判断控制可以 是逻辑判断语句,因此,它的循环次数可 以是一个不定数。这样就赋予了它比for循 环更广泛的用途。
– while表达式 – 执行语句 – end
2013-7-14 第10章 MATLAB 7程序设计 2
MATLAB 7 简明教程
清华大学出版社
教学重点
• MATLAB 7的控制流语言 • 变量和函数的种类 • 了解程序的调试和优化
2013-7-14
第10章 MATLAB 7程序设计
3
MATLAB 7 简明教程
清华大学出版社
教学过程
• • • • • M文本编辑器的基本知识 MATLAB 7的控制流语言 变量和函数的种类 程序设计的辅助函数 程序的调试和优化
2013-7-14 第10章 MATLAB 7程序设计 25
MATLAB 7 简明教程
清华大学出版社
函数变量及其作用域
• • • • 变量的输入和输出规则 局部变量 全局变量 永久变量
2013-7-14
第10章 MATLAB 7程序设计
26
MATLAB 7 简明教程
清华大学出版社
变量的输入和输出规则
清华大学出版社
(1)M文本编辑器
• M文件的语法类似于一般高级语言,是 一种程序化的编程语言,但是,与传 统的高级语言相比,M文件又有自己的 特点。它只是一个简单的ASCⅡ型码 文本文件,因此,它的语法比一般的 高级语言要简单,程序也容易调试, 并且有很好的交互性。
2013-7-14 第10章 MATLAB 7程序设计 6
第10章 MATLAB 7程序设计 15
MATLAB 7 简明教程
清华大学出版社
(2)if……end语句
• 只有一种选择时的情况
– if 表达式 – 执行语句 – end
2013-7-14
第10章 MATLAB 7程序设计
16
MATLAB 7 简明教程
清华大学出版社
if……end语句
• 有两种选择时的情况
第10章 MATLAB 7程序设计
24
MATLAB 7 简明教程
清华大学出版社
(1). 函数变量及其作用域
• 在MATLAB 7语言中,变量可以分为输入变量、 输出变量和函数内使用的变量。 • 输入变量相当于函数的入口数据,也是一个函数 操作的主要对象,从某种意义上来说,函数的功 能在于对输入变量进行一定的操作从而实现一定 的功能。函数的输入变量为局部变量,函数对输 入变量的一切操作和修改如果不依靠输出变量的 话,将不会影响工作区间中该变量的值。