You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MATLAB中如何通过索引矩阵设置目标矩阵?

实现方法:利用MATLAB线性索引快速赋值

首先,咱们先明确核心逻辑:你需要根据INDEX矩阵指定的位置(索引),从A矩阵中提取元素来构建MATRIX。这里要注意MATLAB默认的列优先线性索引规则,不过也可以灵活调整成行优先,下面分两种常见情况说明:

情况1:按MATLAB默认的列优先索引提取

MATLAB中,任何矩阵都可以通过线性索引访问,默认是按列遍历的。比如你的A矩阵:

A = [1 4 5; 2 9 1]; % 标准MATLAB矩阵写法,比嵌套括号更常用

它的列优先线性索引对应关系是:

  • 索引1 → A(1,1)=1
  • 索引2 → A(2,1)=2
  • 索引3 → A(1,2)=4
  • 索引4 → A(2,2)=9
  • 索引5 → A(1,3)=5
  • 索引6 → A(2,3)=1

如果你的INDEX矩阵里的数字就是这个列优先的索引,那一行代码就能搞定:

INDEX = [5 1 3; 1 3 2; 2 1 3];
MATRIX = A(INDEX); % 直接用INDEX作为索引矩阵提取元素

运行后得到的MATRIX是:

5 1 4
1 4 2
2 1 4

情况2:按行优先索引提取

如果你希望INDEX对应的是行优先的索引(也就是按行遍历A的顺序),那先把A转成一维行向量,再提取:

A_flat = reshape(A, 1, []); % 行优先展开A,得到[1 4 5 2 9 1]
MATRIX = A_flat(INDEX);

运行后得到的MATRIX是:

9 1 5
1 5 4
4 1 5

关于你例子中的小疑问

你给出的目标MATRIX里出现了3,但原A矩阵中并没有这个元素,这大概率是笔误~比如第三行第一个元素应该是9,这样就能对应上逻辑啦。

内容的提问来源于stack exchange,提问作者Martin Domino

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:14:41