【问题标题】:Eigenvector and Eigenvalue of 8 X 8 matrix8 X 8 矩阵的特征向量和特征值
【发布时间】:2012-07-12 06:09:54
【问题描述】:

我有一个 8 x 8 的浮点数矩阵,需要从中计算特征向量和特征值。这是为了使用 PCA(主成分分析)减少特征,如果通过传统方法完成,这将是一项非常耗时的工作。我尝试使用幂法,Y = C*X,其中 X 是我的 8 X 8 矩阵。

                float[,] XMatrix = new float[8, 1];
                float[,] YMatrix = new float[8, 1];
                float max = 0;
                XMatrix[0, 0] = 1;



                for (int i = 0; i < 8; i++)
                {
                    for (int j = 0; j < 1; j++)
                    {

                        for (int k = 0; k < 8; k++)
                        {
                            YMatrix[i, j] += C[i, k] * XMatrix[k, j];
                            if (YMatrix[i, j] > max)
                                max = YMatrix[i, j];
                        }

                    }
                }

我知道这是不正确的,但无法弄清楚。我需要帮助来使用幂法或更有效的计算方法。

提前致谢。

【问题讨论】:

    标签: c# matrix pca eigenvector eigenvalue


    【解决方案1】:

    以有效的方式(即快速!)检索任何大小(密集)矩阵的特征值/特征向量,并不是完全微不足道的。我建议你使用类似 QR 算法的东西(尽管这对于单个 8x8 矩阵的一次性计算可能有点过分了)。

    QR 算法计算矩阵的 Schur 分解。它当然是其中之一 特征值计算中最重要的算法。但是,它仅适用于密集矩阵(如上所述)。

    QR 算法由两个独立的阶段组成。首先,通过相似性 变换,原始矩阵以有限步数变换到 Hessenberg 形式或 - 在 Hermitian/对称情况下 - 到实三对角形式。这第一阶段 算法准备第二阶段,实际的 QR 迭代应用于 Hessenberg 或三对角矩阵。

    算法的整体复杂度(浮点数)为 O(n3)。对于这个算法的一个很好的解释see here。或者在 Google 中搜索特征值算法应该会为您提供许多计算所需特征值/向量的替代方法。

    另外,我没有详细研究过这个,但是Math.NET 一个免费的图书馆可能会在这里帮助你......

    【讨论】:

    • 谢谢。我为此使用了 Math.Net 库。输出与 Matlab 略有不同,但对我有用。
    • 接受它作为答案,如果它是答案......很高兴我能提供帮助。
    猜你喜欢
    • 2012-08-08
    • 2018-10-31
    • 2019-04-27
    • 2017-09-27
    • 2011-09-29
    • 2012-03-18
    • 1970-01-01
    • 1970-01-01
    • 2022-06-14
    相关资源
    最近更新 更多