MATLAB基础教程 教学课件 ppt 作者 杨德平 第6章 程序设计

上传人:E**** 文档编号:89243473 上传时间:2019-05-21 格式:PPT 页数:28 大小:384.01KB
返回 下载 相关 举报
MATLAB基础教程 教学课件 ppt 作者 杨德平 第6章  程序设计_第1页
第1页 / 共28页
MATLAB基础教程 教学课件 ppt 作者 杨德平 第6章  程序设计_第2页
第2页 / 共28页
MATLAB基础教程 教学课件 ppt 作者 杨德平 第6章  程序设计_第3页
第3页 / 共28页
MATLAB基础教程 教学课件 ppt 作者 杨德平 第6章  程序设计_第4页
第4页 / 共28页
MATLAB基础教程 教学课件 ppt 作者 杨德平 第6章  程序设计_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《MATLAB基础教程 教学课件 ppt 作者 杨德平 第6章 程序设计》由会员分享,可在线阅读,更多相关《MATLAB基础教程 教学课件 ppt 作者 杨德平 第6章 程序设计(28页珍藏版)》请在金锄头文库上搜索。

1、第6章 程序设计,6.1 关系运算和逻辑运算,6.2. 顺序语句,6.3 循环语句,6.4 条件语句,6.5 试探结构,6.6 流控制命令,6.7 综合实例,6.1 关系运算和逻辑运算,2.1.1 常量,6.1.1 关系操作运算 关系操作运算是用关系操作符来实现,它可用来比较两个标量,或两个同样大小的数组,或一个数组和一个标量(实际是数组中的每一个元素与标量比较),比较结果产生0(逻辑假,false)或者1(逻辑真,ture)。 格式 a op b % a和b是算术表达式、变量、字符串等,op是一 种关系运算符,首页,比较关系运算符及含义,【例6-1】比较关系运算示例。 A=1: 9, B=1

2、0-A, r0=(A4), r1=(A=B) A = 1 2 3 4 5 6 7 8 9 B = 9 8 7 6 5 4 3 2 1 r0 = 1 1 1 0 0 0 0 0 0 r1 = 0 0 0 0 1 0 0 0 0,首页,6.1.2 逻辑操作运算 逻辑操作运算是由逻辑操作符来实现,主要是使用“与”、“或”将多个表达式组合在一起,或者是对关系式取反,具体格式可写为a&b、a|b、a等。 逻辑操作符及对应的含义,以及逻辑操作运算函数如表6-2所示。,表6-2 逻辑运算符含义及函数表示,逻辑操作运算法则如下: (1)a&b或and(a,b):表示a和b作“逻辑与”运算,当a和b全为非零时,

3、运算结果为1,否则为0; (2)a|b或or(a,b):表示a和b作“逻辑或”运算,当a和b只要有一个非零,运算结果为1,否则为0; (3)a或not(a):表示对a作“逻辑非”运算,当a是零时,运算结果为1,否则为0; (4)xor(a,b):表示a和b作“逻辑异或”运算,当a和b的值一个为零,一个不为零时运算结果为1,否则为0。,【例6-2】逻辑运算举例。 A=1: 9, B=9: -1: 1 A = 1 2 3 4 5 6 7 8 9 B = 9 8 7 6 5 4 3 2 1 L1=A3&B6 L1 = 0 0 0 0 1 1 1 1 1, L2=A3|B L3= xor(A3,B L

4、4=A L4 = 0 0 0 0 0 0 0 0 0,6.1.3 运算优先级,首页,当多个运算符和变量写成一个MATLAB表达式时,运算符的优先次序必须明确。通常所有的运算符,算术运算符优先级最高,关系运算符次之,逻辑操作符的优先级最低。具体优先级次序在表6-3中依从上到下的顺序由高到低排序。同一行的各运算符具有相同的优先级,其运算符法则是在表达式中从左到右依次进行运算。,表6-3 各种运算符优先级排序,首页,6.2. 顺序语句,格式 expression %执行表达式命令,显示表达式值 variable=expression %将表达式赋值给变量variable,【例6-3】利用顺序结构编写

5、绘制函数 的图形。,syms x %1先定义符号变量x y=x*sin(2*x) %2写出函数 ezplot(y,0,4*pi) %3画简易图 grid on %4加格线 ylabel(y) %5给纵轴加标签y,6.3.1 for循环 1for 语句的简单形式 格式 for variable=expression statements end 说明 每当循环变量variable取expression中的一个值时,就执行循环体statements一次,直到取完expression中的值。expression常用数组形成表示。,首页,6.3 循环语句,【例6-4】编写求100!的程序,利用公式k!

6、=(k-1)!k。 s=1; for k=1:100 s=s*k; end s 运行结果如下: s = 9.3326e+157,首页,【例6-5】编写利用数组指定循环变量的值,并计算各取值的三次方的程序。,A= 1 3 5 7 9; %给定循环变量取值数组 B=zeros(size(x); %给B预先分配存储空间 k=0; for x=A %依次取A中的元素 k=k+1; B(k)=x.3; %计算A每个元素的三次方 end C=A; B %显示A,及与A对应的值B,运行结果如下: C = 1 3 5 7 9 1 27 125 343 729,运行结果如下: B = 1 1/2 1/3 1/4

7、 1/5 1/2 1/3 1/4 1/5 1/6 1/3 1/4 1/5 1/6 1/7 1/4 1/5 1/6 1/7 1/8 1/5 1/6 1/7 1/8 1/9 注:使用循环结构,在循环指令之前尽量对数组进行预定义,分配存储空间大小。,首页,2多重嵌套的for循环 【例6-6】多重嵌套的for循环举例。 A=5; B=zeros(A,A) ; %给B预先分配存储空间 for m=1:A for n=1:A B(m,n)=1/(m+n-1); %计算输入的两个值的和,再减一的倒数 end end format rat %有理分式显示,6.3.2 while 循环,首页,格式 while

8、expression statements end 说明 while语句可不定次数地重复执行statements。当expression为逻辑真或非零值时,就重复执行statements。因此,expression的值应该受到statements的影响,否则这种循环无法结束。通常表达式给出的是一个标量值,但也可以是数组或者矩阵,如果是后者,则要求所有的元素都必须为真。,【例6-7】 2012年1月我国银行存款年利率为3.5%,若将10万元钱于当月存入银行,问多长时间会连本带利翻一番(假定利率保持不变)? 利用公式:M=M0(1+r),其中M0为本金,r为年利率,M为一年后的连本带利。 m=10

9、; %初始值 k=0; while m20; %翻一番 m=m*(1+3.5/100) k=k+1 end,运行结果如下:(只写出最后两项) m = 19.8979 k = 20 m = 20.5943 k = 21 故需要21年后才能连本带利翻一番。,首页,上面的程序每次循环显示的结果都是k和m,若调用的话,不太方便,为此给出用向量的形式显示其结果的程序: m(1)=10; k=1; while m(k)20 m(k+1)=m(k)*(1+3.5/100); k=k+1; end k,m,运行结果如下: k = 22 m = 10.0000 10.3500 10.7122 11.0872 1

10、1.4752 11.8769 12.2926 12.7228 13.1681 13.6290 14.1060 14.5997 15.1107 15.6396 16.1869 16.7535 17.3399 17.9468 18.5749 19.2250 19.8979 20.5943 由于第一年存款本金作为序号1,故序号k = 22,也表明第21年后才能连本带利翻一番,与上述结果一致。,首页,1if-end结构 格式 if expression statements end 说明 当表达式expression的值为逻辑真或非零值时,执行语句组statements。expression通常由关系

11、操作符、逻辑运算符、算术运算符等构成,statements可以是多个语句。,6.4 条件语句,6.4.1 if-else-end结构,例如,判断当a为偶数时,显示a是偶数,并计算a/2;否则不作任何处理。 If rem(a,2)=0 disp(a is even) b=a/2; end,首页,2if-else-end结构 格式 if expression statements1 else statements2 end 说明 当expression为逻辑真或非零值时,执行statements1;否则执行statements2。,首页,3有多个条件式的if-else-end结构 格式 if ex

12、pression1 statements1 elseif expression2 statements2 else statements3 end 说明 当expression1为逻辑真或非零值时,执行statements1;当expression1为逻辑假或零值,且expression2为逻辑真或非零值时,执行statements2;当expression1和expression2均为逻辑假或零值时,执行statements3。,【例6-9】利用if结构判断输入的数值。 n=input(请输入一个数n:) if n0 disp(输入数不能为负数) elseif n=0 disp(n为零) e

13、lseif rem(n,2)=0,disp(n为偶数) elseif rem(n,2)=1 disp(n为奇数) else disp(n为其它数) end,6.4.2 switch-case 结构,首页,格式 switch expression(scalar or string) case value1 statements1 case value2 statements2 otherwise statementsn end,说明 将expression 的值依次和各个value检测值进行比较,当expression与某一个case 语句中的value相符时,执行这个case语句之后的语句,然

14、后跳出该switch 结构;如果expression与所有case语句中的value都不符合,则执行otherwise 语句后的一组语句。 expression是一个标量或者字符串。当expression为标量时,expression与value相符意味着expression=value;当expression为字符串时,两者相符意味着strcmp(expression, value)为逻辑真。当然otherwise 指令也可以不存在。,【例6-10】利用switch结构判断输入的数值。,n=input(请输入一个数n:) switch n case -1 disp(n为负数) case 0

15、disp(n=0) case 1 disp(n为正数) otherwise disp(n是其它数) end 在if语句中,我们可设定、这样的关系,但switch中只能采用相等的关系,这一点是两者的区别。,6.5 试探结构,格式 try statements1 catch statements2 end 说明 通常情况下,只执行statements1,但当在执行statements1 语句发生错误时,catch控制块就可捕获它,会执行statements2,这样可以在statements2 中对错误作适当处理。可调用lasterr函数查询出错原因。try和catch控制块中的语句之间用逗号隔开。,【例6-11】矩阵乘法运算要求两矩阵的维数相容,否则会出错。 A=2 3 5; 3 7 9; B

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号