MATLAB 中特征值和特征向量的排序

计算科学 matlab
2021-11-28 18:26:37

以下 MATLAB 函数生成矩阵 X 的特征值和特征向量。

[V,D] = eig(X) produces a diagonal matrix D of eigenvalues and a
full matrix V whose columns are the corresponding eigenvectors so
that X*V = V*D.

我的问题是:

  1. 这是否意味着第一个(或主要或主要)特征向量位于 V 的最后一列?注意:作者说,主要特征向量的所有系数都是正的,并且剩余的特征向量(其余列)必须具有负分量,以便与 u^(i );
  2. 关于“相应的特征向量”,我们是“逐列”还是“逐行”阅读它们?
  3. 特征值-特征向量是否成对出现?如果是,考虑到上述情况,那么相应的特征值是否位于矩阵 D 的右下角?
  4. 实际上,我想要按降序排列特征值及其对应的特征向量,然后选择 2 个说“最重要”的特征值。我该做什么?
  5. 出于好奇,但这意味着“两个时间序列 Fi 和 Fi' 是不相关的,因为它们的经验相关性在 i != i' 时消失了???如何在 MATLAB 中检查?

我知道有很多问题,但如果您能帮我回答其中的一些问题,我将不胜感激

4个回答

让我们在这里收集所有答案。我想您的矩阵是对称的,因为您说特征向量是正交的并尝试对特征值进行排序。

  1. 不,特征值可以按任何顺序出现;不能保证它们是订购的。
    1之二。有一些类别的矩阵(例如Z 矩阵或非负矩阵),已知最大或最小特征向量是非负的。那一定是你的情况。
    1三。如果另一个特征向量是非负的,则与主要特征向量的标量积(1)将是正数,因为它是非负数项的总和,其中一项至少是正数。

  2. 返回是特征向量。

  3. 是的,它们是成对出现的,从某种意义上说D(一世,一世)是相对于的特征值(,一世). 这是从X*=*D,如果你考虑一下。
    3之二。如上所述,特征值不是按特定顺序返回的。如果你愿意,你可以排序D一致地使用这些命令:

    [uselessVariable,permutation]=sort(diag(D));

    D=D(permutation,permutation);V=V(:,permutation);

  4. 我猜“最重要”意味着更大。这意味着最后两列,在您按上述方式重新排序后。

  5. 检查维基百科上的互相关这个陈述可能意味着样本协方差为零,即1n=1n(φ-μ)(φ'-μ)'=0, 在哪里μμ'是两个时间序列的均值。如果您希望通过实验验证这一点,我想您将很难从 Matlab 中得到一个精确的零,因为这个和通常会非常缓慢地收敛到它的渐近值。如果您有 2 个有效数字,请认为自己很幸运。

至少在旧版本的 Matlab 中,eig 没有对特征值进行排序。(对于复杂的特征值,甚至没有自然排序。)

因此选择想要的特征值索引更安全一世通过检查所有特征值,并获得相应的特征向量作为列(,一世).

实际上(i,i)矩阵的每个对角元素D(即特征值)对应于i矩阵的第 列VD(i,i)对应的特征向量的值越高越重要。

MatLab函数eig(X)按升序对特征值进行排序,所以需要取矩阵的最后两列V

另外请记住,如果您尝试执行因子分析,您可以简单地使用 MatLab 的princomp函数或在使用eig.

第一个特征向量的分量符号无论如何都没有定义(如果 X 是非奇异且对称的,例如因子分析中的相关矩阵)

给定公式,您应该逐列阅读向量。

与第 i 个向量相关联的值是 D 的对角线上的第 i 个值。

我不确定特征值或特征向量是有序的,而且你所说的“顺序”对我来说似乎并不清楚......

如果我假设您想通过减少特征值来对向量进行排序,那么只需切换 V 中的右列和 D 中的右行和列。