Getting values of 3D matrix via their (x,y) coordinates without using loop
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
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 Commenti
Risposta accettata
José-Luis
il 29 Giu 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))
Più risposte (1)
KSSV
il 29 Giu 2016
why dont you go for interpolation? Interpolation would be the easiest one to get values at your desired points.
0 Commenti
Vedere anche
Categorie
Scopri di più su Introduction to Installation and Licensing in Help Center e File Exchange
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!