1

我想问一些关于特征向量中心性的问题。我必须使用幂迭代计算特征值。这是我计算特征值的代码:

  v=rand(165,1);
    for k=1:5
        w = data_table*v;
        lamda = norm(w);
        v = w/lamda;

    end

当我得到一个特征值时,我很困惑使用我得到的单个特征值来计算特征向量得分。例如,在我计算特征值的代码中,我得到显性特征值 = 78.50。有了这个特征值分数,我想计算特征向量分数。通常,我们总是使用代码计算特征值和特征向量,例如: [U,V] = eig(data_matrix); 但是,该代码的结果:

v = 
-167.59 0   0

0   -117.51 0

0   0   -112.0


V = 
0.0404505   0.04835455  -0.01170

0.0099050   -0.0035217  -0.05561

0.0319591   -0.0272589  0.018426

根据结果​​,我们使用三个特征值得分计算特征向量。我的问题是如何计算特征向量得分,但只使用我们在幂迭代代码中获得的一个特征值得分?

4

1 回答 1

1

幂迭代找到主要特征向量,即具有最大特征值的特征向量。

如果你从

v=ones(165,1)/165;     % initialisation
for i=1:5              % 5 iterations
    w=data_table*v;    % assuming size(data_table) = [165 165]
    v=w/norm(w);
end

并且您的算法在 5 次迭代中收敛,则 v 是您的主要特征向量;

另外,我将从一个较小的示例开始测试您的代码。您的 matlab 调用[U,V] = eig(data_matrix);令人困惑,因为 V 应该是大小为 [165 165] 的对角矩阵,而不是大小为 [3 3] 的完整矩阵;

尝试这个:

X=[1 1 1;1 1 2;1 2 2]
[U,V]=eig(X)
X*U(:,3)
U(:,3)*V(3,3)

查看 matlab 输出中最大的特征值是多少,即 (V3,3),以及对应的向量 U(:,3)。

你 cat 使用幂迭代来找到这个特征向量:

 v=ones(1,3)
 w=v*X;v=w/norm(w)
 w=v*X;v=w/norm(w)
 w=v*X;v=w/norm(w)
 w=v*X;v=w/norm(w)
于 2013-04-24T12:07:51.003 回答