Ответ 1
Попробуйте библиотеку Apache Commons Math. В пакете org.apache.commons.math3.linear содержатся функции, которые вы хотите. Домашняя страница
Мне было интересно, действительно ли какие-либо из известных матричных библиотек для Java, таких как Colt или EJML, аналогичны функциям MatLab? Например, я не могу найти нигде в определении своего простого API-интерфейса для добавления или вычитания двух матриц/векторов друг другом, что, по-видимому, является наиболее распространенной операцией. Я что-то пропустил?
Попробуйте библиотеку Apache Commons Math. В пакете org.apache.commons.math3.linear содержатся функции, которые вы хотите. Домашняя страница
Некоторые библиотеки Java для линейной алгебры:
РЕДАКТИРОВАТЬ, может быть, мы можем расширить этот список, когда кто-то сталкивается, и вы знаете - мир продолжает двигаться:
Примечание: лично: я использую Apache Commons Math и Colt в своем собственном проекте (http://www.finmath.net). Хотя математика общего достояния активно развивается, я обнаружил, что Colt все еще быстрее в некоторых задачах (например, разложение по собственным значениям). По этой причине я использую какую-то оболочку, которая позволяет мне быстро переключать основную библиотеку (мне нужны только некоторые вещи, такие как решение систем уравнений и разложение по собственным значениям).
Интерфейс для COLT дает вам общий OP: assign(matrix, function)
, который вы можете использовать для добавления или вычитания матриц и векторов.
Поскольку javadocs для assign()
говорит:
Назначает результат функции каждой ячейке;
x[row,col] =function(x[row,col],y[row,col])
.
Итак, используя функцию добавления как function
- вы можете добавить матрицы.
Существует также la4j библиотека, которая поддерживает функции функционального программирования как функторы. Вы можете использовать метод transform() с ручной функцией hi-order.
Вы можете использовать это. Это очень просто и обеспечивает основные матричные операции.
Вы можете добавить/вычесть/умножить и т.д. 2d матрицы и векторы.