matlab 定义符号向量,Matlab和Python采取的特征向量的符号差异

您能否解释一下为什么某些特征向量(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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值