Matlab中用二维数组索引二维数组的操作原理是什么?
MATLAB矩阵线性索引取值原理
这个操作是MATLAB里的线性索引(Linear Indexing),是矩阵元素寻址的基础方式之一,输出完全不是随机的,核心规则是列优先排序。
第一步:明确原矩阵的线性索引对应关系
MATLAB会把二维矩阵按先列后行的顺序,把所有元素排成一维序列,每个元素对应一个唯一的线性索引值(从1开始计数)。
你的原矩阵:
a = [1 2 3; 2 2 3; 1 2 3];
按列优先展开后,每个位置的索引和元素对应关系是:
- 索引1 → 1(第一行第一列)
- 索引2 → 2(第二行第一列)
- 索引3 → 1(第三行第一列)
- 索引4 → 2(第一行第二列)
- 索引5 → 2(第二行第二列)
- 索引6 → 2(第三行第二列)
- 索引7 → 3(第一行第三列)
- 索引8 → 3(第二行第三列)
- 索引9 → 3(第三行第三列)
第二步:拆解索引矩阵的取值逻辑
你用的索引矩阵是:
[4 2 3; 1 2 4; 3 2 2]
MATLAB会把这个矩阵里的每个数值,当作原矩阵a的线性索引,提取对应元素,最终输出矩阵的维度和索引矩阵完全一致:
- 第一行:索引4→2,索引2→2,索引3→1 → 输出
2 2 1 - 第二行:索引1→1,索引2→2,索引4→2 → 输出
1 2 2 - 第三行:索引3→1,索引2→2,索引2→2 → 输出
1 2 2
这就是你看到的输出的由来。
内容的提问来源于stack exchange,提问作者Yash
相关产品推荐
相关产品推荐

