【发布时间】:2017-09-10 10:52:10
【问题描述】:
我有四个1-by-n 矩阵。前两个矩阵表示n 点在2D 平面中的位置(位置的x 和y 分量)。后两个矩阵表示另一个n 点在2D 平面中的位置。
我想创建一个n-by-n 矩阵(比如M),其中M(i,j) 是第一个矩阵中的点i 和第二个矩阵中的点j 之间的距离。
有人可以帮忙吗?任何答案都非常感谢。
- n 是一个很大的数字,所以我正在寻找一种有效的方法
【问题讨论】:
我有四个1-by-n 矩阵。前两个矩阵表示n 点在2D 平面中的位置(位置的x 和y 分量)。后两个矩阵表示另一个n 点在2D 平面中的位置。
我想创建一个n-by-n 矩阵(比如M),其中M(i,j) 是第一个矩阵中的点i 和第二个矩阵中的点j 之间的距离。
有人可以帮忙吗?任何答案都非常感谢。
【问题讨论】:
另一种方法是使用bsxfun 手动计算距离:
M = sqrt(bsxfun(@minus, x1(:), x2(:).').^2 + bsxfun(@minus, y1(:), y2(:).').^2);
【讨论】:
您可以使用pdist2 来做到这一点(请参阅documentation):
x1=[1,2,3,4,5];
y1=[6,7,8,9,10];
x2=[1,1,1,1,2];
y2=[8,3,1,2,3];
mat1=[x1',y1'];
mat2=[x2',y2'];
M = pdist2(mat1,mat2)
【讨论】: