0

行列のランクを見つける必要がある並列コルトを使用しています。APIドキュメントには、次について次のように記載されていますDoubleAlgebra#rank

ランク(DoubleMatrix2D A)

特異値分解から取得した行列 A の有効数値ランクを返します。

しかし、コードで使用すると、実行時に IllegalArgumentException が発生します。

Exception in thread "main" java.lang.IllegalArgumentException: Matrix must be dense
    at cern.colt.matrix.tdouble.algo.DoubleProperty.checkDense(Unknown Source)
    at cern.colt.matrix.tdouble.algo.decomposition.DenseDoubleSingularValueDecomposition.<init>(Unknown Source)
    at cern.colt.matrix.tdouble.algo.DenseDoubleAlgebra.svd(Unknown Source)
    at cern.colt.matrix.tdouble.algo.DenseDoubleAlgebra.rank(Unknown Source)

API は、行列が密である必要があることを述べていません。私の IDE (私は Intellij IDEA を使用しています) で、コード内のメソッド名を ctrl キーを押しながらクリックすると、ソースが表示されます。

public int rank(cern.colt.matrix.tdouble.DoubleMatrix2D doubleMatrix2D) { /* compiled code */ }

DoubleMatrix2D要するに、オブジェクトではなく、オブジェクトの要件がどこにでもありDenseDoubleMatrix2Dます。実行時例外が発生する理由は何ですか?

4

1 に答える 1