Computing distance between two set of points (under vectorized approach)
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I have two matrices (two set of p-dimensional points), X1 and X2, which are n*p and m*p matrices. I want the final output Dist, whose i-j entries is the distance between row_i of X1 and row_j of X2 (i.e. inner product of the difference).
I want to do this in the vectorization way (avoid using for loop), since the actual matrix size is very big.
For p=2, the following can do the job (X1 is named as XY1 and X2 is named as XY2 in the example, since the dimension is 2 only):-
How can I do that, say for p=10? Many thanks!
function Dist=dist_matrix(XY1,XY2)
% input: both XY1 and XY2 have 2 columns
% input: XY1 and XY2 are not necessarily having same number of rows
X1=XY1(:,1);
Y1=XY1(:,2);
X2=XY2(:,1);
Y2=XY2(:,2);
f = @(hori,verti)(hori-verti);
Dist_X = bsxfun(f,X2',X1);
Dist_Y = bsxfun(f,Y2',Y1);
Dist=sqrt(Dist_X.^2+Dist_Y.^2);
end
3 commentaires
Réponses (0)
Voir également
Catégories
En savoir plus sur Matrix Indexing dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!