比较两个矢量方向MATLAB

时间:2013-06-05 14:18:26

标签: matlab math vector

我有三艘船,这些船的方向由V1V2V3提供:

V1 = [0.7030  -0.7112]
V2 = [0.5099  -0.8602]
V3 = [-0.6799  -0.7333]

这是他们的图形可视化:

vectors

如何V3“接近”V2(如图所示)或“离开”V2?我想检查第3号船只是#1号船只或2号船只的一部分,如果船只#3从船只#1分支,那么V3离“{{ 1}}和“朝向”V1(如图所示),在这种情况下,船只#3是船只#1的一部分。

如何在MATLAB中执行此操作?

2 个答案:

答案 0 :(得分:2)

您所要做的就是获取两个方向向量s = V1.'*V3;

的点积

现在,如果答案是肯定的,那么两个向量会聚(指向同一个方向)。

如果答案为否定,则两个向量发散(指向彼此)

当两个向量垂直时,点积为零,当它们平行时等于1.

<强>为什么吗

因为点积表示两个矢量之间角度的余弦。

a · b = |a| |b| cos(θ)

当角度大于π/ 2时,余弦为负,矢量指向彼此“远离”。

答案 1 :(得分:0)

以下是查看“V1”是否接近“V2

的方法

计算V1的第一个坐标与线段V2之间的最小距离。 对V1的第二个坐标执行相同的操作。

如果第一个坐标超过第二个坐标,请考虑V2接近V1