我在C中进行五点基本矩阵估计,我需要实现SVD。我在c http://www.public.iastate.edu/~dicook/JSS/paper/code/svd.c中找到了一个开源实现,它适用于m> n的mxn矩阵。问题是我想要分解的矩阵是(5×9)矩阵,因此n> m。我需要正确的正交变换矩阵v,其中svd(A)= u d v' 为了确保(m> n)我试图做svd(转置(A))= u2 * d2 * v2 我发现u = v2,但v与u2不同,我需要v。 如何在Cx中成功实现5x9矩阵的SVD?
答案 0 :(得分:0)
答案 1 :(得分:0)
晚些时候参加聚会,但作为将来的参考,可以从2.6章67页的“ William H. Press等人编写的C中的数字食谱”一书中获得C中的SVD实现。 ,SVD算法。引用这本书
这是用于构造任意值的奇异值分解的算法 矩阵。
因此,我假设要分解的矩阵可以是正方形,m < n
或n < m
警告:在C语言中对SVD实现进行谷歌搜索时,请检查哪些假设与输入矩阵无关。有些人假设矩阵是正方形,有些则不是,等等。
或者,您可以在LAPACK中使用SVD。 Stephen Canon提供了关于另一个SO问题的代码示例,该问题涉及如何使用dgesdd
执行SVD。 (链接here)