How to index like A(B(i), i)

1 次查看(过去 30 天)
For example,
A = rand(3, 5);
B = [3,2,1,2,3];
and I want C like:
for i = 1:size(A, 2)
C(i) = A(B(i), i);
end
Is there any way to get rid of the for-loop? For example, direct access like A(B(i), i).
I thought an anonymous function would help. While, if I define
f = @(x) (A(B(x), x))
C = f(1:size(A,2))
C will turn out to be a 5x5 matrix, while I want is a 1x5 matrix.
Is there any other solution?

采纳的回答

Azzi Abdelmalek
Azzi Abdelmalek 2013-10-17
n=1:size(A,2);
C=A(sub2ind(size(A),B(n),n))

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Cell Arrays 的更多信息

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by