Алгоритм построения взаимной корреляционной функции сообщения и эталонного сигнала

В статье «Корреляция. Автокорреляция» было описано понятие взаимной корреляционной функции (ВКФ). ВКФ часто применяется на практике, например, для синхронизации сообщений. Зачастую формулы, приведенные в данной статье, применить в чистом виде затруднительно.

Рассмотрим ситуацию, когда после обработки входного сообщения с каким-либо видом модуляции (например, по алгоритму, приведенному в статье «DBPSK демодуляция»), мы имеем набор дискретных отсчетов S{s0, s1, … , sn-1 }, соответствующий битовой последовательности двоичных данных, такой что на символ двоичной информации приходится несколько отсчетов (обозначим эту величину как sps(samples persymbol)). Пусть необходимо вычислить ВКФ данного сообщения с заданной эталонной последовательностьE{e0, e1, …, em-1}, где ei=±1. Совершенно очевидно, что применять формулы из статьи «Корреляция. Автокорреляция» абсолютно недопустимо, поскольку одному значению из выборки E в соответствие должно быть поставлено несколько значений из выборки S в зависимости от числа отсчетов приходящихся на один символ информации. Мы же хотим построить ВКФ с временным шагом равным периоду дискретизации входного, соответствующему выборке S.

Очевидно, что в соответствие символу эталонной последовательности ei должно быть поставлено среднее значение отсчетов из выборки S, усреднение должно быть проведено по sps символам (рисунок 1).

Рисунок 1

После нахождения среднего значения в пределах одного символа получится новая выборка S’. Теперь может быть посчитан коэффициент корреляции r выборок S’ и E по формуле (1) из статьи «Корреляция. Автокорреляция».

Для построения ВКФ необходимо осуществить последовательные сдвиги в исходной выборке S по одному отсчету и на каждом шаге произвести расчет выборки S’ и нового значения ВКФ. Таким образом, формула для вычисления ВКФ по описанному выше алгоритму имеет вид:

,(1)

где k изменяется в диапазоне 0..n-sps-1.

Опишем алгоритм вычисления ВКФ.

S{s0, s1, … , sn-1 } – входная последовательность отсчетов;

n – число отсчетов во входной последовательности;

E{e0, e1, …, em-1} – эталонная последовательность символов, где ei=±1

m – число символов эталонной последовательности;

sps – число отсчетов входной последовательности S, приходящихся на один символ информации, переносимой сигналом.

k – индекс итерации.

1. Обработка начинается с первого отсчета выборки S (k = 0).

2. Вычисляются m средних значений (где m - число символов эталонной последовательности E) в пределах символов по выборке S. Усреднение осуществляется по sps отсчетам. Таким образом, производится обработка spsm отсчетов выборки S, соответствующей обрабатываемому сообщению. После выполнения получаем m средних значений (массив AVG).

3. Вычисляется коэффициент корреляции

4. Производится инкремент k - сдвиг на один отсчет во входной выборке S и повторяются пункты 2 – 4, до окончания входного массива S.

Данный алгоритм может быть значительно оптимизирован по быстродействию. Обратим внимание на то, что для нахождения среднего значения отсчетов в пределах символа используется суммирование, поэтому вместо массива AVG можно использовать массив SUM, содержащий m сумм отcчетов в пределах символа . Массив SUM полностью может быть вычислен только на первой итерации, при последующих итерациях нет необходимости рассчитывать его полностью, достаточно из каждого элемента вычесть один предыдущий отсчет и прибавить один последующий.

Рисунок 2 – Пояснение к оптимизации нахождения сумм в пределах символа

На рисунке 2 представлено пояснение к алгоритму оптимизации нахождения сумм в пределах символа. Если сумма SUMk-1 уже известна, то сумма SUMk может быть вычислена по формуле SUMk= SUMk-1Sk-1 +Sk+sps-1.

Тогда среднее значение на k-шаге может быть вычислено как AVGk= SUMk/sps

На рисунке 3 представлена блок-схема алгоритма вычисления ВКФ.