Java矩阵库

33

我想知道Java中是否有任何著名的矩阵库(例如Colt或EJML),是否提供与MatLab类似的功能?例如,我无法在它们API的定义中找到简单的方法来通过彼此添加或减去两个矩阵/向量,而这似乎是最常用的操作。我是否遗漏了什么?

6个回答

41

一些Java线性代数库包括:

编辑如果有新的库出现,请随时扩展此列表:

  • MTJ - https://github.com/fommil/matrix-toolkits-java 是一个与矩阵相关的Java工具包。
  • nd4j - https://nd4j.org/ 允许您选择底层本地实现,如cuda或openBlas。
  • Note: 就个人而言,我在自己的项目中使用Apache Commons Math和Colt(http://www.finmath.net)。虽然commons math得到了积极的开发,但我发现对于某些任务(如特征值分解),Colt仍然更快。因此,我使用一种包装器,可以快速切换基础库(我只需要一些像求解方程组和特征值分解这样的功能)。


    JEigen似乎没有实现解决稀疏矩阵的功能所以我自己动手做了 - Z boson
    JScience 还支持矩阵和向量的基本数学运算。 - Michael von Wenckstern
    https://github.com/BIDData/BIDMat 也许是一个不错的补充(尽管我没有使用经验) - AminM

    15

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


    是的,但这可能比Colt或EJML不够高效。 - Bober02

    2

    还有一个名为la4j的库,支持函数式编程特性,如函数子。你可以使用transform()方法与手动高阶函数。


    2
    COLT的界面提供了一个通用的操作:assign(matrix, function),您可以使用它来添加或减去矩阵和向量。
    正如assign()的javadocs所说:
    将函数的结果分配给每个单元格;x[row,col] =function(x[row,col],y[row,col])
    因此,通过使用加法函数作为function,您可以添加矩阵。

    1
    你可以使用这个链接。它非常简单,提供基本的矩阵运算。
    你可以对二维矩阵和向量进行加减乘等操作。

    0

    你可以尝试一下我的新的Java库(兼容Java 6+),它可用于各种应用程序,特别是用于执行多线程矩阵计算(通过多线程扩展JAMA;目前比现有的开源库快30%)。你可以在GitHub上查看:

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

    请注意,每个项目都是独立的,并且受到非常宽松的MIT许可证的保护。

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接