前言:简述 MATLAB 中的流程控制语句–if、switch、while、for、break、continue
MATLAB 有与大多数编程语言类似的流程控制语句,最大的不同时下述所有循环和条件语句都换行以 end
闭合。
流程控制语句 | 作用 |
---|---|
if, elseif, else | 若if 语句为真,则执行子句 |
switch, case, otherwise | 根据switch 语句内容判断执行哪个子句 |
while | 重复执行子句直到while 中的条件为真 |
for | 执行子句固定次数 |
try, catch | 执行子句并捕获执行过程中的异常 |
break | 跳出循环 |
continue | 直接进入下一次循环 |
end | 结束子句 |
pause | 暂停程序 |
return | 返回到调用函数处 |
选择结构
选择结构又称为分支结构,是根据给定的条件是否成立来决定程序的执行流程。
if语句
if condition1 % 关系运算或逻辑运算
statement1
elseif condition2
statement2
else
statement3
end
当条件结果为标量时,非零表示条件成立,零表示条件不成立。
当条件结果为矩阵时,如果矩阵为非空,且不含零元素,则条件成立,否则不成立 。
例如,[1,2;0,4]表示条件时,条件不成立;[1,2;3,4] 表示条件时,条件成立。
if [1, 2]
disp('标量[1,2]为true')
end
if [1, 0]
disp('标量[1,0]为true')
else
disp('标量[1,0]为false')
end
a = 10;
% rem(a, b):返回a除以b的余数
if rem(a, 2) == 0
disp('a is even');
else
disp('a is odd');
end
switch语句
switch expression % 选择判断量
case value1 % 选择判断值1
statement1 % 选择判断语句1
case value2
statement2
...
otherwise
statement3 % 判断执行语句
end
评估的
switch_expression
是一个标量或字符串,有限的。评估的
case_expression
是标量,标量或字符串的字符串或单元格数组。
在 MatLab 中,当其中一个 case 语句后的条件为真时,switch-case 语句不对其后的 case 语句进行判断,也就是说,即使有多条 case 判断语句为真,也只执行所遇到的第一条为真的语句。
month = 3;
switch month
case{3,4,5}
season = 'Spring'
case{6,7,8}
season = 'Summer'
case{9,10,11}
season = 'Fall'
case{12,1,2}
season = 'Winter'
end
循环结构
while语句
while expression
statements
end
while 循环反复执行程序语句只要表达式为 true。当结果不为空,并包含所有非零元素(逻辑或实际数字),表达式为 true ;否则,表达式为 false。
n = 1;
% prod(1:n)表示从1到n连乘
while prod(1:n) < 1e100
n = n + 1;
end
1e100表示 1 ∗ 1 0 100 1*10^{100} 1∗10100
for语句
重复执行某些语句,执行次数取决于 index 变量从 initVal 按 step 递增至大于 endVal。
% 每次迭代时按值 step 对 index 进行递增,或在 step 是负数时对 index 进行递减。
for index = initVal:step:endVal
statements
end
以下为另两种写法:
% 未指定 step,默认为 1
for index = initVal:endVal
statements
end
% 每次迭代时从数组 valArray 的后续列创建列向量 index。
for index = valArray
statements
end
在第一次迭代时,index = valArray(:,1)
。循环最多执行 n
次,其中 n
是 valArray
的列数,由 numel(valArray(1,:))
给定。输入 valArray
可属于任何 MATLAB 数据类型,包括字符向量、元胞数组或结构体。
具体实例如下:
% 输出1~100的和
sum = 0;
for i = 1 : 100
sum = i + sum;
end
sum
解释:i从1到100,每次增加一个,该共循环100次。
注意:分号的位置;不能使用+=
符号
% 输出1到10之间的奇数和
sum = 0;
for i = 1:2:10
sum = i + sum;
end
sum
解释:i = 1:2:10中间的2表示步长,表示从1到10,每次增加2,即1,3,5,7,9五个数之和;步长也可以为负数
% 对向量的遍历
A = rand(1,4);
for i = A
i
end
解释:rand函数
用于随机生成0~1之间的数,rand(1,4)生成1*4的列向量
。
% 对矩阵的遍历
A = magic(4);
for i = A
i
end
解释:magic(n)函数用于生成任意一行或一列或主副对角线之和相等的方阵,对矩阵的循环遍历是依次取出矩阵中的每一列元素
多层for循环
在 MATLAB 中嵌套 for 循环语句的语法如下:
for m = 1:j
for n = 1:k
statements;
end
end
for循环可以按照需要进行嵌套。
for i = 1:2:6
for j = 1:3
y = i*j
end
end
break和continue的使用
break 用于终止离它最近的一层 for 循环;continue 用于跳过离它最近的一层 for 循环,接着执行下一次循环。
% break
for i = 1:2:10
if i > 7
break
else
i
end
end
% continue
for i = 1:10
if i == 4
continue
else
i
end
end