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

cla*_*iop 2 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].'
Run Code Online (Sandbox Code Playgroud)

而期望的输出是:

v = [20 64 15 38 60 87 83].'
Run Code Online (Sandbox Code Playgroud)

我想用这个表达方式

Matrix(:,s)
Run Code Online (Sandbox Code Playgroud)

会工作,但事实并非如此.有没有使用for循环分别访问行的解决方案?

Gha*_*aul 5

它不漂亮,可能有更好的解决方案,但你可以使用这样的功能sub2ind:

 M(sub2ind(size(M),1:numel(s),s'))
Run Code Online (Sandbox Code Playgroud)