1

我之前问过一个问题,但 duffymo 说不清楚,所以我将在这里再次发布。我正在使用 Jama api 进行 SVD 计算。我非常了解 jama 和 SVD。如果您的列多于行,则 Jama 不起作用。我有这种情况。我应该怎么办??有什么帮助吗?我也不能转置矩阵,因为它会产生错误的结果。谢谢。

PS:我在jama的帮助下计算LSI。我喜欢列(文档)和行(术语)

4

4 回答 4

1

如果我理解正确,您正在尝试计算非方形矩阵的 SVD,并且您拥有仅适用于方形矩阵的库 JAMA?如果我对您的理解正确,那么您的问题的答案是显而易见的:获取一个为非方阵计算 SVD 的库。如果我没记错的话,Numerical Recipes 包含这样的算法,我希望您可以通过 Google 找到许多其他来源。

于 2010-01-31T04:17:38.297 回答
1

为什么不使用转置?如果 X = USV',则 X' = VS'U'。正确的?

转置你的矩阵。获取 U、S 和 V。将所有内容转回。

于 2010-02-27T17:31:14.930 回答
0

我现在这是一个很晚的答复。但我认为迟到总比没有好

但我知道jblas以有效的方式执行 svd。

于 2012-02-13T06:53:50.773 回答
0

由于您正在做 LSI,您可以使用 SVDLIBJ,它是 SVDLIBC 的 Java 等价物,它是可免费获得的最具可扩展性的 SVD 实现之一。S-Space 软件包已经为 SVDLIBJ设置了一个命令行工具。此外,如果更适合您的需求,您可以使用他们的 Matrix 库并避免使用命令行。

于 2010-04-29T07:02:10.290 回答