2

我正在尝试查找矩阵的等级。在 matlab 中,这相当简单,但我使用的是 Visual Studio 2008 (c++)。我最近安装了openCV,到目前为止它适用于我的大部分矩阵运算,除了我不知道如何使用openCV来获取矩阵的等级。在我的在线研究中,我发现显然 cvSVD 可以给我排名 http://www.emgu.com/wiki/files/1.3.0.0/html/55d6f4d2-223d-8c55-2770-2b6a9c6eefa2.htm

但我不知道 cvSVD 将如何返回这个特定的属性。关于从openCV获取矩阵等级的任何想法???

谢谢。

4

1 回答 1

2

阅读以下

http://en.wikipedia.org/wiki/Singular_value_decomposition#Applications_of_the_SVD

Range、null space 和 rank部分中,它解释了如何从奇异值中获取 Rank。引用此页面:

因此,M 的秩等于非零奇异值的个数

所以基本上你可以计算非零奇异值的数量,这就是排名。根据您在问题中提供的链接,您在 opencv 中的 SVD 计算函数应该返回一个矩阵或奇异值向量 - 如果它是一个矩阵,则奇异值位于该矩阵的主对角线上。从这里你应该没问题。可能有更简单的方法,但是我对opencv不熟悉。

于 2012-07-18T18:51:42.500 回答