小编mac*_*ntu的帖子

Matlab和Numpy之间的特征向量输出冲突

我在Matlab和Numpy中计算特征向量,但得到不同的结果.我的印象是给定矩阵只有一组特征向量,但这两个输出看起来都是有效的.

这是我的matlab代码:

m = [  1.4675 + 0.0000i   0.1669 + 1.2654i;
       0.1669 - 1.2654i   1.3085 + 0.0000i]
[eig_vec,eig_val] = eig(m)
Run Code Online (Sandbox Code Playgroud)

eig_val包含:

eig_val =
     0.1092         0
          0    2.6668
Run Code Online (Sandbox Code Playgroud)

eig_vec包含:

eig_vec =
      0.0896 + 0.6789i   0.0953 + 0.7225i
     -0.7288 + 0.0000i   0.6848 + 0.0000i
Run Code Online (Sandbox Code Playgroud)

这是我的python代码:

m = np.array([[1.46753694+0.j,         0.16692111+1.26535838j],
              [0.16692111-1.26535838j, 1.30851770+0.j]])
eig_val,eig_vec = linalg.eigh(m)
Run Code Online (Sandbox Code Playgroud)

eig_val包含:

array([ 0.10923247,  2.66682217])
Run Code Online (Sandbox Code Playgroud)

eig_vec包含:

array([[-0.68477170+0.j        , -0.72875765+0.j        ],
       [ 0.09530915-0.72249836j, -0.08955653+0.67889021j]])
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释为什么这些输出是不同的,似乎每个两组不同的特征向量都是彼此的旋转版本.另一套更正确吗?

python matlab numpy octave eigenvector

8
推荐指数
1
解决办法
2236
查看次数

标签 统计

eigenvector ×1

matlab ×1

numpy ×1

octave ×1

python ×1