我正在寻找一个快速的svd库,无论是c,c ++还是java。最终我使用的是Java,但我很乐意使用jna来包装c ++,例如http://github.com/hughperkins/jeigen
我正在寻找一个可以处理稀疏矩阵的快速svd库。为了保持这个目标,以便问题不会被标记为过于主观,让我们说:
我环顾了几个图书馆,发现:
基本上,我正在寻找一个能够提供与matlab大致相同的速度和平均投影误差的库,或者至少有一点可比性。
答案 0 :(得分:2)
根据我的经验,svdlibc是这些选项中最好的库。我以前挖过它的代码,我不相信它正在计算完整的S矩阵(即,它是一个真正的“瘦svd”)。如果您可以控制磁盘上的矩阵表示,则由于I / O开销显着降低,使用稀疏二进制输入格式时svdlibc的执行速度会快得多。
S-Space包在SVDLIBC的SVDLIBJ java端口周围提供executable jar。但是,对于某些输入解决方案,他们发现它与SVDLIBC的结果不同。