MATLAB: Vector Indexing into 2D array

arrayindexing

I have a 2D array and I want to pick out a different row value for each column.
Here is an example:
A = magic(3)
ans =
8 1 6
3 5 7
4 9 2
Pick out rows r=[2 3 2] from columns c=[1 2 3] Of course A(r,c) won't work, I just get the A reordered. What I want is the row vector
[A(r(1),c(1)) A(r(2),c(2)) A(r(3),c(3))]
which gives [3 9 7] .

Best Answer

r=[2 3 2]
c=[1 2 3]
A=magic(3)
idx=sub2ind(size(A),r,c)
out=A(idx)