How to vectorize computing all pairwise vectors in a pointcloud?
Afficher commentaires plus anciens
I have an m points x n dimensions array xy of Cartesian coordinates. In my case, n is 2, but this should generalize to at least three dimensions. My goal is get the all the vectors created by combinatorial pairs of points. I can do this with nested for loops (see below), how can I vectorize this operation? I can get the vector magnitudes with pdist2(xy,xy), but not the vector angles.
[m,n] = size(xy);
V = zeros(m,m,n);
for im1 = 1:m
for im2 = 1:m
V(im1,im2,:) = xy(im1,:) - xy(im2,:);
end
end
Réponses (3)
Burke Rosen
le 23 Mar 2017
Lowey
le 23 Mar 2017
If I understand your question correctly, the meshgrid function may be of help.
im1 = 1:m;
im2 = 1:m;
[X, Y] = meshgrid(im1, im2);
The elements in X and their corresponding elements in Y give all possible combinations
Walter Roberson
le 23 Mar 2017
V = pdist(xy);
Catégories
En savoir plus sur Specialized Messages dans Centre d'aide et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!