MATLAB - 判断语句
MATLAB - 决策结构
Section titled “MATLAB - 决策结构”决策结构是编程的基本组成部分。它们允许您的代码根据不同情况做出不同响应,使您的程序智能和动态。这些结构要求您指定一个或多个要评估的条件。根据条件是真还是假,会执行特定的代码块。
将其想象成一个十字路口。一个条件(例如,“下雨了吗?”)决定了您的程序将采取哪条路径。如果为真,它可能会执行“带伞”的代码。如果为假,它可能会执行“戴墨镜”的代码。这种对程序执行流程的控制对于几乎任何任务都至关重要。
MATLAB 提供了一套标准的决策语句,这是许多编程语言的共同特征。以下是可用结构的摘要:
| 序号 | 语句与描述 |
|---|---|
| 1 | if … end 语句 一个 if ... end 语句由一个逻辑表达式后跟一个或多个语句组成,这些语句仅在该表达式为真时执行。 |
| 2 | if…else…end 语句 一个 if 语句后可跟一个可选的 else 块。该 else 块在逻辑表达式为假时执行。 |
| 3 | if…elseif…else…end 语句 此结构用于在多个(两个以上)备选项之间做出决策。一旦 if 或 elseif 表达式被发现为真,则执行相应的语句,并跳过结构的其余部分。 |
| 4 | 嵌套 if 语句 您可以在另一个 if 或 elseif 语句内使用一个 if 或 elseif 语句。然而,对于复杂的逻辑,这可能变得难以阅读,应谨慎使用。 |
| 5 | switch 语句 一个 switch 语句提供了一种简洁的方式,用于测试单个变量与一系列可能值是否相等。 |
| 6 | 嵌套 switch 语句 与嵌套 if 语句类似,您可以在另一个 switch 语句内使用 switch 语句。 |
if...end 语句
Section titled “if...end 语句”这是最简单的决策形式。代码块仅在条件满足时执行。
%% 示例:检查温度读数是否表示发烧temperature = 38.5;
if temperature > 37.5 disp('Warning: High temperature detected. Potential fever.');end
% --- Output ---% 警告:检测到高温。可能发烧。if...else...end 语句
Section titled “if...else...end 语句”此结构为条件为假时提供了一条替代路径。
%% 示例:检查学生是否及格score = 65;passingGrade = 50;
if score >= passingGrade disp('Congratulations, you passed!');else disp('You did not pass. Better luck next time.');end
% --- Output ---% 恭喜,您及格了!if...elseif...else...end 语句
Section titled “if...elseif...else...end 语句”这是检查多个互斥条件时的理想结构。它比深度嵌套的 if 语句更具可读性。
%% 示例:根据分数分配字母等级score = 88;
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('等级是:%s\n', grade);
% --- Output ---% 等级是:Bswitch 语句
Section titled “switch 语句”一个 switch 语句是当您需要根据一组特定的离散值检查单个变量时的绝佳选择。它适用于数字、字符向量以及现代的 string 或 categorical 数组。
%% 示例:根据所选菜单选项做出响应(使用字符串)% 在现代 MATLAB 中,文本更推荐使用字符串(双引号)。menuSelection = "Save";
switch menuSelection case "Open" disp('正在打开文件...'); case "Save" disp('正在保存文件...'); case "Close" disp('正在关闭文件...'); otherwise disp('无效选择。');end
% --- Output ---% 正在保存文件...决策的最佳实践
Section titled “决策的最佳实践”- 使用
elseif提高清晰度:避免深度嵌套的if语句。一个if...elseif...else链更易于阅读和维护。 - 利用短路求值 (Short-Circuiting):MATLAB 对
&&(逻辑与)和||(逻辑或)使用短路求值。在conditionA && conditionB这样的表达式中,只有当conditionA为真时才会评估conditionB。这可以用于防止错误,例如:if (x ~= 0) && (1/x > 5),这可以防止除零错误。 - 处理 ‘Otherwise’ 情况:在使用
switch或if...elseif时,最好包含一个最终的else或otherwise块来处理任何意外值。这会使您的代码更健壮。 - 谨慎比较浮点数:由于计算机存储浮点数的方式,使用
==进行直接比较可能不可靠。例如,0.1 + 0.2 == 0.3为false!相反,请检查绝对差值是否在小容差范围内:if abs(a - b) < 1e-9。
常见错误与调试技巧
Section titled “常见错误与调试技巧”- 赋值与比较:一个非常常见的错误是在
if条件内部使用赋值运算符=而不是比较运算符==(例如if x = 5)。MATLAB 编辑器通常会用警告标记此错误。 - 缺少
end关键字:每个if、switch、for和while块都必须以end关键字结束。MATLAB 编辑器通过自动缩进和突出显示匹配的关键字来帮助您,从而更容易发现缺少的end。 - 字符串与字符向量:在较旧的 MATLAB 代码中,您会看到用于字符向量的单引号(
'text')。现代 MATLAB 强烈倾向于使用双引号("text")来表示string对象,它们更灵活。在进行比较时请注意类型。