Skip to content

MATLAB - While 循环

一个 while 循环是 MATLAB 中一种基本的控制流结构,只要指定条件为真,它就会重复执行一段代码块。它非常适合预先不知道迭代次数的情况。

MATLAB 中 while 循环的基本语法是:

while <condition>
% Code block to be executed
<statements>
end

该循环的运作方式如下:

  1. MATLAB 首先评估 <condition>(条件)。
  2. 如果条件为 true(真),则执行循环体内的 <statements>(语句)。
  3. 执行后,控制流返回步骤 1。
  4. 如果条件为 false(假),循环终止,程序继续执行 end 关键字之后的语句。

如果条件的结果是一个包含所有非零元素(逻辑值或实数)的非空数组,则该条件被认为是 true(真)。否则,条件为 false(假)。

让我们创建一个脚本文件来演示一个从 10 计数到 19 的基本 while 循环。

% 初始化计数器变量
a = 10;
% 只要 'a' 小于 20,while 循环就继续执行
while (a < 20)
% 显示 'a' 的当前值
fprintf('Value of a: %d\n', a);
% 重要提示:更新计数器以避免无限循环
a = a + 1;
end
fprintf('Loop finished. Final value of a is %d\n', a);

运行此脚本将产生以下输出:

Value of a: 10
Value of a: 11
Value of a: 12
Value of a: 13
Value of a: 14
Value of a: 15
Value of a: 16
Value of a: 17
Value of a: 18
Value of a: 19
Loop finished. Final value of a is 20

你可以使用 break 和 continue 语句来控制 while 循环的流程。

  • break:立即终止整个 while 循环。
  • continue:跳过当前迭代的剩余部分,并继续进行下一次循环条件的评估。
% 查找大于 50 的第一个 7 的倍数
num = 50;
while true % 一个故意设计的无限循环,由 break 控制
num = num + 1;
% 如果数字不是 7 的倍数,则跳过
if mod(num, 7) ~= 0
continue;
end
% 如果执行到这里,说明找到了 7 的倍数
fprintf('First multiple of 7 after 50 is: %d\n', num);
break; % 退出循环
end
  • 无限循环:最常见的错误是忘记更新控制循环条件的变量。这会导致条件永远保持为 true(真)。请务必确保你的循环逻辑允许条件最终变为 false(假)。
  • for 与 while:当你已知确切的迭代次数时(例如,遍历向量的元素),使用 for 循环。当你需要迭代直到满足特定条件时(例如,从文件读取直到文件末尾,或运行收敛算法),使用 while 循环。

matlab_loops.htm