Presentation is loading. Please wait.

Presentation is loading. Please wait.

数学软件 Matlab —— 编程基础(脚本文件/函数文件).

Similar presentations


Presentation on theme: "数学软件 Matlab —— 编程基础(脚本文件/函数文件)."— Presentation transcript:

1 数学软件 Matlab —— 编程基础(脚本文件/函数文件)

2 本讲主要内容 M 文件 基本运算:算术、关系、逻辑 简单的输入输出 控制结构:顺序、选择、循环 函数文件

3 Matlab 编程 Matlab 编程 Matlab 作为一种广泛应用于科学计算的工具软件,不仅具有强大的数值计算能力和丰富的绘图功能,同时也可以与 C、FORTRAN 等高级语言一样进行程序设计 利用 Matlab 的程序控制功能,将相关 Matlab 命令编成程序存储在一个文件中(M 文件),然后在命令窗口中运行该文件,Matlab 就会自动依次执行文件中的命令,直到全部命令执行完毕 在 Matlab 程序设计中,要充分利用 Matlab 数据结构的特点,提高编程效率

4 M 文件 M 文件介绍 M 文件分类(根据调用方式的不同) 用 Matlab 语言编写的程序称为 M 文件 M 文件以 .m 为扩展名
Script:脚本文件/命令文件 Function:函数文件 可以直接运行的M文件

5 M 文件 M 文件的创建的与编辑 新建一个 M 文件 打开已有的 M 文件
M 文件是文本文件,可以用任何文本编辑器来建立和编辑,通常使用 Matlab 自带的 M 文件编辑器 新建一个 M 文件 菜单操作 ( File  New  M-File ) 命令操作 ( edit M 文件名 ) 命令按钮 ( 快捷键 ) 打开已有的 M 文件 菜单操作 ( File  Open ) 命令操作 ( edit M 文件名 ) 命令按钮 ( 快捷键 ) 双击 M 文件

6 编程示例 例:编写M文件,将华氏温度转化为摄氏温度: 新建一个 M 文件 f2c.m,内容如下:
clear; % 清除当前工作空间中的所有变量 f=input('请输入一个华氏温度:'); c=5*(f-32)/9; fprintf('对应的摄氏温度是:%f\n',c); f2c.m 在命令窗口中输入 f2c,即可执行该 M 文件 M文件运行所产生的变量都驻留在 Matlab 当前工作空间 百分号是注释符 M文件必须在当前工作目录下才能运行

7 本讲主要内容 M 文件 基本运算:算术(略)、关系、逻辑 简单的输入输出 控制结构:顺序、选择、循环 函数文件

8 关系运算 关系运算:比较大小 > 大于 >= 大于等于 == 等于 < 小于 <= 小于等于 ~= 不等于
比较大小,如果结论是 真 则返回 1 ,否则返回 0 注意 = = 与 = 的区别 可以对两个同样大小的数组进行比较运算,即对应分量进行比较,结果为一个同样大小的0-1数组 也可以对一个数组和一个标量进行比较运算,此时标量和数组中的每一个元素极限比较,结果也是一个0-1数组

9 关系运算举例 例: 2+2==4 x=pi^2<8 A=[1 3 5; 2 0 6] B=[3 1 0; 2 4 6] A>=B
Matlab演示

10 逻辑运算 逻辑运算 例: & 逻辑与 | 逻辑或 ~ 逻辑非 and(x,y) 与 or(x,y) 或 xor(x,y) 异或 not(x)
&& 与(短格式) || 或(短格式) Matlab演示 注意 &,| 与 &&,|| 的区别 例: x=5; 3<x<8 % ERROR 3<x & x<8

11 逻辑运算 在 Matlab 中,0 表示 “假”,非零表示 “真” 运算法则 运算对象 与 或 非 异或 A B A&B A|B ~A
Xor(A,B) 1 Matlab演示 在 Matlab 中,0 表示 “假”,非零表示 “真”

12 逻辑运算 逻辑运算函数:all、any all(x) % 逻辑与的推广 如果向量 X 中所有元素都非零,则返回 1,否则返回 0
any(x) % 逻辑或的推广 如果向量 X 中存在非零元素,则返回 1,否则返回 0 若 x 为矩阵,则 any 和 all 按列运算,返回一个 0-1 向量 Matlab演示 例: A=[ ]; % 学生成绩 all(A>=60) % 全部及格否? any(A>=90) % 有没有90分以上的?

13 高 低 运算优先级 小括号 幂,点幂 正号,负号,逻辑非 乘,除,点乘,点除 加,减 冒号运算 关系运算 & | && ||
Matlab演示

14 本讲主要内容 M 文件 基本运算:算术、关系、逻辑 简单的输入输出 控制结构:顺序、选择、循环 函数文件

15 input 数据的输入:input x=input(提示信息) 例: 例: 其中 提示信息 为字符串,
x=input('Please input x: ') 例: name=input('What''s your name? ') 输入字符串时必须带单引号 单引号的输出:两个连续的单引号

16 disp 数据的输出:disp disp(x) 例: 输出变量 x 的值,x 可以是数值矩阵或字符串 一次只能输出一个变量的值
x=pi; B=[1 2 3; 4 5 6; 7 8 9]; disp(x) disp(B) str='Hello, Tom!'; disp(str)

17 本讲主要内容 M 文件 基本运算:算术、关系、逻辑 简单的输入输出 控制结构:顺序、选择、循环 函数文件

18 M文件控制流 程序控制结构有三种: 顺序结构、选择结构和循环结构 顺序结构 任何复杂的程序都由这三种基本结构组成
按排列顺序依次执行各条语句,直到程序的最后 这是最简单的一种程序结构,一般涉及数据的输入输出、数据的计算或处理等

19 选择结构 选择结构 根据给定的条件成立或不成立,分别执行不同的语句 选择结构的实现 if 语句 switch 语句

20 if 条件语句 例: if 条件表达式 end 例: if 条件表达式 else end 单分支 if 语句 if score>=60
语句组 end if score>=60 mark='passed'; end 双分支 if 语句 例: if a>b x=a; else x=b; end if 条件表达式 语句组1 else 语句组2 end

21 if 条件语句 例:计算一个数符号 if 条件表达式1 elseif 条件表达式2 elseif 条件表达式m else end
语句组1 elseif 条件表达式2 语句组2 elseif 条件表达式m 语句组m else 语句组 end if x>0 sign_of_x=1; elseif x<0 sign_of_x=-1; elseif x==0 sign_of_x=0; else disp('I dont know!') end

22 循环结构 循环结构 根据给定的条件,重复执行指定的语句 循环结构的实现 for 语句 while 语句

23 for 循环 for 循环变量 = 取值列表 end for 循环 循环体 取值列表 通常是一个向量
将取值列表中的值依次赋给循环变量,直到全部取完, 循环结束 不要在循环体内改变循环变量的值 为提高代码的运行效率,应尽可能提高代码的向量化程度

24 for 循环 例1: 例2:如何输出下列矩阵?(程序见下页!) 已知 ,当 n=100 时,求 y 的值 y=0; n=100;
for k=1:n y=y+1/(2*k-1); end y ex4for01.m 例2:如何输出下列矩阵?(程序见下页!) A =

25 for 循环 for i=1:5 for j=1:5 if i == j A(i,j) = 2; elseif abs(i-j) == 1
end A ex4for02.m

26 while 循环 假 while 条件表达式 end 真 while 循环 表达式 循环体语句
当条件表达式的值为真(非 0)时, 执行循环体语句, 直到条件表达式的值是假为止 循环体语句 循环语句可以嵌套使用 如果预先知道循环的次数,可采用 for 循环 如果预先无法确定循环次数,则可使用 while 循环

27 while 循环 例:数论中的一个有趣问题:3n+1 问题
任取一个正整数,如果是偶数,用 2 除,如果是奇数,用 3 乘再加 1,反复这个过程,直到所得到的数为 1。 问:是否存在使该过程永不中止的整数? n=input('请输入一个正整数 n: '); x=n; while x>1 if mod(x,2)==0 x=x/2; else x=3*x+1; end fprintf(' x=%d \n', x); ex4while01.m

28 循环的终止 循环的中断 break continue break 和 continue 通常需要与 if 语句配合使用 跳出循环体,终止循环
结束本轮循环,执行下一轮循环 break 和 continue 通常需要与 if 语句配合使用 若想强行终止运行中的程序,可以使用 Ctrl+c

29 Pause与return用法 程序暂停 pause % 暂停程序的运行,按任意键后继续 pause(x) % 暂停程序 x 秒 返回/退出
pause off 屏蔽程序中所有 pause 的作用 pause on 打开 pause 的作用 返回/退出 return 退出正在运行的脚本或函数,通常用在函数文件中

30 本讲主要内容 M 文件 基本运算:算术、关系、逻辑 简单的输入输出 控制结构:顺序、选择、循环 函数文件

31 Matlab 另一类编程:函数文件 M 文件根据调用方式的不同可以分为两类 Script:脚本文件,直接输入文件名即可运行
Function:函数文件 供其它M文件调用,通常带输入参数和输出参数

32 函数文件 函数文件一般格式 function 输出形参列表=函数名(输入形参列表) % 注释说明部分 (可选) 函数体语句
第一行为引导行,表示该 M文件是函数文件 函数名的命名规则与变量名相同 ( 必须以字母开头 ) 当输出形参多于一个时,用方括号括起来 函数必须是一个单独的 M文件 函数文件的文件名必须与函数名一致

33 编程示例 例:将华氏温度转化为摄氏温度: 脚本文件 (f2cs.m): clear; f=input('Please input f:');
c=5*(f-32)/9 f2cs.m 函数文件(f2cf.m): function c=f2cf(f) c=5*(f-32)/9; end f2cf.m

34 函数文件举例 例:交换两个变量的值 myswap.m function [a,b] = myswap(x,y) % swap x and y
a = y; b = x; myswap.m 函数可以有多个输入参数和多个输出参数 也可以没有输入参数或输出参数

35 函数文件举例 例:打印杨辉三角形 printyh.m function printyh(n) % 打印杨辉三角形, 本函数没有输出参数
yh=1; disp(yh); if n==1, return; end yh=[1,1]; disp(yh); for k=3:n yh_old=yh; k2=ceil(k/2); for i=2:k2 yh(i)=yh_old(i-1)+yh_old(i); end yh(k2+1:k)=yh(k-k2:-1:1); disp(yh); printyh.m

36 函数调用 函数调用的一般格式 输出实参列表=函数名(输入实参列表) 函数调用时,实参的顺序应与函数定义时形参的顺序一致
实参与形参之间的结合是通过值传递实现的 函数可以嵌套调用,即一个函数可以被其它函数调用, 甚至可以被它自身调用,此时称为递归调用 函数所传递的参数具有可调性,Matlab 用两个永久变量 nargin 和 nargout 分别记录调用该函数时的输入实参 和输出实参的个数

37 教材 P35 的习题 1:如何用程序方式建立如下的矩阵?
上机作业 教材 P35 的习题 1:如何用程序方式建立如下的矩阵? Matlab 演示


Download ppt "数学软件 Matlab —— 编程基础(脚本文件/函数文件)."

Similar presentations


Ads by Google