Матричные библиотеки Java

Мне было интересно, предоставляют ли какие-либо из известных матричных библиотек для Java, такие как Colt или EJML, функциональность, аналогичную MatLab? Например, я не могу найти нигде в определении их простого API-метода сложение или вычитание двух матриц / векторов друг с другом, что, кажется, является наиболее распространенной используемой операцией. Я что-то пропустил?

5 ответов

Решение

Попробуйте библиотеку Apache Commons Math. Пакет org.apache.commons.math3.linear содержит нужные вам функции. Главная страница

Некоторые библиотеки Java для линейной алгебры:

РЕДАКТИРОВАТЬ, может быть, мы можем расширить этот список всякий раз, когда кто-то сталкивается, и вы знаете - мир продолжает двигаться:

Примечание: лично: я использую Apache Commons Math и Colt в своем собственном проекте ( http://www.finmath.net/). Хотя математика общего достояния активно развивается, я обнаружил, что Colt все еще быстрее в некоторых задачах (например, разложение по собственным значениям). По этой причине я использую какую-то оболочку, которая позволяет мне быстро переключать основную библиотеку (мне нужны только несколько вещей, таких как решение систем уравнений и разложение по собственным значениям).

Существует также библиотека la4j, которая поддерживает функции функционального программирования в качестве функторов. Вы можете использовать метод transform() с ручной функцией hi-order.

Интерфейс для COLT дает вам общий OP: assign(matrix, function), который вы можете использовать для сложения или вычитания матриц и векторов.

В качестве Javadocs для assign() говорит:

Назначает результат функции каждой ячейке; x[row,col] =function(x[row,col],y[row,col]),

Таким образом, используя функцию сложения как function Вы можете добавить матрицы.

Вы можете использовать это. Он очень прост и обеспечивает базовые матричные операции.

Вы можете добавить / вычесть / умножить и т. Д. 2d матрицы и векторы.

Вы можете попробовать мою новую библиотеку Java (совместимую с Java 6+), которую можно использовать для всех видов приложений, особенно для выполнения многопоточных матричных вычислений (расширение JAMA с помощью многопоточности; в настоящее время на 30% быстрее, чем доступные библиотеки с открытым исходным кодом). Вы можете проверить это на GitHub:

https://github.com/b-io/io.barras/tree/master/java/jupiter

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

Другие вопросы по тегам