Основы цифровой обработки сигналов
Корреляция и свертка
Корреляционная функция
Корреляция – это мера зависимости двух (случайных) величин.
Для численной оценки этой зависимости используется коэффициент корреляции. Он может принимать значения на отрезке от до . Если коэффициент корреляции равен , то две величины идеально коррелированы друг с другом, т.е. при изменении первой величины на какое-то значение вторая величина изменяется на такое же значение. Если коэффициент корреляции равен , то росту первой величины соответствует уменьшение второй величины на такое же значение.
Корреляционная функция двух сигналов – это зависимость коэффициента корреляции от величины временного сдвига между сигналами.
Взаимная корреляционная функция – это метод оценки корреляции двух сигналов и :
Для дискретных сигналов операция интегрирования заменяется на суммирование.
Автокорреляционная функция (АКФ) сравнивает сигнал с его сдвинутой во времени копией.
Например, АКФ прямоугольного импульса имеет форму треугольника, а АКФ бесконечной синусоиды – такая же синусоида с той же частотой. АКФ случайного процесса (шума) имеет один выраженный максимум в точке 0, и при малейшем сдвиге ее значения падают почти до нуля:
Таким образом, шум – слабо коррелированный процесс.
Кореляционная обработка сигналов
При помощи вычисления взаимной корреляционной функции можно решать следующие задачи:
- Поиск сигнала на фоне шумов;
- Поиск сигналов, похожих на некий эталон, и оценка степени их схожести;
- Измерение задержки распространения сигнала.
Дискретная свертка
Непрерывная свертка является одним из видов интегральных преобразований и по своему виду близка к корреляционной функции. С помощью свертки оценивается степень схожести одной функции с зеркально отраженной и сдвинутой во времени второй функцией.
Дискретная свертка двух последовательностей вычисляется по формуле:
Пример вычисления дискретной свертки. Рассмотрим две дискретные последовательности:
и
Тогда их свертка будет иметь вид:
При этом первую последовательность можно рассматривать как входной сигнал, а вторую – как некую систему, через которую этот сигнал проходит. Результат дискретной свертки содержит больше отсчетов, чем каждая из сворачиваемых последовательностей.
Пример вычисления дискретной свертки в Engee
Для того чтобы вычислить дискретную свертку в Engee, мы можем воспользоваться встроенной функцией conv, содержащейся в библиотеке DSP. Создадим две последовательности и и найдем их свертку с помощью функции conv.
using DSP;
x = [4 2 1 2 3];
h = [1 2 4 2 3];
y = conv(x,h)
✏️Задание 1
Вычислите в Engee свертку двух последовательностей: первая из них – это последовательность натуральных чисел от 1 до 10, а вторая представляет собой единичный импульс (массив из 9 нулей, между которыми в произвольном месте вставлена единица).
Решение
using DSP;
x = [1 2 3 4 5 6 7 8 9 10];
h = [0 0 0 0 1 0 0 0 0 0];
y = conv(x,h)
✏️Задание 2
Задайте в Engee две одинаковые дискретные синусоиды с частотой Гц, найдите их свертку и постройте ее график.
Решение
using DSP, Plots;
fs = 1000;
fc = 10;
t = [0:1/fs:0.2;];
x = cos.(2*pi*fc*t);
h = cos.(2*pi*fc*t);
y = conv(x,h);
plot(y, xlabel="t", ylabel="свертка", legend=false)
Применение свертки
-
Какая-либо цепь (система) описывается импульсной характеристикой – реакцией цепи на дельта-функцию. Для того чтобы вычислить выходной сигнал, необходимо осуществить свертку входного сигнала с импульсной характеристикой цепи. Свертка используется для вычисления выходного сигнала цепи при известном входном сигнале и известной импульсной характристике цепи (системы).
-
Также свертка применяется для поиска сигналов. Если система имеет импульсную характеристику, обратную значениям входной последовательности, то в момент совпадения отсчетов выход операции свертки будет максимальным. На этом основан принцип согласованной фильтрации. Согласованные фильтры применяются в том случае, когда нам важно определить наличие сигнала в эфире и узнать время его прибытия. Это одна из типичных задач радиолокации. Подобным же образом можно обнаруживать сигналы на фоне шумов.