【发布时间】:2012-06-04 15:25:50
【问题描述】:
我想知道是否有任何著名的 Java 矩阵库,例如 Colt 或 EJML,实际上提供了与 MatLab 类似的功能?例如,我似乎在他们的 API 简单方法的定义中找不到任何地方可以将两个矩阵/向量相加或相减,这似乎是最常用的操作。我错过了什么吗?
【问题讨论】:
我想知道是否有任何著名的 Java 矩阵库,例如 Colt 或 EJML,实际上提供了与 MatLab 类似的功能?例如,我似乎在他们的 API 简单方法的定义中找不到任何地方可以将两个矩阵/向量相加或相减,这似乎是最常用的操作。我错过了什么吗?
【问题讨论】:
一些用于线性代数的 Java 库是:
编辑也许我们可以在遇到任何人时扩展此列表并且您知道 - 世界在不断发展:
注意: 就我个人而言:我在自己的项目中使用 Apache Commons Math 和 Colt (http://www.finmath.net)。虽然公共数学得到了积极发展,但我发现 Colt 在某些任务(如特征值分解)中仍然更快。出于这个原因,我使用了某种包装器,它允许我快速切换底层库(我只需要一些东西,比如求解方程组和特征值分解)。
【讨论】:
试试 Apache Commons 数学库。 org.apache.commons.math3.linear 包包含你想要的函数。 Home page
【讨论】:
COLT 的接口为您提供了一个通用的 OP:assign(matrix, function),您可以使用它来添加或减去矩阵和向量。
正如assign() 的 javadocs 所说:
将函数的结果分配给每个单元格;
x[row,col] =function(x[row,col],y[row,col]).
因此,通过使用加法函数 function - 您可以添加矩阵。
【讨论】:
还有la4j 库支持函数式编程特性作为函子。您可以使用带有手动高阶功能的 transform() 方法。
【讨论】:
您可以使用this one。它非常简单,提供基本的矩阵运算。
您可以添加/减去/乘以等二维矩阵和向量。
【讨论】:
您可以尝试我的新 Java 库(与 Java 6+ 兼容),它可用于各种应用程序,特别是用于执行多线程矩阵计算(使用多线程扩展 JAMA;目前比可用的 open 快 30%源库)。你可以在 GitHub 上查看:
https://github.com/b-io/io.barras/tree/master/java/jupiter
请注意,每个项目都是相互独立的,并且都在非常宽松的 MIT 许可证下。
【讨论】: