2012-07-18 155 views
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.htmopencv计算矩阵等级

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

谢谢。

回答

2

在部分范围,请阅读以下

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

,零空间和秩它解释了如何从奇异值获得排名。引用此页面:

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

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