Getting values of 3D matrix via their (x,y) coordinates without using loop
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Konstantinos
el 29 de Jun. de 2016
Comentada: José-Luis
el 29 de Jun. de 2016
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 comentarios
José-Luis
el 29 de Jun. de 2016
If you want a vector, how are you going to distinguish between points?
Respuesta aceptada
José-Luis
el 29 de Jun. de 2016
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))
2 comentarios
Más respuestas (1)
KSSV
el 29 de Jun. de 2016
why dont you go for interpolation? Interpolation would be the easiest one to get values at your desired points.
0 comentarios
Ver también
Categorías
Más información sobre Get Started with MATLAB en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!