Страницы

Поиск по вопросам

пятница, 12 июля 2019 г.

Нормализация кросс-корреляции

Доброго времени суток! Я пытаюсь написать программу для поиска шаблона в сигнале. Сигнал переодический, квазистационарный. Задача - получить адекватный коэффициент корреляции(КК). Перед основными вычислениями произвожу удаление среднего из выборок: x = x - mean(x) Для расчета КК использую подход на основе БПФ: corr(x, y) = F'( F(x) * conj(F(y)) ), где F() - прямое БПФ, F'() - обратное БПФ, conj() - получение комплексно сопряженного. Для того чтобы работало БПФ использую дополнение нулями исходных массивов x и y до степени 2 следующим образом [000000xxxxxxx000] [yyyyyyy000000000] После выполнения процедуры corr() получаю кросс-корреляционную функцию, максимум которой вроде как является искомым КК, а позиция максимума соответствует сдвигу шаблона в сигнале. Однако, чтобы получить КК полученный максимум надо нормировать(чтобы получить значение в диапазоне от -1 до 1) Вопрос собственно в том как правильно нормировать полученный максимум? P.S. если будет необходимо могу привести исходный код.


Ответ

Хм. IronVbif, а ведь Вы похоже правы. Система дискретна.Можно либо применить критерий Пирсона к начальной задаче (и сразу получить результат). А также можно получить нормированную корреляцию путем деления полученной функции на корень квадратный из дисперсии: normcov=f(x)/(sqrt((sum((f(x) - mean(x))^2)/n)). Похоже, это и есть ответ.

Комментариев нет:

Отправить комментарий