我想知道任何着名的Java矩阵库(如Colt或EJML)是否实际提供与MatLab类似的功能?例如,我似乎无法在API简单方法的定义中找到彼此相加或相减两个矩阵/向量的任何地方,这似乎是最常用的操作。我错过了什么吗?
答案 0 :(得分:31)
线性代数的一些Java库是:
编辑也许我们可以扩展这个列表,只要有人知道 - 世界一直在移动:
注意:我个人:我在自己的项目中使用Apache Commons Math和Colt(http://www.finmath.net)。虽然公共数学是积极开发的,但我发现Colt在某些任务中仍然更快(如特征值分解)。出于这个原因,我使用某种包装器,它允许我快速切换底层库(我只需要一些东西,如求解方程组和特征值分解)。
答案 1 :(得分:13)
尝试Apache Commons Math库。 org.apache.commons.math3.linear包包含您想要的功能。 Home page
答案 2 :(得分:2)
COLT的界面为您提供了一个通用的OP:assign(matrix, function)
,您可以使用它来添加或减去矩阵和向量。
正如assign()
的javadoc所说:
将函数的结果分配给每个单元格;
x[row,col] =function(x[row,col],y[row,col])
。
因此,通过使用添加函数function
- 您可以添加矩阵。
答案 3 :(得分:2)
还有la4j库支持函数式编程功能作为仿函数。您可以将transform()方法与手动高阶函数一起使用。
答案 4 :(得分:1)
您可以使用this one。它非常简单,并提供基本的矩阵运算。
您可以添加/减去/乘以等2d矩阵和向量。
答案 5 :(得分:0)
您可以尝试使用我的新Java库(与Java 6+兼容),该库可用于各种应用程序,尤其是用于执行多线程矩阵计算(使用多线程扩展JAMA;目前比可用开放库快30%)源库)。您可以在GitHub上查看它:
https://github.com/b-io/io.barras/tree/master/java/jupiter
请注意,每个项目都相互独立,并且受非常宽松的MIT许可证的约束。