我有一个MxN
矩阵,我想要一个列向量v
,使用向量s
告诉我矩阵中的每一行我将采用哪一列。
以下是一个例子:
Matrix =
[ 4 13 93 20 42;
31 18 94 64 02;
7 44 24 91 15;
11 20 43 38 31;
21 42 72 60 99;
13 81 31 87 50;
32 22 83 24 04]
s = [4 4 5 4 4 4 3].'
所需的输出是:
v = [20 64 15 38 60 87 83].'
我想使用表达式
Matrix(:,s)
会工作,但事实并非如此。有没有使用for循环分别访问行的解决方案?
答案 0 :(得分:5)
它不漂亮,并且可能有更好的解决方案,但你可以像这样使用函数sub2ind
:
M(sub2ind(size(M),1:numel(s),s'))
答案 1 :(得分:3)
你也可以使用线性索引来做,这是一个例子:
M=M'; s=s';
M([0:size(M,1):numel(M)-1]+s)