条件语句 #

一、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

六、总结 #

本章学习了:

  1. if语句:if、else、elseif
  2. switch语句:case、otherwise
  3. 逻辑运算符:&&、||、~
  4. 条件表达式:替代三元运算符
  5. 最佳实践:条件简化、提前返回

下一章将学习循环语句。

最后更新:2026-03-27