for循环结构:
for x = array
( commands )
end
while循环结构:
while expression
( commands )
end
a(1)=1
a(2)=1
i=2
while a(i)<=10000
a(i+1)=a(i-1)+a(i)
i=i+1
end;
i
a(i)
单分支:
if expression
(commands)
end
双分支:
if expression
(commands1)
else
(commands2)
end
多分支:
if expression1
(commands)
elseif expression2
(commands)
…………
else
(commands)
end
如果判决条件expression为一个空数组,MATLAB认为条件为假(false)。
表达式有时由多个逻辑子表达式组成的,MATLAB将尽可能少地检测这些子表达式的值。例如,表达式为:(子表达式1 |子表达式2),当MATLAB检测到子表达式1的值为真时,它就认为表达式为真,而不再对子表达式2进行检测。又如,表达式为:(子表达式1 & 子表达式2),当MATLAB检测到子表达式1的值为假时,它就认为表达式值为假的,从而跳过该结构。
if指令判决和break指令的配合使用,可以强制终止for循环或while循环。
switch-case结构:
switch ex ex为一标量或字符串。
case test1
(commands 1) 当ex等于test1时,执行组命令1,然后跳出该结构。
case test2
……
case testk
(commands k) 当ex等于testk时,执行组命令k,然后跳出该结构。 otherwise otherwise指令可以不存在
(commands) 表达式不等于前面所有检测值时,则执行该组命令。
end
1 当遇到switch结构时,MATLAB将表达式的值依次和各个case指令后面的检测值进行比较。如果比较结果为假,则取下一个检测值再比较,一旦比较结果为真,MATLAB将执行相应的一组命令,然后跳出该结构。如果所有的比较结果都为假,即表达式的值和所有的检测都不等,MATLAB将执行otherwise后面的一组命令。由此可见上述结构保证了至少有一组命令会得到执行。
2 switch指令后面的表达式应为一个标量或者为一个字符串。对于标量形式的表达式,比较这样进行:表达式 = = 检测值i。而对于字符串,MATLAB将调用函数strcmp 来实现比较:strcmp(表达式,检测值i)。
3 case指令后面的检测值不仅可以为一个标量值或一个字符串,还可以为一个元胞数组。如果一个检测值是一个元胞数组,MATLAB将把表达式的值和该元胞数组中的所有元素进行比较;如果元胞数组中某个元素和表达式的值相等,MATLAB认为此次比较结果为真,从而执行与该检测值相应的一组命令。
for i=1:10
a{i}=89+i
b{i}=79+i
c{i}=69+i
d{i}=59+i
end
c=[d,c]
Name={' Jack','Marry','Peter',' Rose',' Tom'};
Mark={72,83,56,94,100};
Rank=cell(1,5);
% 创建一个含5个元素的架构数组S,它有三个域 S=struct('Name',Name,'Marks',Mark,'Rank',Rank);
for i=1:5
switch S(i).Marks
case 100 % 得分为100时
S(i).Rank='满分'; % 列为‘满分’等级
case a % 得分在90和99之间
S(i).Rank='优秀'; % 列为‘优秀’等级
case b % 得分在80和89之间
S(i).Rank='良好'; % 列为‘良好’等级
case c % 得分在60和79之间
S(i).Rank='及格'; % 列为‘及格’等级
Otherwise % 得分低于60
S(i).Rank='不及格'; % 列为‘不及格’等级
end
end
% 将学生姓名,得分,登记等信息打印出来
disp(['学生姓名 ',' 得分 ',' 等级']);
disp(