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

How do I build a matrix using two vectors?

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

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

如何使用上面的 x,y 坐标构建一个 "vector"?

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

完成此操作后,我将要找到另一个固定点 x,y(我将复制 6000 次)与上面的矢量之间的距离,以便使随时间变化的距离图。

非常感谢!

您可以只使用水平串联 []

X = [Vx(:), Vy(:)];

如果你想计算另一个点和这个二维数组中每个点之间的距离,你可以这样做:

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

如果你有 R2016b 或更新版本,你可以简单地做

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

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

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 函数,并且需要 Statistics and Machine Learning Toolbox.