在Matlab中访问矩阵中的多个元素

3
如何在Matlab中高效地访问不同列的元素向量? 例如:
A = [1 2 5 4
     4 6 2 5
     3 6 8 9
     2 4 5 7
     2 9 4 2]

获取:(1, 1) (2,2) (3,1) (4,4) (5,3)

2个回答

3
使用 sub2ind 函数:
ret = [1 1;
       2 2;
       3 1;
       4 4;
       5 3];

A( sub2ind(size(A), ret(:,1), ret(:,2)) )

1

sub2ind 几乎肯定是最好的选择,但如果你真的需要它运行更快,你可能会发现自己手动计算线性索引更快:

A = [1 2 5 4
     4 6 2 5
     3 6 8 9
     2 4 5 7
     2 9 4 2]

ret = [1 1;
       2 2;
       3 1;
       4 4;
       5 3];

n = size(A,1)

A(ret(:,1) + (ret(:,2)-1)*n)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接