概述
目录
一、顺序结构
二、if-else-end结构
三、switch-case结构
四、try-catch结构
五、for 循环结构
六、while循环结构
一、顺序结构
顺序结构是MATLAB程序中最基本的结构,表示程序中的各操作是按照它们出现的先后顺序执行的。顺序结构可以独立使用构成一个简单的完整程序,常见的输入、计算、输出三部曲的程序就是顺序结构。在大多数情况下,顺序结构作为程序的一部分,与其他结构一起构成一个复杂的程序,例如分支结构中的复合语句、循环结构中的循环体等。
示例1:计算圆的面积。该程序的语句顺序就是输入圆的半径r,计算S=π·r·r,输出圆的面积S。
首先,调出MATLAB的程序编辑器。单击编辑器工具栏中的“新建”图标,系统即新建一个默认名为Untitled的M文件,再输入如下代码
r=5; %定义变量r并赋值
s=pi*r*r; %计算圆的面积
fprintf('面积为:%fn',s) %输出面积
单击编辑器工具栏中的“保存”图标,并以“XXX”为名称保存。单击工具栏上的“运行”图标运行该M文件,得到结果:
二、if-else-end结构
if-else-end 指令为程序流提供了一种分支结构,该结构的形式根据实际情况的不同而不同,主要有以下几种:
(1)若判决条件 expression 为真,则执行命令组,否则跳过该命令组。具体的调用格式如下:
(2)若可供选择的执行命令组有两组,则采用如下结构:
(3)若可供选择的执行命令组有n(n>2)组,则采用如下结构:
示例2:已知符号函数
使用if语句判断当给定变量x的值时,相应的函数值y。
打开Editor(M文件编辑器),编写程序如下:
x=input('输入x的值:');
if(x>0)
y=1;
elseif(x==0)
y=0;
else
y=-1;
end
disp(y)
将该脚本M文件命名为XXX.运行该程序,输入不同值,得到结果:
三、switch-case结构
switch语句执行基于变量或表达式值的语句组,关键字case和otherwise用于描述语句组。只执行第一个匹配的情形。用到switch则必须用end与之搭配。switch-case的具体语法结构如下:
注意:
- switch-case结构的调用格式保证了至少有一组指令组将会被执行。
- switch指令之后的表达式value应为一个标量或一个字符串。当表达式为标量时,比较命令为表达式==检测值i;而当表达式为字符串时,MATLAB将会调用字符串函数strcmp来进行比较,strcmp(表达式,检测值i)。
- case 指令之后的检测值不仅可以是一个标量或一个字符串,还可以是一个元胞数组。如果检测时是一个元胞数组,则MATLAB将会把表达式的值与元胞数组中的所有元素进行比较。如果元胞数组中有某个元素与表达式的值相等,MATLAB 则认为此次比较的结果为真,从而执行与该次检测相对应的命令组。
示例3:switch-case结构的简单运用
n=3;
switch n
case 1
data='星期一' %如果n=1,定义data='星期一'
case 2
data='星期二' %如果n=1,定义data='星期二'
case 3
data='星期三' %如果n=1,定义data='星期三'
case 4
data='星期四' %如果n=1,定义data='星期四'
case 5
data='星期五' %如果n=1,定义data='星期五'
case 6
data='星期六' %如果n=1,定义data='星期六'
case 7
data='星期日' %如果n=1,定义data='星期日'
otherwise
data='错误!!!' %如果n不等于上面所有值,定义data='错误!!!'
end
运行结果:
注意:与多分支的if语句相比,switch语句主要用于条件多且单一的情况,典型的应用情况是数学中的分段函数。此外,两者各有优缺点如:
四、try-catch结构
try-catch结构的具体句法形式如下:
注意:
(1)只有当MATLAB执行命令组1发生错误时,才执行命令组2。try-catch结构只提供两个可供选择的命令组。
(2)当执行command1发生错误时,可调用lasterr函数查询出错的原因。如果函数lasterr的运行结果为空字符串,则表示命令组1被成功执行了。
(3)如果执行命令组2时又发生错误,则MATLAB将会终止该结构。
示例4:try-catch结构的简单运用
n=6;
m=magic(4) %生成一个4*4的矩阵m
try
mn=m(n,:) %取m的第n行元素
catch
me=m(end,:) %若m没有第n行元素,则取m的最后一行元素
end
lasterr %显示出错原因
运行结果:
五、for 循环结构
for 循环结构是针对大型运算相当有效的运算方法。MATLAB 中提供的循环结构有 for循环结构和 while 循环结构两种。for 循环重复执行一组语句一个预先给定的次数,匹配的end描述该语句。for循环的具体句法形式如下:
(1)for指令后面的变量x称为循环变量,而for与end之间的组命令commands被称为循环体。循环体被重复执行的次数是确定的,该次数由array数组的列数来确定。因此,在for循环过程中,循环变量x被依次赋值为数组array的各列,每次赋值,循环体都被执行一次。
(2)for循环内部语句末尾的分号隐藏重复的打印,若commands指令中包含变量,则循环后在命令行窗口直接输入变量r来显示变量r经过循环后的最终结果。
示例5:利用for循环创建对称矩形
for i=1:4
for j=1:4
if i>(5-j)
else
m(i,j)=i+j-1;
end
end
end
m %输出结果
运行结果:
示例6:利用for循环求解1+2+...+100的和
sum=0;
for i=1:1:100
sum=sum+i;
end
sum %输出结果
运行结果:
六、while循环结构
while循环在一个逻辑条件的控制下重复执行一组语句一个不定的次数,匹配的end描述该语句。while循环的具体句法形式如下:
(1)在while和end之间的命令组被称为循环体。MATLAB在运行while循环之前,首先检测expression的值,若其逻辑值为真,则执行命令组;命令组第一次执行完毕后,继续检测expression的逻辑值,若其逻辑值仍为真,则循环执行命令组,直到表达式expression的逻辑值为假时,结束while循环。
(2)while循环和for循环的区别在于,while循环结构的循环体被执行的次数是不确定的,而for循环中循环体的被执行次数是确定的。
(3)一般情况下,表达式的值都是标量值,但是MATLAB中也同样运行表达式为数组的情况。若表达式为数组且数组所有元素的逻辑值均为真时,while循环才继续执行命令组。
(4)如果while指令后的表达式为空数组,那么MATLAB默认表达式的值为假,直接结束循环。
(5)在if-else-end分支结构中提到的有关变量比较的注意事项,对while语句也同样适用。
示例7:利用while循环求解1+2+...+100的和
sum=0;
i=1;
while i<101
sum=sum+i;
i=i+1;
end
sum %输出结果
运行结果:
最后
以上就是谦让路灯为你收集整理的15、MATLAB的六种控制结构的全部内容,希望文章能够帮你解决15、MATLAB的六种控制结构所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复