java奇异值分解实现 3 月 Questions & Answers 4754 我有一个用C实现的SVD库,但我想在Java程序中调用它的函数。有没有简单的方法?或者有人建议用Java实现SVD的链接
# 2 楼答案 Adrian Kuhn和David Erni最近发布了SVDLIBJ,这是SVDLIBC的纯Java端口。如果你想做一个精简的SVD(你只需要几个最奇异的值或向量),这可能是最好的选择。JAMA、COLT和apachecommons数学包都执行完整的SVD 如果您想将SVD用作独立程序,S-Space软件包也有一个命令行工具,可以像SVDLIBC一样使用SVDLIBJ,还支持更多矩阵格式
# 1 楼答案
当我不得不用Java做矩阵运算时,我使用JAMA: A Java Matrix Package
我知道它有SVD,但我不能保证该软件包的效率或当前状态
# 2 楼答案
Adrian Kuhn和David Erni最近发布了SVDLIBJ,这是SVDLIBC的纯Java端口。如果你想做一个精简的SVD(你只需要几个最奇异的值或向量),这可能是最好的选择。JAMA、COLT和apachecommons数学包都执行完整的SVD
如果您想将SVD用作独立程序,S-Space软件包也有一个命令行工具,可以像SVDLIBC一样使用SVDLIBJ,还支持更多矩阵格式
# 3 楼答案
可以使用Java Native Interface(JNI)从java程序中调用本机代码。准备起来并不难
# 4 楼答案
还有Apache commons数学库: http://commons.apache.org/math/
它有矩阵和奇异值分解算法。还有很多其他有用的东西
# 5 楼答案
如果它是纯C,你可以看看JNA,这将允许你相对容易地从java调用C
还有JNI和/或SWIG,但它们更为复杂
# 6 楼答案
Colt是另一个包含矩阵和SVD的Java数学库