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