2009-11-17 30 views
2

我有一個用C語言實現的SVD庫,但是我想在Java程序中調用它的函數。有沒有簡單的方法來做到這一點?或者有人請建議在Java中使用SVD實現的鏈接。奇異值分解實現

回答

1

Colt是另一個有矩陣和SVD的Java數學庫。

+3

我知道這是一個古老的答案,但值得注意的是,柯爾特還沒有被2010年3月更新。 – Ivan 2012-11-26 16:43:52

1

您可以使用Java Native Interface(JNI)從您的java程序調用本地代碼。建立起來並不難。

5

如果它是直的C,你可以看看JNA,這將允許你從Java相對容易地調用C.

還有JNI和/或SWIG,但他們更多參與。

0

回來時,我不得不用Java做矩陣運算我以前JAMA: A Java Matrix Package

我知道它有SVD,但我不能保證效率或包的當前狀態。

1

Adrian Kuhn和David Erni最近發佈SVDLIBJ,這是一個純粹的SVDLIBC Java端口。如果你想做一個薄的SVD(你只需要一些最奇異的值或矢量),這可能是最好的選擇。 JAMA,COLT和Apache Commons Math包都執行完整的SVD。

如果您想將SVD作爲獨立程序使用,S-Space軟件包還有一個命令行工具,可以像SVDLIBC一樣使用SVDLIBJ,並支持更多的矩陣格式。