您好,我正在从事一个涉及人脸识别的项目,我正在使用线性判别分析(LDA)。LDA 要求找到类间散布矩阵和类内散布矩阵的广义特征向量,这就是我印象深刻的地方。我正在使用带有 DevC++ 的 opencv 进行编码。基本上问题看起来像
A*v=lambda*B*v
其中 A 和 B 是应该找到广义特征向量的矩阵 lambda 是特征值,v 是向量
在搜索这个问题后,许多人建议去计算 B 的倒数,然后乘以 A*v
(inv(B)*A)*v=lambda*v
然后计算 inv(B)*A 的特征向量。
这似乎是一个很好的解决方案,但在我的情况下,散射矩阵 B 几乎是奇异的。我发现它的行列式是 10^-36 的顺序。所以我找不到它的倒数并继续上述解决方案。所以有人可以建议我一种摆脱这个问题的方法,除了单独为广义特征值问题编写代码。