我刚把我的代码从MATLAB移植到Java,我需要矩阵的特征分解,特别是我只需要第一个k值而不是完整的分解。
然而,在JAMA中,特征分解类计算完整的特征分解。我试图修改它,但它抛出了一些错误。有没有其他类似的库?
在MATLAB中,所讨论的函数是eigs(k,A)。
发布于 2012-06-01 00:03:15
所以它只是返回所有特征值的数组。您希望返回一个仅包含数组的前k个值的数组。在Java中有很多方法可以做到这一点。一种方法是将数组转换为ArrayList,获取该列表的subList,然后再转换回数组。
double[] mySubArray = new double[k];
for (int i=0; i < k; i++) {
subArray[i] = myFullArray[i];
}顺便说一下,这就是他所指的库:http://math.nist.gov/javanumerics/jama/doc/
发布于 2012-06-01 03:35:13
在你找不到任何现有代码的情况下,我想你应该参考这个thesis或者这个paper。
发布于 2019-04-01 18:24:26
也许你可以在http://commons.apache.org/proper/commons-math/javadocs/api-3.6/org/apache/commons/math3/linear/EigenDecomposition.html中尝试另一个名为EigenDecomposition的软件包,有一些像getImagEigenvalue(int i)这样的方法,你可以通过这个得到i-th特征值。
https://stackoverflow.com/questions/10836981
复制相似问题