participal Eigenvalues Java (JAMA)



我刚刚将我的代码从 MATLAB 移植到 Java,我需要矩阵的特征分解,具体来说我只需要前 k 个值而不是完整的分解。

但是,在 JAMA 中,特征分解类计算完整的特征分解。我试图修改它,但它抛出了一些错误。还有其他类似的库吗?

在 MATLAB 中,所讨论的函数是eigs(k,A)

所以它只是返回所有特征值的数组。您希望返回一个仅包含数组前 k 值的数组。在Java中有很多方法可以做到这一点。一种是将数组转换为 ArrayList,获取该列表的子列表,然后转换回数组。

double[] mySubArray = new double[k];
for (int i=0; i < k; i++) {
        subArray[i] = myFullArray[i];
    }

顺便说一下,这是他所指的图书馆:http://math.nist.gov/javanumerics/jama/doc/

如果你找不到任何现有的代码,我想你应该参考这篇论文或这篇论文。

也许你可以在 http://commons.apache.org/proper/commons-math/javadocs/api-3.6/org/apache/commons/math3/linear/EigenDecomposition.html 中尝试另一个名为 EigenDecomposition 的包,有一些方法像 getImagEigenvalue(int i) ,你可以通过这个得到i -th 特征值。

相关内容

  • 没有找到相关文章