MATLAB中的特征值

时间:2010-07-20 15:43:43

标签: matlab linear-algebra eigenvector eigenvalue

在MATLAB中,当我为对称矩阵运行命令[V,D] = eig(a)时,最大特征值(及其相关向量)位于最后一列。但是,当我用非对称矩阵运行它时,最大的特征值在第一列。

我正在尝试计算特征向量中心性,这需要我将计算与最大特征值相关联的特征向量。因此,最大的特征值出现在两个不同的位置,这使我很难找到解决方案。

4 个答案:

答案 0 :(得分:15)

我通常做的是:

[V D] = eig(a);
[D order] = sort(diag(D),'descend');  %# sort eigenvalues in descending order
V = V(:,order);

答案 1 :(得分:5)

你只需找到D中最大特征值的索引,可以使用函数DIAG轻松完成提取主对角线和函数MAX以获得最大特征值及其出现的指数:

[V,D] = eig(a);
[maxValue,index] = max(diag(D));  %# The maximum eigenvalue and its index
maxVector = V(:,index);           %# The associated eigenvector in V

注意:作为woodchips points out,您可以为非对称矩阵设置复杂的特征值。在复杂输入X上操作时,MAX函数使用复数max(abs(X))的大小。在相等幅度元素的情况下,使用相位角max(angle(X))

答案 2 :(得分:4)

请注意,非对称矩阵往往具有复杂的特征值。

eig(rand(7))
ans =
       3.2957              
     -0.22966 +    0.58374i
     -0.22966 -    0.58374i
     -0.38576              
      0.49064              
      0.17144 +    0.27968i
      0.17144 -    0.27968i

另请注意,eig不会显式返回已排序的特征值(尽管基础算法倾向于根据特征值的大小以近似排序的顺序生成它们),但即使您确实进行了排序,也需要了解如何对复杂载体进行排序。

sort(rand(5,1) + i*rand(5,1))
ans =
      0.42343 +    0.51539i
    0.0098208 +    0.76145i
      0.20348 +    0.88695i
      0.43595 +    0.83893i
       0.8225 +    0.91264i

排序,当应用于复杂输入时,对复数的大小起作用。

答案 3 :(得分:1)

如果你只关心与最大特征值相关的特征向量,那么使用eigs不是更好吗?

[V, D] = eigs( a, 1, 'lm' ); %// get first eigenvector with largest eigenvalue magnitude.