1 Лабораторная работа № 4 Корреляция и автокорреляция. В реальных задачах часто ставится вопрос о степени похожести одного процесса на другого или же о независимости одного процесса от другого. Иными словами, требуется определить взаимосвязь между сигналами, то есть найти корреляцию. Методы корреляции используются в широком диапазоне задач: поиск сигналов, компьютерное зрение и обработка изображений, в задачах радиолокации для определения характеристик целей и определения расстояния до объекта. Кроме того, с помощью корреляции производится поиск слабых сигналов в шумах. В задачах прохождения сигналов через различные цифровые узлы происходит свертка сигнала с импульсной характеристикой фильтра. Импульсной характеристикой h(n) называется реакция цепи на входное воздействие в виде функции Дирака (δ-функции). Она отражает влияние цепи на сигнал. Корреляцию между двумя сигналами можно вычислить как сумму произведений пар отсчетов исследуемых сигналов. Если взять две абсолютно независимые случайные последовательности, то их сумма произведений стремится к нулю. Говорят, что такие сигналы обладают нулевой корреляцией. Причем, чем длиннее последовательности, тем сильнее результат стремится к нулевому значению. Корреляция бывает положительной и отрицательной. Положительная корреляция – большие значения одного сигнала связаны с большими значениями другого сигнала (увеличение одной переменной взаимосвязано с увеличением другой переменной). Отрицательную корреляцию проще всего понимать так: увеличение одной переменной связано с уменьшением другой переменной. Формула взаимной корреляции: Нормирующий множитель 1/N применяется для исключения влияния длительности последовательностей. В терминах функционального пространства сигналов корреляция может быть выражена как косинус угла между векторами. Следовательно, при полном совпадении сигналов степень их связи будет принимать положительное 2 единичное значение, при полной противоположности сигналов – отрицательную единицу, а при полном несовпадении – нулевое значение. Приведем примеры сигналов и найдем корреляцию между ними. Функция correlate() вычисляет значения взаимнокорреляционной функции (кросскорреляцию) двух одномерных последовательностей. Умножение на нормирующий множитель не выполняется. Положительная корреляция: Как видно, встроенная функция correlate() для совпадающих сигналов вычисляет сумму произведений. Отрицательная корреляция: 3 Разные сигналы: На практике, когда два сигнала коррелируют, их взаимное расположение во времени – неизвестно. Сигналы могут иметь одинаковую форму, но задержаны друг относительно друга. В связи с этим, для установления максимальной корреляции, её требуется находить для нескольких задержек. Случайные сигналы Найдем корреляцию двух псевдослучайных процессов. Параметр seed() задает начальное условие для случайного процесса. Если установить какое-либо число, то при вызове любой функции случайного числа будет генерироваться предопределенный набор чисел (псевдослучайный). С помощью метода randint() из библиотеки numpy.random зададим случайную последовательность целых чисел. Случайные процессы с нулевой корреляцией: 4 Случайные процессы с ненулевой корреляцией: Фильтрующее свойство дельта-функции в процессе вычисления корреляции позволяет найти значение сигнала в момент, когда дельта-функция не равна 0: Автокорреляционная функция Автокорреляционная функция (АКФ) – показывает зависимость между сигналом и его копией, сдвинутой по времени. АКФ находит применение в кодировании информации. Выбор кодирующей последовательности по параметрам длины, частоты и формы во многом обусловлен корреляционными свойствами этой последовательности. Наилучшая кодовая последовательность обладает наименьшим значением вероятности 5 ложного обнаружения или срабатывания (для детектирования сигналов, для пороговых устройств) или ложной синхронизации (для передачи и приема кодовых последовательностей). Автокорреляционная функция помогает находить повторяющиеся участки во временной последовательности, с помощью АКФ можно находить несущую частоту сигнала. Поскольку АКФ есть произведение сигнала и его копии, то физический смысл АКФ – энергия сигнала. В частности, в нулевой момент времени (n = 0) АКФ равна энергии сигнала. В numpy нет встроенной функции автокорреляции, но её несложно написать самому на базе функции correlate(). Свойства АКФ 1. АКФ это симметричная и четная функция. 2. Имеет максимум в нуле. 3. АКФ периодической последовательности – периодическая функция. 4. АКФ суммы двух некоррелированных сигналов – сумма АКФ этих сигналов. 5. АКФ бесконечного во времени белого шума имеет пик в нулевом значении и нули во всех остальных. АКФ прямоугольного импульса Пример: Автокорреляционная функция прямоугольного импульса треугольный сигнал. – Поскольку вычисление АКФ прямым методом – трудозатратная операция (большое число операций умножения и сложения), выполняемая за O(N2), то во многих задачах встаёт вопрос о снижении качества корреляционных свойств в 6 связи с уменьшением длины последовательности. Однако, с помощью быстрого преобразования Фурье (БПФ) можно свести вычислительную сложность к O(Nlog(N)). С помощью теоремы Винера-Хинчина, которая связывает АКФ сигнала и его спектральную плотность мощности, можно вычислить АКФ через двойное взятие БПФ сигнала. Задание Внимательно изучите теоретический материал. Введите приведённые код в блокнот Jupyter (в пакете Anaconda). Изучите полученные результаты и графики.