如何使用两个向量构建矩阵?
How do I build a matrix using two vectors?
所以我需要构建一个 x
和 y
坐标的矩阵。我将 x
存储在一个名为 vx=0:6000;
的矩阵中,将 y
存储在 Vy=repmat(300,1,6000);
.
中
x
中的值为 0,1,2,...,5999,6000
。
y
中的值为 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.
所以我需要构建一个 x
和 y
坐标的矩阵。我将 x
存储在一个名为 vx=0:6000;
的矩阵中,将 y
存储在 Vy=repmat(300,1,6000);
.
x
中的值为 0,1,2,...,5999,6000
。
y
中的值为 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.