使用矢量作为参考点计算矢量之间的角度:

Calculating the Angle Between Vectors by using a vector as a reference point:

我一直在努力寻找一种快速算法来计算长度为 x 的 n 个向量之间的所有角度。例如,如果 x=3 和 n=4,我的数据将如下所示:

A: [1,2,3]
B: [2,3,4]
C: [...]
D: [...]

我想知道是否可以找到所有 be 向量 (A,B,C,D) 相对于某个固定向量(即 X:[100,100,100,100])的角度,然后减去角度相对于该固定值找到的 (A,B,C,D),以找到它们之间的角度。我想这样做是因为我只需要计算一次角度,然后我可以减去所有矢量的角度以找到它们之间的差异。总之,我想知道做这个假设是否安全?

angle_between(A,B) == angle_between(A,X) - angle_between(B,X)

和angle_between函数是余弦相似度

该方法仅适用于二维向量。对于更高的维度,任何两个向量都将定义一个超平面,并且只有当第三个(参考)向量也位于该超平面内时,您的方法才会起作用。不幸的是,为了确定每对向量之间的角度,您必须计算所有 n choose 2 个向量,而不是仅计算 n 个角度并进行减法。