MATLAB: Matrix(Matrix)

MATLABmatrixmatrix arraymatrix manipulation

I am a new MATLAB user and am unsure of what operation is being carried out by the below chunk of code.
a=[1 1;1 2]
b=[1;0;0;1]
b(a(:),:)
ans =
1
1
1
0
a(:)
^obviously gives the column vector of a.
(a(:),:)
^selects all rows and columns in this column vector.
b(a(:),:)
^what does this chunk of code do?

Best Answer

The "a" values are simply being used as row numbers for indexing into b.
b(a(:),:)
= b([1;2;1;2],:)
which is equivalent to
[ b(1,:);
b(2,:);
b(1,:);
b(2,:)]
=
1
0
1
0