我正在寻找一个执行奇异值分解的java库,如维基百科中所述:从矩阵A(m X n)得到A = U * S * V',其中U是mxm,S是mxn,V是nx n。
任何人都可以帮助我吗?
请不要回答 colt 或 jama,因为他们对 svd 的定义与维基百科的不同。事实上,colt 返回 A = U*S*V',其中 U 是 mxn,S 是 nxn,V 是 nx n。
Alternativley 如何使用 colt 计算维基百科的 svd?
谢谢
来自jblas的奇异分解方法的JavaDoc似乎符合您乍一看需要的定义,但我认为您必须进行测试才能确定。
另一个是Universal Java Matrix Package,但是翻阅 JavaDoc 非常令人困惑,让我有点担心它的设计(定义 getter 和 setter 的接口?!)
抱歉,回复晚了。但迟到总比没有好。
如果你仔细查看维基百科页面,
它描绘了一个 4*5 矩阵,该矩阵被拆分为 au:4*4 ,s:4*5,v=5*5
但如果你仔细观察,s 矩阵的最后一行和最后一列全是零,因此它实际上只是一个 4*4 矩阵。(即始终只使用较低的维度)
我想这回答了你的问题!