Matlab中while语句用法

目录

语法

说明

示例

重复执行语句,直到表达式为 False

跳至下一循环迭代

在表达式为 false 之前退出循环


while语句是条件为true时重复执行的while循环。

语法

while expression
    statements
end

提示

  • 如果意外创建了一个无限循环(即永远不会自行结束的循环),请按下 Ctrl+C 停止执行循环。

  • 如果条件表达式的计算结果是一个矩阵,则仅当该矩阵中的所有元素都为 true(非零)时,MATLAB 才会计算这些语句。要在任何元素为 true 时执行语句,在any函数中对表达式换行。

  • 要以编程方式退出循环,可以使用break语句。要跳过循环中的其余指令,并开始下一次迭代,可以使用continue语句。

  • 嵌套许多 while 语句时,每个 while 语句都需要一个 end 关键字。

        MATLAB while 循环类似于其他编程语言(如 C 和 C++)中的 do...while 循环。但是,while 在循环的开头而不是末尾计算条件表达式。

do  % Not valid MATLAB syntax
    statements
while expression

        要模拟 do...while 循环的行为,请将 while 的初始条件设置为 true,并将条件表达式放入循环内。例如,通过使用 MATLAB while循环实现上面的do...while循环。

while true
    statements
    if ~expression
        break
    end
end

说明

while expression, statements, end 计算一个表达,并在该表达式为 true 时在一个循环中重复执行一组语句。表达式的结果非空并且仅包含非零元素(逻辑值或实数值)时,该表达式为 true。否则,表达式为 false。

示例

重复执行语句,直到表达式为 False

        使用 while 循环计算 factorial(10)。

n = 10;
f = n;
while n > 1
    n = n-1;
    f = f*n;
end
disp(['n! = ' num2str(f)])

n! = 3628800

跳至下一循环迭代

        统计文件 magic.m 中的代码行数。使用continue语句跳过空白行和注释。continue跳过while循环中的其余指令并开始下一迭代。

fid = fopen('magic.m','r');
count = 0;
while ~feof(fid)
    line = fgetl(fid);
    if isempty(line) || strncmp(line,'%',1) || ~ischar(line)
        continue
    end
    count = count + 1;
end
count

count = 34

fclose(fid);

在表达式为 false 之前退出循环

        求随机数序列之和,直到下一随机数大于上限为止。然后,使用break语句退出循环。

limit = 0.8;
s = 0;

while 1
    tmp = rand;
    if tmp > limit
        break
    end
    s = s + tmp;
end

表达式

        表达式可以包含关系运算符(例如 < 或 ==)和逻辑运算符(例如 &&、|| 或 ~)。使用逻辑运算符 and 和 or 创建复合表达式。MATLAB® 按照运算符优先级规则从左至右计算复合表达式。

        在 while...end 块的条件表达式中,逻辑运算符 & 和 | 的行为方式和短路运算符一样。此行为分别相当于 && 和 ||。由于 && 和 || 在条件表达式和语句中一致短路,因此,建议在该表达式中使用 && 和 ||,而不是 & 和 |。例如,

x = 42;
while exist('myfunction.m','file') && (myfunction(x) >= pi)
    disp('Expressions are true')
    break
end

        表达式的第一部分的计算结果为 false。因此,MATLAB 不需要计算表达式的第二部分,否则会导致未定义的函数错误。

  • 27
    点赞
  • 146
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值