使用每行列索引的向量提取矩阵元素

时间:2014-05-08 13:47:41

标签: matlab matrix vectorization

我有一个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循环分别访问行的解决方案?

2 个答案:

答案 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)