使用矢量作为参考点计算矢量之间的角度:
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
个角度并进行减法。
我一直在努力寻找一种快速算法来计算长度为 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
个角度并进行减法。