2012-01-19 11 views
3

libにコルトのJavaを使用して*疎行列計算のためのlibには、私がこのエラーに実行し続けるようだ..but:。「行列が大きすぎる」例外私はcern.colt.matrixを使用していた

スレッドの例外「メイン「java.lang.IllegalArgumentExceptionが:

私はコンストラクタが例外をスローするので、これがあると思い大きすぎる行列際NROWS * ncolsの> INTEGER.max

API:http://acs.lbl.gov/software/colt/api/cern/colt/matrix/impl/SparseDoubleMatrix2D.html 例外:例外:IllegalArgumentException - もし行< 0 ||列< 0 || (ダブル)列* rows> Integer.MAX_VALUE。 5787とcolsは

418032.これは、MATLABでうまく働いている(行列の負荷がうまく、すべての操作が動作する):

私の行があります。私はこの問題を解決する方法を知りたがっていますか? SparseDarMatrix1Dの行ベクトルとして行列をスライスするか行列を格納する必要がありますか

ありがとうございました。

答えて

2

ここでは行列に関する実装上の問題が発生しています。私はあなたがあなたが持っているよりも多くのメモリが必要かもしれないが、マトリックスを分割する必要があると思う。

このマトリックスの疎さに応じて、このマトリックスには19 GBだけ必要です。

+0

ありがとうございました。しかし、メモリは私のための制約ではありません(強力なサーバでは30 + gを持っています)。 同じロジックがmatlabコードのようにうまくいきます: X = sparseread( "smatrix.txt") [D、W] =サイズ(X) なぜ私はこれが列にエラーを投げているのですか? * rows> Integer.MAX_VALUE。 (要素<2^31-1!) 32ビットマシンでは、行<2^31、cols <2^31のようなものでなければなりません。 – deepak

+0

単一のアレイの最大サイズはInteger.MAX_VALUEで(最大符号付き32ビット整数値)この2^31-1であります –

関連する問題