Python 确保特征向量方向一致性

Python 确保特征向量方向一致性,python,scipy,eigenvector,Python,Scipy,Eigenvector,我怀疑这可能更像是一个数学问题,而不是一个计算问题,但由于这是我在Python库中遇到的一个问题,我想首先在这里提交它 我的目标是能够比较3d对象上的面片,同时尽可能消除旋转模糊性。为了做到这一点,我采用了由提出的方法,他们使用正态张量投票。得到的法向张量矩阵是一个3x3对称半定矩阵,其特征向量定义了一组局部3d轴,可用于取消网格相应部分的旋转 然而,虽然我得到了这些特征向量的良好方向,但它们的方向通常是相反的,如下图所示。请注意,理想情况下,特征向量在其方向上应具有相对均匀性,此处不考虑这一点

我怀疑这可能更像是一个数学问题,而不是一个计算问题,但由于这是我在Python库中遇到的一个问题,我想首先在这里提交它

我的目标是能够比较3d对象上的面片,同时尽可能消除旋转模糊性。为了做到这一点,我采用了由提出的方法,他们使用正态张量投票。得到的法向张量矩阵是一个3x3对称半定矩阵,其特征向量定义了一组局部3d轴,可用于取消网格相应部分的旋转

然而,虽然我得到了这些特征向量的良好方向,但它们的方向通常是相反的,如下图所示。请注意,理想情况下,特征向量在其方向上应具有相对均匀性,此处不考虑这一点:

为了实现这一点,我使用了
scipy.linalg.eigh
函数,该函数生成这些特征向量(按特征值的降序排序)


所以我的问题是:Python中有没有一种方法可以使用已经存在的库来保证这些特征向量方向的一致性?据我所知,特征向量的实际符号并不重要,可以解释这些结果(好的方向,坏的方向)。然而,我已经成功地阅读了很多使用这种方法的论文,因此我可能在这里做了一些错误的事情。

这看起来是一个有趣且经过充分研究的问题,但我怀疑如果没有一个可重复的小例子,您在这里是否会得到很多帮助。