如何使用两个向量构建矩阵?

时间:2016-10-10 19:29:31

标签: matlab vector concatenation coordinates euclidean-distance

所以我需要构建一个xy坐标的矩阵。我将x存储在一个名为vx=0:6000;的矩阵中,y存储在Vy=repmat(300,1,6000);中。

x中的值为0,1,2,...,5999,6000y中的值为300,300,...,300,300

如何构建"向量"上面有x,y坐标?

看起来像[(0,300);(1,300);...;(5999,300);(6000,300)]

在我完成此操作后,我想要找到另一个固定点x,y(我将复制6000次)与上面的矢量之间的距离,以便建立距离图随着时间的推移

非常感谢你!

2 个答案:

答案 0 :(得分:4)

您可以在[]

中使用横向连接
X = [Vx(:), Vy(:)];

如果要计算此2D阵列中另一个点与每个点之间的距离,可以执行以下操作:

point = [10, 100];
distances = sqrt(sum(bsxfun(@minus, X, point).^2, 2));

如果您有R2016b或更新版本,您只需执行

即可
distances = sqrt(sum((X - point).^2, 2));

答案 1 :(得分:3)

稍微更优雅的替代方案(在我看来)如下:

Vx = (0:1:6000).';
C = [Vx 0*Vx+300];  % Just a trick to avoid the overly verbose `repmat`.

p = [10,100];       % Define some point of reference.
d = pdist2(C,p);    % The default "distance type" is 'euclidian' - which is what you need.

这使用MATLAB 2010a中引入的pdist2函数,需要统计和机器学习工具箱