在 MATLAB 中,下标是访问矩阵和数组元素的核心机制,主要通过以下三种方式实现:
1. 整数下标- 基本规则:正整数从 1 开始计数,负整数从 -1 开始(表示从末尾反向索引)。
- 单元素访问:A(i,j) 表示第 i 行、第 j 列的元素。A = [1 2 3; 4 5 6; 7 8 9];disp(A(1,1)); % 输出 1(第一行第一列)disp(A(end,end)); % 输出 9(最后一行最后一列)
- 范围访问:结合冒号 : 可选择连续元素。disp(A(2, 1:2)); % 输出 [4 5](第二行第1到2列)
2. 逻辑下标- 布尔筛选:通过逻辑矩阵(true/false 或 1/0)选择符合条件的元素。B = rand(3); % 生成 3x3 随机矩阵mask = B > 0.5; % 创建逻辑掩码disp(B(mask)); % 输出所有大于 0.5 的元素
- 应用场景:常用于条件过滤或修改特定元素。
3. 冒号下标 :- 全选操作:单独使用 : 表示选择所有维度元素,等价于 1:end。C = [1 2 3; 4 5 6];disp(C(:)); % 输出所有元素列向量 [1; 4; 2; 5; 3; 6]
- 范围生成:start:step:end 可生成等差序列(如 1:2:5 生成 [1 3 5])。
关键注意事项- 基于 1 的索引:MATLAB 不支持 0 基索引(如 A(0) 会报错)。
- 数据类型限制:下标必须是整数或逻辑值,浮点数需显式转换(如 round)。
- 多维扩展:高维数组可通过逗号分隔下标(如 A(i,j,k))。
示例汇总% 整数下标 + 范围D = magic(3);disp(D(1:2, 2:3)); % 输出前两行的后两列% 逻辑下标修改元素E = [10 20 30];E(E > 15) = -1; % 将大于15的元素设为-1% 冒号下标重塑矩阵F = reshape(1:9, 3, 3);disp(F(:, 2)); % 输出所有行的第二列 [2; 5; 8]通过灵活组合这些下标方式,可以高效操作矩阵和数组的任意子集。