奇异值分解实现

时间:2009-11-17 17:30:45

标签: java c

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

7 个答案:

答案 0 :(得分:6)

还有Apache commons Math库: http://commons.apache.org/math/

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

答案 1 :(得分:5)

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

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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

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

答案 4 :(得分:1)

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

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

答案 5 :(得分:0)

当我不得不用Java进行矩阵运算时,我使用了JAMA: A Java Matrix Package

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

答案 6 :(得分:0)