MATLAB: Selecting Elements of a Matrix by Indexing with a Vector

indexing

I have a 100×3 matrix and I'd like to select one element from each row to form a 100×1 vector. Given a vector of 100 indeces between 1-3, how can I obtain this? The code below is what I thought should work, but instead produces a 100×100 matrix (concatenation of each 100×1 vector generated by each value of indx).
A = rand(100,3);
indx = randi([1 3],100,1); % for each row, which column do I want to pull the element from?
B = A(:,indx); % B is 100x100, I want 100x1

Best Answer

See sub2ind() function.
A = rand(100,3);
indx = randi([1 3],100,1);
idx = sub2ind(size(A), (1:size(A,1)).', indx);
B = A(idx);