【问题标题】:Singular Value Decomposition (SVD) in CC中的奇异值分解(SVD)
【发布时间】:2015-04-16 21:05:26
【问题描述】:

我正在用 C 语言进行五点基本矩阵估计,我需要在其中实现 SVD。我在 c http://www.public.iastate.edu/~dicook/JSS/paper/code/svd.c 中找到了一个开源实现,它适用于 m>n 的 mxn 矩阵。问题是我要分解的矩阵是(5x9)矩阵,因此 n>m。我需要正确的正交变换矩阵 v 其中 svd(A)=udv' 为了确保 (m>n) 我试着做 svd(transpose(A))=u2*d2*v2 我发现u=v2,但是v与u2不同,我需要v。 如何在 C 中成功实现 5x9 矩阵的 SVD?

【问题讨论】:

  • 如果你的尺寸不正确,有时你可以用零行填充矩阵。

标签: c computer-vision svd


【解决方案1】:

迟到了,但为了将来参考,可以从 “William H. Press 等人的 C 语言数字食谱”一书中获得 C 语言中的 SVD 实现,第 2.6 章,第 67 页, SVD 算法。引用这本书

这里是构造任意的奇异值分解的算法 矩阵。

所以我假设要分解的矩阵可以是正方形,m < nn < m

警告:在使用 C 语言搜索 SVD 实现时,请检查输入矩阵的假设。有些假设矩阵是正方形的,有些则不是,等等......

或者,您可以在 LAPACK 中使用 SVD。 Stephen Canon 提供了另一个关于如何使用dgesdd 执行 SVD 的 SO 问题的代码示例。 (链接here

【讨论】:

  • 聚会从不迟到。谢谢。
猜你喜欢
  • 2011-06-30
  • 2010-10-31
  • 2010-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-10
  • 2014-03-10
  • 1970-01-01
相关资源
最近更新 更多