Собственное разложение большой разреженной матрицы в JAVA

Я ищу библиотеку линейной алгебры на Java, которая может обрабатывать большие «разреженные» матрицы размера (скажем, 1 миллион на 1 миллион) и выполнять разложения, такие как SVD, LU, на матрицах.

Я осмотрелся и попробовал COLT, однако он может обрабатывать матрицы только до фиксированного числа элементов.

На сайте EJML также упоминается, что он не сможет справиться с этим. (http://code.google.com/p/efficient-java-matrix-library/wiki/FAQ)

Я знаю, что на С++ есть пакеты, которые могут обрабатывать данные такого размера, однако я не могу перейти с Java, так как весь остальной код построен вокруг Java.

Есть предположения? Любая помощь приветствуется!


person Blade Runner    schedule 07.08.2012    source источник


Ответы (1)


Попробуйте посмотреть la4j (линейная алгебра для Java). Он обрабатывает как разреженные матрицы, так и плотные. Итак, вы можете попробовать что-то вроде этого:

Matrix a = new CRSMatrix(...); // Compressed Row Storage format
Matrix vd[] = a.decompose(Matrices.EIGEN_DECOMPOSITOR); // vd[0] = V, vd[1] = D

Итак, он отлично работает с разреженными матрицами, но я не уверен в размере (1 миллион X 1 миллион).

person Vladimir Kostyukov    schedule 27.02.2013