我刚将我的代码从MATLAB移植到Java,我需要矩阵的特征分解,特别是我只需要第一个k
值而不是完全分解。
然而在JAMA中,特征分解类计算完全特征分解。我试图修改它,但它会抛出一些错误。还有另一个类似的图书馆吗?
在MATLAB中,有问题的函数是eigs(k,A)
答案 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)
答案 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
个特征值。