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