Getting values of 3D matrix via their (x,y) coordinates without using loop
2 次查看(过去 30 天)
显示 更早的评论
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?
2 个评论
采纳的回答
José-Luis
2016-6-29
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))
更多回答(1 个)
KSSV
2016-6-29
why dont you go for interpolation? Interpolation would be the easiest one to get values at your desired points.
0 个评论
另请参阅
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!