dan*_*dan 9 indexing matlab matrix
我有一个矩阵,例如
A = [ 1 2 3; 4 5 6; 7 8 9] ;
Run Code Online (Sandbox Code Playgroud)
和一个大小为1x3的向量,它指定每行中哪个元素是我正在寻找的元素 - 即If
vector = [ 1 2 1 ]
Run Code Online (Sandbox Code Playgroud)
那么期望的输出是
[ 1 5 7 ]
Run Code Online (Sandbox Code Playgroud)
因为1是第1行中的第1个元素,5是第2行中的第2个7元素,并且是第3行中的第1个元素.
我该如何实现这一目标?无法找到内置功能来做到这一点,这让我感到惊讶.
MATLAB提供SUB2IND函数将行/列下标转换为线性索引:
>> A = [1 2 3; 4 5 6; 7 8 9];
>> idx = sub2ind(size(A),1:3,[1 2 1]); %# rows: [1 2 3], cols: [1 2 1]
>> A(idx)
1 5 7
Run Code Online (Sandbox Code Playgroud)
首先,Matlab中的索引从上到下.
所以在你的情况下A [1] = 1,A [2] = 4,A [3] = 7
也就是说,在A'上工作会更容易,因为它有点琐碎.
B = A';
B((vector + [0:2].* 3))
Run Code Online (Sandbox Code Playgroud)