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

7 views (last 30 days)
Hu
Hu on 17 Oct 2013
Answered: Azzi Abdelmalek on 17 Oct 2013
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?

Accepted Answer

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

More Answers (0)

Tags

Community Treasure Hunt

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

Start Hunting!