MATLAB: Getting values of 3D matrix via their (x,y) coordinates without using loop

3dMATLABmatricesoptimization

It might be trivial. I have a matrix say A which is 3D and consists of two slices ( A(:,:,1) and A(:,:,2)). I want to get a vector containing the values of a slice of this matrix (say the first slice) that correspond to the (x,y) coordinates I have in two row vectors, say: points_x and points_y i.e. I want to get the values:
A(points_x(1), points_y(1), 1), A(points_x(2), points_y(2), 1), …, A(points_x(end), points_y(end), 1)
but I cannot figure out how to do this. I have tried:
A([points_x; points_y], 1)
but it returned a rectangular matrix not a vector. I don't want to use a for loop for the sake of code performance. Any ideas?

Best Answer

A = rand(5,5,2);
x = (1:3);
y = (2:4);
your_result = cell2mat(arrayfun(@(x,y) reshape(A(x,y,:),1,[]),x,y,'uniformoutput',false))
Related Question