MATLAB: Assign values to a matrix without a loop

assignmentindexinglogical?matrix

I want to access to some elements of a matrix.
I have a matrix P :
P = [1 2 3 4 5 6 7 8
2 1 3 4 5 6 7 8
3 4 2 1 5 6 7 8
4 3 5 2 6 1 7 8
5 4 6 3 7 2 8 1
6 5 7 4 8 3 9 2
7 8 6 9 5 10 4 11
8 7 9 10 6 11 5 12
9 10 8 11 7 12 6 13
10 9 11 8 12 7 13 6];
and a matrix A :
A = [5 4
2 8
1 5
4 3
2 6
2 3
1 3
4 6
4 6
5 8];
I want to obtain the A element of P in S, for example
S(1,:) = [5 4]
S(2,:) = [1 8]
S(3,:) = [3 5]
...
S(9,:) = [11 12]
S(10,:) = [12 6]
I konw how to do it with a for loop, but, is there a way to do it without any loop ?

Best Answer

[m,n] = size(P) ;
I = repmat((1:m)',1,2) ;
idx = sub2ind(size(P),I,A) ;
iwant = P(idx)