MATLAB: How to do something like A(:,B(:))

matrix manipulation

Hello everybody,
I have a matrix A of size n x p, e.g. 10*4
A =
0.2760 0.7513 0.8407 0.3517
0.6797 0.2551 0.2543 0.8308
0.6551 0.5060 0.8143 0.5853
0.1626 0.6991 0.2435 0.5497
0.1190 0.8909 0.9293 0.9172
0.4984 0.9593 0.3500 0.2858
0.9597 0.5472 0.1966 0.7572
0.3404 0.1386 0.2511 0.7537
0.5853 0.1493 0.6160 0.3804
0.2238 0.2575 0.4733 0.5678
and a vector B (1 x n), e.g.
B =
2 2 4 4 1 2 2 3 3 4
and I would like to build a vector C (1 x n) where C(k) = A(k,B(k)) (in my example I would like to get C = [0.7513 0.2551 0.5853 …….] I thought I was pretty comfortable with matlab syntax but I'm lost there ! 🙂 if anyone has any idea …

Best Answer

nm=size(A)
C=A(sub2ind(nm,1:nm(1),B))