【问题标题】:java jama array problemjava jama数组问题
【发布时间】:2010-01-30 20:16:29
【问题描述】:

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

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

【问题讨论】:

  • 通常如果您的问题不清楚,除了发布新问题外,您可以编辑原始问题
  • 即使您有正当理由发布另一个问题的新版本,也可以链接到原版,这样我们就可以阅读那里的 cmets,看看这次有什么不同。跨度>
  • 谢谢,我会记住这一点。所以有什么帮助吗?建议?

标签: java math svd jama


【解决方案1】:

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

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

【讨论】:

  • 对于 LSI,它应该是逐个文档的,所以你不能转置
【解决方案2】:

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

【讨论】:

  • 您好,感谢您的回复。是的,您 100% 正确理解我的问题。我找不到任何适用于 SVD 的好的 Java API。你能告诉我一个吗??? jama 也很慢,在 500 列矩阵上计算 SVD 需要 2 小时
【解决方案3】:

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

【讨论】:

    【解决方案4】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-15
      • 2011-07-07
      • 1970-01-01
      • 2015-06-04
      • 2018-01-05
      相关资源
      最近更新 更多