奇异值分解实现

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

Colt是另一个带有矩阵和SVD的Java数学库。

还有Apache公共数学库: http : //commons.apache.org/math/

它有矩阵和SVD算法。 还有很多其他有用的东西!

如果它是直的C,你可以看看JNA ,这将允许你相对容易地从java调用C.

还有JNI和/或SWIG ,但他们更多参与。

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

Adrian Kuhn和David Erni最近发布了SVDLIBJ ,它是SVDLIBC的纯Java端口。 如果你想做一个薄的SVD(你只需要一些最奇异的值或向量),这可能是最好的选择。 JAMA,COLT和Apache Commons Math软件包都可以执行完整的SVD。

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

当我不得不在Java中进行矩阵操作时,我使用了JAMA:Java Matrix Package

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