在Matlab点列表中存储3d坐标

时间:2014-10-02 09:04:26

标签: matlab list random coordinates points

我目前面临标题中提到的问题。 如果我只想要有3个单独的点并将它们记录为matlab中有3个坐标的点,就像下面的

一样容易
A=[0 0 1];%coordinates of Q1
B=[0 0 -1];%coordinates of Q2
C=[0 1 0];%coordinates of Q3

因此,它描述了A(0,0,1),B(0,0,-1),C(0,1,0)的坐标。在进一步的计算中,我可以使用坐标并进行如下计算:

R1=A-B; %vector from Q2 to Q1
R2=A-C; %vector from Q3 to Q1
R3=C-B; %vector from Q2 to Q3

然而,如果我想用100分随机生成许多分数,我上面写的方式是愚蠢的。而且我也想像以前一样使用坐标,因为它更方便。以下是我尝试过的方法。

% random distributed points
x = rand(Number_of_Points, 1);
y = rand(Number_of_Points, 1);
z = x.^2 + y.^2;

Points = [x(:) y(:) z(:)];

但它只是记录了所有点的3个坐标,我不能像以前那样单独记录它们。我想使用Points(1)-Points(2)计算向量是否有人知道如何做到这一点?

1 个答案:

答案 0 :(得分:2)

您只需要使用下标索引而不是线性索引:

Points(1,:) - Points(2,:)

或者如果你想要欧几里德距离,你可以像

那样做
 sqrt(sum((Points(1,:) - Points(2,:)).^2))

或使自己成为匿名函数:

PointsDistance = @(a,b)(sqrt(sum((Points(a,:) - Points(b,:)).^2)))

现在你可以打电话了

PointsDistance(1,2)