MATLAB 学习笔记——4. 流程控制
在划分控制结构所对应的代码块时,编程语言通常采用如下三种做法:
- 基于大括号
{}
:例如C/C++,Java - 基于
end
标记:例如FORTRAN,MATLAB - 基于缩进:Python
MATLAB受到FORTRAN的影响很大,也采用基于end
的代码块标记。
if 条件语句
提供例子即可
1 | if x>1 |
1 | if x>1 |
1 | if x>10 |
switch 条件语句
MATLAB支持基本的switch语句,我们可以判断表达式的值以进入不同的分支,不需要在分支结束使用break
,因为不会进入下一个分支,默认分支为otherwise
。MATLAB并不要求case
后面的结果是常量。
1 | switch x |
对于更复杂的switch情况,我们还可以使用下面的“反转”技巧,判断表达式取为true
,在case
中加入不同的布尔表达式
1
2
3
4
5
6
7
8
9
10
11
12
13
14score = 85;
switch true
case (score >= 90)
disp('Grade: A');
case (score >= 80)
disp('Grade: B');
case (score >= 70)
disp('Grade: C');
case (score >= 60)
disp('Grade: D');
otherwise
disp('Grade: F');
end
for 循环语句
for
循环语句的标准格式如下 1
2
3for index = startValue:step:endValue
% 循环体代码
end
和其他编程语言通常采用的左闭右开区间不同,这里的索引区间实际上是闭区间
例如 1
2
3
4for i = 1:2:11
disp(i);
end
% 1 3 5 7 9 11
对于步长为1的情况,可以省略步长 1
2
3
4for i = 1:10
disp(i);
end
% 1 2 3 4 5 6 7 8 9 10
可以用双重循环来遍历一个矩阵 1
2
3
4
5
6B = [1, 2;3, 4];
for i = 1:size(B, 1)
for j = 1:size(B, 2)
disp(B(i, j));
end
end
和其他语言一样,在循环中支持如下选项:
break
跳出当前循环;continue
跳转进入下一次循环。
必须注意:i,j
默认是虚数单位,如果用其作为循环变量,在语法上不会报错,但是后续不能再将其用作虚数单位。
for 遍历语句
我们可以用下面的语法方便地遍历行向量中的每一项
1 | A = [1 2 3]; |
对于矩阵,遍历语句每次会获取一列
1 | A = [1 2 3 |
输出 1
2
3
4
5
6
7
81
4
2
5
3
6
while 循环语句
while循环没什么好说的,和其他语言没什么区别,例如
1 | w=0;u=0; |
同样也支持break
和continue
语句。
补充
上述结构可以随意嵌套,例如
1 | for c = 1:ncols |