Здравствуйте, я работаю над проектом, связанным с распознаванием лиц, для которого я использую линейный дискриминантный анализ (LDA). LDA требует найти обобщенные собственные векторы для матрицы рассеяния между классами и с матрицей рассеяния класса, и именно там меня поражают. Я использую opencv с DevC++ для кодирования. В основном проблема выглядитОбобщенное собственное значение для двух матриц в OpenCV
A*v=lambda*B*v
где матрицы, для которых обобщенных собственных векторов должны быть найдены А и В лямбда собственных значений и v является векторами
После поиска об этой проблеме многих людей предложили пойти на вычисления обратной B, а затем умножением A * V
(inv(B)*A)*v=lambda*v
, а затем рассчитать собственные векторы для Inv (B) * A.
Кажется, это хорошее решение, но в моем случае матрица рассеяния B является почти сигулярной. Я обнаружил, что его определитель находится в порядке 10^-36. Поэтому я не могу найти его обратный и перейти к рассмотренному выше решению. Так может ли кто-нибудь предложить мне способ избавиться от этой проблемы, за исключением того, что отдельно указывается код для обобщенной проблемы с собственным значением.