使用矩阵的特征向量计算svd *(矩阵')

时间:2015-04-17 12:54:07

标签: octave svd eigenvector eigenvalue

我读到了Singular Value Decomposition。引用维基百科:

The left-singular vectors of M are eigenvectors of MM∗.
The right-singular vectors of M are eigenvectors of M∗M.
The non-zero singular values of M (found on the diagonal entries of Σ) 
are the square roots of the non-zero eigenvalues of both M∗M and MM∗

我写了这个八度代码(控制台输出显示在这里):

a是正在计算svd的矩阵。

octave:1> a = [1,3;3,1]
a =

   1   3
   3   1

octave:3> [U,S,V] = svd(a)
U =

  -0.70711  -0.70711
  -0.70711   0.70711

S =

Diagonal Matrix

   4   0
   0   2

V =

  -0.70711   0.70711
  -0.70711  -0.70711

检查svd是否真的有用..

octave:4> U*S*V
ans =

   3.00000  -1.00000
   1.00000  -3.00000

octave:5> U*S*V'
ans =

   1.00000   3.00000
   3.00000   1.00000

现在尝试第一个原则(维基百科)风格:

octave:6> b = a*a'
b =

   10    6
    6   10

octave:7> c = a'*a
c =

   10    6
    6   10

octave:8> [E1,L1] = eig(b)
E1 =

  -0.70711   0.70711
   0.70711   0.70711

L1 =

Diagonal Matrix

    4    0
    0   16

octave:9> [E2,L2] = eig(c)
E2 =

  -0.70711   0.70711
   0.70711   0.70711

L2 =

Diagonal Matrix

    4    0
    0   16

我可以看到bc的特征值是a的奇异值的平方。这很酷。但left-singular-vectorsright-singular-vectors出错......签名问题。

获得正确值需要多少额外步骤?

1 个答案:

答案 0 :(得分:0)

你已经拥有了正确的价值观。

特征向量定义为乘法常数。从their definition可以看出这一点。因此,在您的情况下,[-0.70711; -0.70711][0.70711; 0.70711]是等效的。

在两种情况下,[-1; 1]特征向量对应于sqrt(4)= 2特征值,而[1; 1]特征向量对应于sqrt(16)= 4特征值。