您好,我正在研究一个涉及人脸识别的项目,我正在使用线性判别分析(LDA)。 LDA要求为类间散布矩阵和类散布矩阵找到广义特征向量,这就是我遇到的地方。我正在使用OpenCv和DevC++进行编码。基本上,这个问题看起来像OpenCV中两个矩阵的广义特征值
A*v=lambda*B*v
其中A和B是针对广义特征向量矩阵应该找到 中λ为特征值,v为载体
在寻找这个问题很多人都建议去计算B的倒数,然后乘以A * v
(inv(B)*A)*v=lambda*v
然后计算inv(B)* A的特征向量。
这似乎是一个很好的解决方案,但在我的情况下,散布矩阵B几乎是奇异的。我发现它的行列式是在10^-36的数量级,所以我找不到它的反函数并继续上面的解决方案。所以有人建议我摆脱这个问题,除了说分开编码广义特征值问题。