我想知道Java中是否有任何著名的矩阵库(例如Colt或EJML),是否提供与MatLab类似的功能?例如,我无法在它们API的定义中找到简单的方法来通过彼此添加或减去两个矩阵/向量,而这似乎是最常用的操作。我是否遗漏了什么?
一些Java线性代数库包括:
编辑如果有新的库出现,请随时扩展此列表:
Note: 就个人而言,我在自己的项目中使用Apache Commons Math和Colt(http://www.finmath.net)。虽然commons math得到了积极的开发,但我发现对于某些任务(如特征值分解),Colt仍然更快。因此,我使用一种包装器,可以快速切换基础库(我只需要一些像求解方程组和特征值分解这样的功能)。
尝试使用Apache Commons Math库,org.apache.commons.math3.linear包含您想要的函数。主页
assign(matrix, function)
,您可以使用它来添加或减去矩阵和向量。assign()
的javadocs所说:x[row,col] =function(x[row,col],y[row,col])
。function
,您可以添加矩阵。你可以尝试一下我的新的Java库(兼容Java 6+),它可用于各种应用程序,特别是用于执行多线程矩阵计算(通过多线程扩展JAMA;目前比现有的开源库快30%)。你可以在GitHub上查看:
请注意,每个项目都是独立的,并且受到非常宽松的MIT许可证的保护。