исключение 'матрица слишком большая' при использовании colt java lib - PullRequest
3 голосов
/ 19 января 2012

Я использовал cern.colt.matrix. * Lib для вычислений с разреженной матрицей ... но похоже, что я продолжаю сталкиваться с этой ошибкой:

Исключение в потоке "main" java.lang.IllegalArgumentException: матрица слишком большая

Я думаю, это потому, что конструктор выдает исключение, когда nrows * ncols> INTEGER.max

API: http://acs.lbl.gov/software/colt/api/cern/colt/matrix/impl/SparseDoubleMatrix2D.html исключение: IllegalArgumentException - если ряды <0 || столбцы <0 || (двойные) столбцы * строки> Integer.MAX_VALUE.

Мои строки: 5787, а столбцы - 418032.

Это хорошо работало в Matlab (матрица загружается просто отлично, и все операции работают). Я хотел знать, как я могу решить эту проблему? Должен ли я использовать библиотеку diff с разреженной матрицей или мне нужно нарезать свои матрицы или сохранить матрицу как вектор строки SparseDoubleMatrix1D

Спасибо.

1 Ответ

2 голосов
/ 19 января 2012

Вы столкнулись с проблемой реализации с матрицами здесь. Я подозреваю, что вам нужно разбить матрицу, однако вам может понадобиться больше памяти, чем у вас.

В зависимости от того, насколько разреженна матрица, вам потребуется 19 ГБ только для этой матрицы.

...