Skip to content

MATLAB - If…Elseif Else 语句

条件语句是编程逻辑的基石,允许您的代码根据特定条件做出决策并执行不同的代码块。在 MATLAB 中,if...elseif...else 结构是实现此决策过程的主要工具。

在构建条件逻辑时,请记住以下规则:

  • 一个 if 块可以有零个或多个 elseif 块。
  • 一个 if 块最多只能有一个 else 块,且该 else 块必须位于所有 elseif 块之后。
  • 一旦 if 或 elseif 语句中的某个条件评估为 true,其对应的代码块将被执行,并且整个 if...end 结构将退出。不再测试后续条件。
if <condition_1>
% 如果 condition_1 为 true,则执行此代码
<statements_1>
elseif <condition_2>
% 如果 condition_1 为 false 且 condition_2 为 true,则执行此代码
<statements_2>
else
% 如果所有前面条件都为 false,则执行此代码
<statements_3>
end

让我们编写一个脚本,根据数字分数分配字母等级。这是 if-elseif-else 结构的经典用例。创建一个名为 assignGrade.m 的脚本文件并添加以下代码:

% 一个根据数字分数确定字母等级的脚本
score = 85; % 分配一个测试分数
fprintf('分数为 %d。\n', score);
if score >= 90
grade = 'A';
elseif score >= 80
grade = 'B';
elseif score >= 70
grade = 'C';
elseif score >= 60
grade = 'D';
else
grade = 'F';
end
fprintf('对应的字母等级是:%c\n', grade);

当您运行此脚本时,输出将是:

The score is 85.
The corresponding letter grade is: B

尝试将 score 变量更改为其他值,例如 95、72 或 50,以查看逻辑如何分支到不同的结果。

当您需要将单个变量与离散的特定值列表(例如字符串或整数)进行比较时,switch 语句可以比冗长的 if-elseif-else 链更简洁、更易读。

choice = 'Option B';
switch choice
case 'Option A'
disp('Executing action for Option A.');
case 'Option B'
disp('Executing action for Option B.');
case {'Option C', 'Option D'} % 分组情况
disp('Executing shared action for C or D.');
otherwise
disp('Invalid choice.');
end
  • = 与 ==:一个常见的初学者错误是使用单个等号(=)进行赋值,而不是使用双等号(==)进行比较。这将导致错误。
  • 浮点数比较:由于精度问题,避免对浮点数进行直接相等性检查(==)。相反,请检查绝对差值是否在很小的容差范围内。例如:if abs(a - b) < 1e-9。
  • 逻辑运算符:对于标量逻辑条件,请使用短路运算符 &&(AND)和 ||(OR)。它们一旦确定结果就停止评估,效率更高。处理数组时,请使用逐元素运算符 & 和 |。
  • 避免深度嵌套:深度嵌套的 if 语句难以阅读和调试。如果您的逻辑深度超过 2-3 层,请考虑通过将其分解为更小的函数或使用不同的方法来重构您的代码。
  • 测试所有路径:在测试代码时,请确保您有覆盖 if-elseif-else 语句每个分支的测试用例,以防止隐藏的错误。