Python 和 Matlab 中的不同特征向量

问题描述 投票:0回答:1

我需要你的帮助...我正在尝试计算这个矩阵的特征向量:

0.683043    -0.0248989  0.291915    0.0220227   -0.350487   -0.318394
0.435584    0.276779    0.192531    -0.00158314 -0.653018   -0.182419
0.409294    -0.196908   0.321927    0.409339    -0.214044   -0.301017
1               0           0           0            0           0
0               1           0           0            0           0
0               0           1           0            0           0

我在 Matlab 中拥有的是

[V,D] = eig([A; eye(d*(na-1),d*na)])
,我得到了这个:

Matlab result

在使用Python时

np.linalg.eig(np.block([[A], [np.eye((na-1)*d, na*d)]]))
,我得到了这个:

Python result

值几乎相同,但最后两列的符号完全相反:(有没有办法获得完全相同的输出?我一直在查看文档,但这是不可能的。

我尝试使用不同的超参数和 scipy 函数,但它仍然不同

python matlab matrix linear-algebra eigenvector
1个回答
0
投票

恰好相反的符号仅表示向量方向相反,即正确。特征向量告诉你描述矩阵的新轴的方向(PCA 在这方面有很好的直觉),所以负数是正确的。

示例:在笛卡尔坐标系中,以下三个向量中的哪一个定义 x 轴:[1,0]、[-1,0]、[0,1]。答案:[1, 0] 和 [-1, 0] 都定义了 x 轴

有没有办法获得相同的值?不,这取决于特征向量计算方式的实现,因此您不能强制其中之一。让您用来比较/验证它们的任何代码都对此灵活。

© www.soinside.com 2019 - 2024. All rights reserved.