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

Matlab 使用每行的列索引向量提取矩阵元素,matlab,matrix,vectorization,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].' 所需输出为

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

这不太好,可能有更好的解决方案,但您可以像这样使用函数
sub2ind

 M(sub2ind(size(M),1:numel(s),s'))

您也可以使用线性索引进行此操作,以下是一个示例:

M=M'; s=s';
M([0:size(M,1):numel(M)-1]+s)

这是我能说的最漂亮的了;)此解决方案的优点是您不需要转置
M