1

我有矩阵 A 和一个向量 b,它指定要为矩阵的每个对应行提取的元素的列索引。

例如,

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

b = [1 3 2]'

我想有c = [1 6 8]'输出。如何做到这一点?

我试过A(:, b)了,但它不能按我的需要工作。

4

2 回答 2

2

可能有一个更优雅的解决方案,但这有效:

b = [1 3 2]';
[rows, cols] = size(A);
A(sub2ind([rows cols], [1 : rows]', b))
于 2011-10-11T04:32:40.240 回答
2

作为@dantswain 解决方案的替代方案,您可以直接转到线性索引,假设您总是从列中进行选择:

r = size(A,1);
A( (1:r).' + (b-1) * r)

这会更快,但不一定更清晰。

不幸的是,没有一个优雅的解决方案。

于 2011-10-11T09:42:53.403 回答