首页 文章

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

提问于
浏览
2

我有一个 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 回答

  • 5

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

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

    你也可以用线性索引来做,这是一个例子:

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

相关问题