我正在使用parallel colt其中我需要找到矩陣的排名。 API文檔說以下有關以下有關DoubleAlgebra#rank
:矩陣秩不按照API規範並行工作小馬
秩(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
對象。任何想法爲什麼運行時異常發生?
你能告訴我們一些關於你要計算的秩的矩陣是什麼?它是什麼樣子的?它是什麼類的實例? – ashes999
如何用稀疏矩陣執行[奇異值分解](http://en.wikipedia.org/wiki/Singular_value_decomposition)? –