条件语句 #
一、if语句 #
1.1 基本语法 #
matlab
if condition
% 条件为真时执行
end
1.2 if-else语句 #
matlab
x = 10;
if x > 0
disp('x是正数');
else
disp('x不是正数');
end
1.3 if-elseif-else语句 #
matlab
score = 85;
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);
1.4 嵌套if语句 #
matlab
age = 25;
has_license = true;
if age >= 18
if has_license
disp('可以驾驶');
else
disp('需要先考取驾照');
end
else
disp('年龄不够');
end
1.5 条件表达式 #
matlab
% 使用逻辑运算符
x = 10;
y = 20;
if x > 0 && y > 0
disp('x和y都是正数');
end
if x > 15 || y > 15
disp('x或y大于15');
end
if ~(x < 0)
disp('x不是负数');
end
% 使用逻辑函数
data = [1 2 3 4 5];
if isempty(data)
disp('数据为空');
else
disp('数据不为空');
end
if all(data > 0)
disp('所有元素都是正数');
end
if any(data > 4)
disp('存在大于4的元素');
end
二、switch语句 #
2.1 基本语法 #
matlab
day = 'Monday';
switch day
case 'Monday'
disp('星期一');
case 'Tuesday'
disp('星期二');
case 'Wednesday'
disp('星期三');
case 'Thursday'
disp('星期四');
case 'Friday'
disp('星期五');
case {'Saturday', 'Sunday'}
disp('周末');
otherwise
disp('未知');
end
2.2 多值匹配 #
matlab
grade = 'B';
switch grade
case 'A'
disp('优秀');
case 'B'
disp('良好');
case 'C'
disp('中等');
case {'D', 'F'}
disp('需要努力');
otherwise
disp('无效等级');
end
2.3 数值匹配 #
matlab
n = 3;
switch n
case 1
disp('一');
case 2
disp('二');
case 3
disp('三');
otherwise
disp('其他');
end
三、条件表达式 #
3.1 三元运算符替代 #
MATLAB没有三元运算符,但可以使用以下方式:
matlab
% 方法1:if-else
if x > 0
result = 'positive';
else
result = 'non-positive';
end
% 方法2:逻辑索引
result = 'non-positive';
if x > 0
result = 'positive';
end
% 方法3:使用函数
result = iff(x > 0, 'positive', 'non-positive');
function result = iff(condition, true_val, false_val)
if condition
result = true_val;
else
result = false_val;
end
end
四、实用示例 #
4.1 输入验证 #
matlab
function result = process_data(data)
% 检查输入
if nargin < 1
error('需要输入数据');
end
if ~isnumeric(data)
error('数据必须是数值类型');
end
if isempty(data)
warning('数据为空');
result = [];
return;
end
% 处理数据
result = data * 2;
end
4.2 文件类型处理 #
matlab
function data = load_file(filename)
[~, ~, ext] = fileparts(filename);
switch lower(ext)
case '.mat'
data = load(filename);
case '.csv'
data = readmatrix(filename);
case '.xlsx'
data = readmatrix(filename);
case '.txt'
data = fileread(filename);
otherwise
error('不支持的文件类型: %s', ext);
end
end
4.3 菜单选择 #
matlab
choice = menu('请选择操作', '新建', '打开', '保存', '退出');
switch choice
case 1
disp('新建文件');
case 2
disp('打开文件');
case 3
disp('保存文件');
case 4
disp('退出程序');
otherwise
disp('取消操作');
end
五、最佳实践 #
5.1 条件简化 #
matlab
% 不推荐:复杂嵌套
if x > 0
if y > 0
if z > 0
disp('全部为正');
end
end
end
% 推荐:合并条件
if x > 0 && y > 0 && z > 0
disp('全部为正');
end
5.2 提前返回 #
matlab
function result = process(data)
% 提前检查并返回
if isempty(data)
result = [];
return;
end
if ~isnumeric(data)
error('数据必须是数值类型');
end
% 主要逻辑
result = data * 2;
end
5.3 switch vs if-elseif #
matlab
% 多个离散值:使用switch
switch day
case 'Monday'
% ...
case 'Tuesday'
% ...
end
% 连续范围或复杂条件:使用if-elseif
if score >= 90
% ...
elseif score >= 80
% ...
end
六、总结 #
本章学习了:
- if语句:if、else、elseif
- switch语句:case、otherwise
- 逻辑运算符:&&、||、~
- 条件表达式:替代三元运算符
- 最佳实践:条件简化、提前返回
下一章将学习循环语句。
最后更新:2026-03-27