Java矩阵库

Java矩阵库,java,matrix,colt,Java,Matrix,Colt,我想知道是否有任何著名的Java矩阵库,如Colt或EJML,实际提供了与MatLab类似的功能?例如,在API的定义中,我似乎找不到一个简单的方法来对两个矩阵/向量进行相加或相减,这似乎是最常用的操作。我遗漏了什么吗?你可以用。它非常简单,提供了基本的矩阵运算 您可以添加/减去/乘以etc二维矩阵和向量。COLT的界面提供了一个通用的OP:,您可以使用它添加或减去矩阵和向量 正如assign()的javadocs所说: 将函数的结果分配给每个单元格; x[row,col]=函数(x[row,c

我想知道是否有任何著名的Java矩阵库,如Colt或EJML,实际提供了与MatLab类似的功能?例如,在API的定义中,我似乎找不到一个简单的方法来对两个矩阵/向量进行相加或相减,这似乎是最常用的操作。我遗漏了什么吗?

你可以用。它非常简单,提供了基本的矩阵运算


您可以添加/减去/乘以etc二维矩阵和向量。

COLT的界面提供了一个通用的OP:,您可以使用它添加或减去矩阵和向量

正如
assign()
的javadocs所说:

将函数的结果分配给每个单元格;
x[row,col]=函数(x[row,col],y[row,col])


因此,通过使用加法函数作为
函数
,您可以添加矩阵。

尝试使用Apache Commons数学库。org.apache.commons.math3.linear包包含您想要的函数

还有一个库,它支持函数式编程功能作为functor。可以将transform()方法与手动高阶函数一起使用

线性代数的一些Java库包括:

  • Apache Commons数学:
  • jeigen-特征的包装器-(包括复杂且很少发现的特征,如矩阵指数和矩阵对数)
  • jblas(还具有更复杂的函数,如矩阵指数函数,也非常快)
  • 小马
  • 贾马
  • UJMP-
编辑也许我们可以在任何时候看到这个列表,并且你知道-世界一直在移动:

  • ojAlgo-有很好的基准
  • 高效的Java矩阵库(EJML)——
  • 平行柯尔特-
  • la4j-
  • MTJ-
  • nd4j-允许您选择底层本机实现,如cuda或openBlas

注意:就个人而言:我在自己的项目()中使用ApacheCommonsMath和Colt。虽然commons math得到了积极发展,但我发现Colt在某些任务(如特征值分解)中仍然更快。出于这个原因,我使用了某种包装器,它允许我快速切换底层库(我只需要解决方程组和特征值分解之类的一些事情)。

您可以尝试我的新Java库(与Java 6+兼容)它可以用于各种应用程序,尤其是用于执行多线程矩阵计算(使用多线程扩展JAMA;目前比可用的开源库快30%)。您可以在GitHub上查看它:


请注意,每个项目都是相互独立的,并且是在非常许可的MIT许可证下进行的。

是的,但这可能比Colt或EJMLJEigen没有实现求解稀疏矩阵的效率低。-JScience还支持对矩阵和向量的基本数学运算,这可能也是一个很好的补充。。(虽然我没有这方面的经验)