Java 奇异值分解的实现

Java 奇异值分解的实现,java,c,Java,C,我有一个用C实现的SVD库,但我想在Java程序中调用它的函数。有没有简单的方法?或者有人建议在Java中使用SVD实现的链接。您可以使用(JNI)从Java程序调用本机代码。设置起来并不太难。如果它是纯C,您可以看看,这将允许您相对容易地从java调用C 还有和/或,但它们更为复杂。还有Apache commons数学库: 它有矩阵和奇异值分解算法。还有很多其他有用的东西 回到我必须用Java做矩阵运算的时候 我知道它有SVD,但我不能保证包的效率或当前状态。是另一个包含矩阵和SVD的Jav

我有一个用C实现的SVD库,但我想在Java程序中调用它的函数。有没有简单的方法?或者有人建议在Java中使用SVD实现的链接。

您可以使用(JNI)从Java程序调用本机代码。设置起来并不太难。

如果它是纯C,您可以看看,这将允许您相对容易地从java调用C


还有和/或,但它们更为复杂。

还有Apache commons数学库:


它有矩阵和奇异值分解算法。还有很多其他有用的东西

回到我必须用Java做矩阵运算的时候


我知道它有SVD,但我不能保证包的效率或当前状态。

是另一个包含矩阵和SVD的Java数学库。

Adrian Kuhn和David Erni最近发布,这是SVDLIBC的纯Java端口。如果你想做一个精简的SVD(你只需要几个最奇异的值或向量),这可能是最好的选择。JAMA、COLT和apachecommons数学包都执行完整的SVD


如果您想将SVD作为一个独立的程序使用,S-Space软件包也有一个命令行工具,可以像SVDLIBC一样使用SVDLIBJ,还支持更多的矩阵格式。

另请参见ApacheMahout的实现—

我知道这是一个古老的答案,但值得注意的是,Colt自2010年3月以来一直没有更新过。