参与特征值Java(JAMA)

时间:2012-05-31 15:48:56

标签: java matlab linear-algebra jama

我刚将我的代码从MATLAB移植到Java,我需要矩阵的特征分解,特别是我只需要第一个k值而不是完全分解。

然而在JAMA中,特征分解类计算完全特征分解。我试图修改它,但它会抛出一些错误。还有另一个类似的图书馆吗?

在MATLAB中,有问题的函数是eigs(k,A)

3 个答案:

答案 0 :(得分:0)

所以它只是返回所有特征值的数组。您想要返回一个只包含数组前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/

答案 1 :(得分:0)

如果您找不到任何现有代码,我猜您应该参考此thesis或此paper

答案 2 :(得分:0)

也许您可以在http://commons.apache.org/proper/commons-math/javadocs/api-3.6/org/apache/commons/math3/linear/EigenDecomposition.html中尝试另一个名为EigenDecomposition的程序包,有些方法像getImagEigenvalue(int i),您可以由此获得第i个特征值。