python - 从 Matlab 和 Python 中获取的特征向量的符号差异

标签 python matlab python-2.7 linear-algebra eigenvector

您能否解释一下为什么某些特征向量 (2-4) 中存在符号差异?这种差异是否会影响进一步计算中的进一步计算,例如降维?

Matlab:

N = 5000;
dataA = rand(N,5);
covA = cov(dataA);
%covA = dataA*dataA'/(length(dataA)-1);
covA = covA + eps.*eye(size(covA));
[~,pA] = chol(covA);
assert(pA==0,'A is not possitive definite')

dataB = rand(N,5);
covB = cov(dataB);
%covB = dataB*dataB'/(length(dataB)-1);
covB = covB + eps.*eye(size(covB));
[~,pB] = chol(covB);
assert(pB==0,'B is not possitive definite')

[V,D] = eig(covA, covB);

V =

   -0.4241   -1.0891    1.8175    2.4067   -1.3032
    1.4445   -1.8960   -1.4118   -0.6514   -2.0075
    0.1214   -2.5039    0.3332   -0.1705    2.3609
   -2.1235   -0.7007    1.1632   -2.1532   -1.0554
   -2.2599   -0.4405   -2.2236    1.2545    0.0760

python :

from scipy.linalg import eigh
import scipy.io
import numpy as np

cov_mat = scipy.io.loadmat('cov.mat')
covA = cov_mat['covA']
covB = cov_mat['covB']
eigvals, eigvecs = eigh(covA, covB, eigvals_only=False)

np.savetxt('eigvals.txt', eigvals, fmt='%.4f')
np.savetxt('eigvecs.txt', eigvecs, fmt='%.4f')

eigvecs =

   0.4241 1.0891 -1.8175 -2.4067 -1.3032
  -1.4445 1.8960  1.4118  0.6514 -2.0075
  -0.1214 2.5039 -0.3332  0.1705  2.3609
   2.1235 0.7007 -1.1632  2.1532 -1.0554
   2.2599 0.4405  2.2236 -1.2545  0.0760

最佳答案

它们是相同的特征向量,因为翻转特征向量上的符号不会改变它们的公式——它们将具有相同的特征值。它不会因此影响进一步的计算。

为什么它们的计算方式不同? 很可能是因为运行的子程序根据正在操作的矩阵而变化,并且不关心它们返回什么“符号”,因为特征值没有。


一个简单的数学证明:

如果x 是具有特征值q 的矩阵A 的特征向量,则根据定义我们有Ax = qx.

它遵循 A(-x) = -(Ax) = -(qx) = q(-x) 这样 -x 是一个特征向量相同的特征值。

关于python - 从 Matlab 和 Python 中获取的特征向量的符号差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35429459/

相关文章:

python - 防止 Python 代码导入某些模块?

python - 从任何(不安全)字符串创建(理智/安全)文件名

python - 遍历抽象 Django 模型的所有外键相关子项

python - 保存裁剪图像时出现奇怪的枕头异常

python - 使用协议(protocol) 2 : Python3->2 data 进行 pickle

Python EAN-13 条码生成器脚本溢出

python - 如何在 django 模型的字段中保存单个空格 ("")?

matlab - 如何使用 MATLAB 求圆内包含的任意形状的面积

matlab - matlab中的余弦相似度内置函数

matlab - 为什么从matlab获得的卷积与理论上获得的不同?