第2讲 程序设计与绘图
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
For循环
for 循环变量=矩阵表达式 循环体 end
按列执行,每次循环一列。
while循环
基本格式
while 表达式 循环体 end • 若表达式为真,则执行循环体的内容,执行后再判断表达 式是否为真,若不为真,则跳出循环体,向下继续执行。 例exp_while.m while循环和for循环的区别: while循环结构的循环体被执行的次数是不确定的(基 于判断语句执行); for结构中循环体的执行次数是确定的。
当逻辑表达式的值为真时,执行该结构中的执行 语句,执行完之后继续向下进行;若为假,则跳 过结构中的内容,向下执行。
参见例exp_if1.m
switch语句
格式:
switch 表达式 case 值1 语句1 case 值2 语句2 …. otherwise 语句3 end
P45, 例4.5
switch:标量或字符串 case:标量,字符串,单元矩阵 表达式的值等于该单元矩阵中的某个元素时, 执行相应的语句
4.1 M文件的编辑及工作路径的设置
进入MATLAB的Editor/Debugger窗口来编辑程序
在编辑环境中,文字的不同颜色显示表明文字的不同 属性。绿色:注解;黑色:程序主体;蓝色:控制流 程关键字;紫色:属性值的设定。 在运行程序之前,必须设置好MATLAB的工作路径, 使得所要运行的程序及运行程序所需要的其他文件处 在当前目录之下,否则可能导致程序无法执行。
第2讲 Matlab程序设计及绘图
第一次课补充
主要内容
基本数学表达式练习 逻辑运算和关系运算 结构数据和单元数据
基本表达式练习
用Matlab计算下列表达式的值 1) 2) 3)
y1 2 sin 85o 1 e2
y2 1 2i 2 1 ln( x 1 x 2 ), 其中x 5 2 0.45
disp
pause
强行终止程序运行:Ctrl+C键
选择结构
if 语句 switch语句 try语句
4.2.2 if-else-elseif 语句
(1)if 逻辑表达式 执行语句 end (2)if 逻辑表达式 执行语句1 else 执行语句2 end (3) if 逻辑表达式1 执行语句1 elseif 逻辑表达式2 执行语句2 … else end
2. 结构数据Structure(P34)
结构变量名.成员名 结构数组的创建
student = struct('name','Tom','score',[80 86 97]) student(2).name='Jack'; student(2).score=[60 70 100] student(3)=struct(‘name',‘Mary','score',[59 81 91])
关系运算符
<, <=, >, >=, ==, ~= 当两个比较量是标量时,直接比较大小。 当比较量为两个维数相同的矩阵时,比较两矩 阵相同位置的元素大小。 当一个是标量,一个是矩阵时,则把标量与矩 阵的每一个元素比较大小。 关系成立,结果为1;否则为0.
关系运算符
例:建立5阶方阵A,判断A的元素是否能被3整除。 A=[24,35,13,22,63;23,39,47,80,80;90,41,80,29,10 ;45,57,85,62,21;37,19,31,88,76] B=rem(A,3); B==0;
Break:
4.3 函数文件
定义行: 函数文件名:
最好与m文件名相同,调用时使用函数文件名。 定义行之后以%开头的第一注释行:函数文件名和功 能的简要描述 第一注释行之后的连续行:包含输入,输出参数的含 义及调用说明等信息。 空行后的注释行:包含函数的版本,作者等信息。
大于10000的最小m.若想分别求出和式大于
20000,30000的m值,该如何编写程序?
4.1 MATLAB的程序类型(续)
3、函数文件
函数定义行(关键字function) function [out1,out2,..]=filename(in1,in2,..) 函数体说明及有关注解 以(%)开头,只起注释作用,不执行; 函数体语句
流程运算语句的跳出或终止方法
Continue
CONTINUE pass control to the next iteration of FOR or WHILE loop. BREAK terminates the execution of FOR and WHILE loops. In nested loops, BREAK exits from the innermost loop only.
t=0:0.01:3; y=(t>=0&t<1).*t.^2+(t>=1&t<2).*(t.^2-1)+(t>=2&t<3).*(t.^2-2*t+1);
2. 结构数据Structure(P34)
结构变量名.成员名 结构数组的创建
student = struct('name','Tom','score',[80 86 97]) student(2).name='Jack'; student(2).score=[60 70 100] student(3)=struct(‘name',‘Mary','score',[59 81 91])
建立(大括号)
引用(大括号)
a{1,2}
显示:celldisp
2.单元数据Cell
{}:数组的内容 ():数组元素 例:
A(1,1) = {[1:4;3,5 7 8]}; A(1,2) = {'lesson 2'}; A{2,1} = ones(2,3); A{2,2} = logspace(1,3,3); celldisp(A)
4.2 程序控制结构 (P58)
程序控制结构
顺序结构 选择结构 循环结构
顺序结构
注意几个命令Leabharlann Baidu使用:
input:
a=input(‘请输入一个数’); B=input(‘please input your name’,’s’) disp(a) disp(B) pause(), pause(4)
结构成员的修改
增加结构的成员:student(1).age=20; 删除结构的成员:student=rmfield(student,’age’)
2.单元数据Cell
单元矩阵
同一般矩阵,只是矩阵元素用大括号括起来。 矩阵元素可以是不同类型 a={[1,2;3,4],'Jack';stu,0}
建立(大括号)
引用(大括号)
a{1,2}
显示:celldisp
2.单元数据Cell
{}:数组的内容 ():数组元素 例:
A(1,1) = {[1:4;3,5 7 8]}; A(1,2) = {'lesson 2'}; A{2,1} = ones(2,3); A{2,2} = logspace(1,3,3); celldisp(A)
y3
e0.3a e0.3a 0.3 a sin(a 0.3) ln , a 3.0, 2.9, 2.8,..., 2.8, 2.9, 3.0 2 2
1. 关系运算符
MATLAB的运算符有三种类型:算术运算符、关 系运算符、逻辑运算符。它们的处理顺序依次 为算术运算符、关系运算符、逻辑运算符。
try语句先试探try执行语句组1,如果出现错误, 将错误信息赋给保留的lasterr变量,转去执行语句 组 2。
4.2.3 循环结构
for语句 while语句 break和continue语句
For循环: p65例4.7,4.8
基本格式
for 循环变量=起始值:步长:终止值 循环体 end
3. 在Matlab中,循环结构的执行速度较慢,所以在实 际编程中,只要矩阵形式可以解决的问题,尽量不 执行循环体 要采用循环结构,这样可以提高代码的效率。 (参见exp_for )
遍取循环向量中的值 4. 循环可以使用break 跳出,但只跳出所在的循环, 不跳出整个嵌套结构。 (参见 exp_break & 是 exp_break2) 否
执行方式:
表达式的值和哪种情况(case) 的值相同,就执行哪种情况 中的语句,如果不同,则执 行otherwise中的语句。格式 中也可以不包括otherwise, 这时如果表达式的值与列出 的各种情况都不相同,则继 续向下执行。
参见例exp_switch.m
try语句(p64)
try
语句组1 catch 语句组2 end
步长缺省值为1,可以在正实数或负实数范围内任 意指定。对于正数,循环变量的值大于终止值时, 循环结束;对于负数,循环变量的值小于终止值 时,循环结束。 参见例exp_for.m
For循环应当注意的一些方面
1. for循环不能使用内部重新赋值循环变量而终止;
从循环向量中取一个值 2. for循环可以嵌套;
矩阵的查询函数any, all
A=[1 2 3;4 5 6;3 8 0]; any(A>=5)
当命令中某列含有大于等于5的元素时,对应输出 为1,否则为0 当命令中某列元素全大于2时,对应输出为1,否则 为0
all(A>2)
1. 逻辑运算符
注意:在处理逻辑运算时,运算元只有两个值 即0和1,所以如果指定的数为0,MATLAB认为 其为0,而任何数不等于0,则认为是1。 设有:A=[5 -4 0 -0.5] &与 A&B = [0 1 0 1] ; A&1 = [1 1 0 1] | 或 B=[0 1 0 9]
A|B = [1 1 0 1];
A|1 = [1 1 1 1]
~非 ~A = [0 0 1 0]; ~1 = 0
逻辑运算符(&, |, ~)
练习: 在[0,3pi]区间,求y=sinx的值,要求:消去负 半波,即令负半波的值为0.
1. 关系运算、逻辑运算之应用
用逻辑表达式求下列分段函数值。
0 t 1 t2 2 y t 1 1 t 2 , 其中 t 0 : 0.01 : 3 t 2 2t 1 2 t 3
关系运算符 假设有:A=[1 2 -1 -5] B=[0 2 3 1] < 小于 A<B ans=[0 0 1 1]; A < 1 ans=[0 0 1 1] > 大于 A>B ans=[1 0 0 0]; A > 1 ans=[0 1 0 0] <= 小于等于 A<=B ans=[0 1 1 1] >= 大于等于 A>=B ans=[1 1 0 0] == 等于 A=B ans=[0 1 0 0]; A = 1 ans=[1 0 0 0] ~= 不等于 A~=B ans=[1 0 1 1]; A~=1 ans=[0 1 1 1]
4.1 举例
例1: 求出 i 10000 的最小m值
i 1 m
编写程序如下:
sum=0; m=0; while (sum<=10000) m=m+1; sum=sum+m; end [sum, m] s=10011 m=141
4.1 举例
2. 在例1中, 编写一个简单的程序,可以求出和式
结构成员的修改
增加结构的成员:student(1).age=20; 删除结构的成员:student=rmfield(student,’age’)
2.单元数据Cell
单元矩阵
同一般矩阵,只是矩阵元素用大括号括起来。 矩阵元素可以是不同类型 a={[1,2;3,4],'Jack';stu,0}
第3章
自学
第4章 MATLAB程序设计
4.1 M文件
用MATLAB语言编写的程序,称为M文件。 两种类型:命令文件(Script File) 函数文件(Function File)
命令文件没有输入参数,也不返回输出参数,函数文件可 以带输入参数,也可返回输出参数; 命令文件对MATLAB工作空间中的变量进行操作,执行结 果也返回到工作空间;函数文件中定义的变量为局部变量, 当函数文件执行完毕时,这些变量被清除。 命令文件可以直接运行,函数文件要以函数调用的方式来 调用。