我有一个用C语言实现的SVD库。但是我想在Java程序中调用它的函数。有一个简单的方法吗?或者有人请建议用Java实现SVD实现的链接。
答案 0 :(得分:6)
还有Apache commons Math库: http://commons.apache.org/math/
具有矩阵和SVD算法。还有很多其他有用的东西!
答案 1 :(得分:5)
答案 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)
另见Apache Mahout的实现 - https://cwiki.apache.org/confluence/display/MAHOUT/Dimensional+Reduction