MATLAB流程控制

本文介绍了MATLAB中的流程控制语句,包括if条件语句,switch选择结构,while和for循环,以及break和continue的使用。在MATLAB中,这些语句用于根据条件执行不同的代码块或重复执行代码。if语句用于基于条件执行不同代码,switch语句提供了多条件选择,while和for循环用于重复执行,而break和continue则用于中断或跳过循环的某些部分。
摘要由CSDN通过智能技术生成

前言:简述 MATLAB 中的流程控制语句–if、switch、while、for、break、continue


MATLAB 有与大多数编程语言类似的流程控制语句,最大的不同时下述所有循环和条件语句都换行以 end 闭合。

流程控制语句作用
if, elseif, elseif语句为真,则执行子句
switch, case, otherwise根据switch语句内容判断执行哪个子句
while重复执行子句直到while中的条件为真
for执行子句固定次数
try, catch执行子句并捕获执行过程中的异常
break跳出循环
continue直接进入下一次循环
end结束子句
pause暂停程序
return返回到调用函数处

选择结构

选择结构又称为分支结构,是根据给定的条件是否成立来决定程序的执行流程。

if语句

if condition1 % 关系运算或逻辑运算
	statement1
elseif condition2
	statement2
else
	statement3
end
成立
不成立
start
条件
语句组
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} 110100

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 次,其中 nvalArray 的列数,由 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
  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值