0

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

然而在JAMA中,特征分解类计算完整的特征分解。我试图修改它,但它会引发一些错误。还有其他类似的库吗?

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

4

3 回答 3

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/

于 2012-05-31T16:03:14.787 回答
0

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

于 2012-05-31T19:35:13.033 回答
0

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

于 2019-04-01T10:24:26.347 回答