How to vectorize computing all pairwise vectors in a pointcloud?
4 次查看(过去 30 天)
显示 更早的评论
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
0 个评论
回答(3 个)
Lowey
2017-3-23
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
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Introduction to Installation and Licensing 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!