Разница между сверткой и взаимной корреляцией с точки зрения анализа сигналов

33

Я пытаюсь понять разницу между сверткой и взаимной корреляцией. Я прочитал понял этот ответ. Я также понимаю картину ниже.

Но с точки зрения обработки сигналов (поле, о котором я мало знаю…), учитывая два сигнала (или, может быть, сигнал и фильтр?), Когда мы будем использовать свертку и когда мы предпочтем использовать взаимную корреляцию, я значит, когда в реальной жизни анализируем ли мы предпочтение свертки, а когда - взаимной корреляции.

Кажется, что эти два термина очень полезны, так что же это за польза?

Covolution

* Кросс-корреляция здесь должна читаться g*fвместоf*g

MathBgu
источник

Ответы:

24

В обработке сигналов распространены две проблемы:

  • Каковы выходные данные этого фильтра, когда его входом является ? Ответ дается выражением , где - сигнал, называемый «импульсным откликом» фильтра, а - операция свертки.x ( t ) h ( t ) h ( t ) x(t)x(t)h(t)h(t)

  • Учитывая шумный сигнал , присутствует ли сигнал как-то в ? Другими словами, является ли вида , где шум? Ответ может быть найден по соотношению и . Если корреляция велика для заданной временной задержки , тогда мы можем быть уверены, что ответ "да".x ( t ) y ( t ) y ( t ) x ( t ) + n ( t ) n ( t ) y ( t ) x ( t ) τy(t)x(t)y(t)y(t)x(t)+n(t)n(t)y(t)x(t)τ

Обратите внимание, что когда задействованные сигналы симметричны, свертка и взаимная корреляция становятся одной и той же операцией; этот случай также очень распространен в некоторых областях DSP.

MBaz
источник
Понял. Большое спасибо за ваш ясный и яркий ответ!
MathBgu
3
что мне нравится в объяснении импульсного отклика, так это то, что ты действительно понимаешь, почему свёртка «обратная» В дискретных терминах, токовый выход - это токовый вход x импульсная характеристика в момент времени 0 + остаточный выход от предыдущих входных импульсных откликов (вход n-1 * импульс 1 + вход n-2 * импульс 2 и т. Д.).
Жан-Фредерик
@ Jean-FredericPLANTE да, это хороший способ объяснить это.
MBaz
Этот ответ с комментарием @ Jean-FredericPLANTE делает его более осмысленным.
TPK
12

Два термина свертка и взаимная корреляция реализованы очень похожим образом в DSP.

Какой вы используете, зависит от приложения.

Если вы выполняете линейную, не зависящую от времени операцию фильтрации, вы сворачиваете сигнал с импульсной характеристикой системы.

Если вы «измеряете сходство» между двумя сигналами, вы взаимно коррелируете их.

Два термина объединяются, когда вы пытаетесь создать соответствующий фильтр .

Здесь вы пытаетесь решить, содержит ли данный сигнал известный «импульс» (сигнал), . Один из способов сделать это - свернуть данный сигнал с обращением во времени известного импульса, : теперь вы используете свертку для выполнения взаимной корреляции данного сигнала с известным импульсом.s[n]p[n]sp


Примечание стороны

Термин «взаимная корреляция» (для некоторых) неправильно используется в области DSP.

Для статистиков корреляция - это значение, которое измеряет, насколько близки две переменные и должны быть между и .1+1

Как вы можете видеть из записи в Википедии о взаимной корреляции , используется версия DSP, и они заявляют:

Кросс-корреляция - это мера сходства двух рядов в зависимости от запаздывания одного относительно другого.

Проблема с определением DSP: состоит в том, что эта мера "подобия" зависит от энергии в каждом сигнале.

mx[n]y[n+m]
Питер К.
источник
1
Это очень полезно для меня. Спасибо!
MathBgu
3

При обработке сигнала выполняется свертка для получения выходных данных системы LTI. Корреляция (авто или кросс-корреляция) обычно рассчитывается для последующего использования для некоторых других вычислений.

Вы должны быть осторожны, чтобы не перепутать корреляцию, ковариацию и коэффициент корреляции. Корреляция не обязательно должна быть между -1 и 1. Коэффициент корреляции ( https://en.wikipedia.org/wiki/Pearson_product-moment_correlation_coefficient ) падает между -1 и 1, потому что он масштабируется двумя дисперсиями случайных величин , Мы должны помнить, что реальная операция, выполняемая в статистической обработке сигналов для анализа того, насколько связаны две случайные величины, это «ковариация», а не корреляция. Но для большинства применений, где сигнал захватывается датчиком и преобразуется в напряжение и оцифровывается с помощью АЦП, можно предположить, что сигнал имеет нулевое среднее значение, следовательно, корреляция равна ковариации.

кость
источник
Я посмотрю в этой ссылке. Спасибо!
MathBgu
3

@MathBgu Я прочитал все приведенные выше ответы, все они очень информативны, и я хотел бы добавить одну вещь для вашего лучшего понимания, рассматривая формулу свертки следующим образом

f(x)g(x)=f(τ)g(xτ)dτ

и для взаимной корреляции

(fg)(t)=deff(τ)g(t+τ)dτ,

мы узнаем, что с точки зрения уравнения единственное отличие состоит в том, что в свертке перед выполнением произведения скользящей точки мы переворачиваем сигнал по оси y, т. е. меняем на , тогда как взаимная корреляция - это просто скольжение скалярное произведение двух сигналов.(t)(t)

Мы используем свертку, чтобы получить вывод / результат системы, которая имеет два блока / сигнала, и они находятся непосредственно рядом друг с другом (последовательно) во временной области.

Р.М. Фахим
источник
Спасибо за упоминание этого дополнительного разъяснения!
MathBgu
Означает ли * в f * комплексное сопряжение? Вместо «поперек оси Y» рассмотрите «перевернуть ось времени», потому что переворот ощущается как будто происходит что-то вертикальное, особенно. при упоминании оси у.
Петрус Терон
2

Есть много тонкости между значениями свертки и корреляции. Оба относятся к более широкой идее о внутренних произведениях и проекциях в линейной алгебре, то есть проецируют один вектор на другой, чтобы определить, насколько он «силен» в направлении последнего.

Эта идея распространяется на область нейронных сетей, где мы проецируем выборку данных на каждую строку матрицы, чтобы определить, насколько хорошо она «вписывается» в эту строку. Каждая строка представляет определенный класс объектов. Например, каждая строка может классифицировать букву в алфавите для распознавания рукописного ввода. Обычно каждая строка называется нейроном, но ее также можно назвать согласованным фильтром.

По сути, мы измеряем, насколько похожи две вещи, или пытаемся найти какую-то особенность в чем-то, например, сигнал или изображение. Например, когда вы свертываете сигнал с помощью полосового фильтра, вы пытаетесь выяснить, какой контент у него в этой полосе. Когда вы коррелируете сигнал с синусоидой, например DFT, вы ищете силу частоты синусоиды в сигнале. Обратите внимание, что в последнем случае корреляция не уменьшается, но вы все еще «коррелируете» две вещи. Вы используете внутренний продукт для проецирования сигнала на синусоиду.

Так в чем же разница? Хорошо, учтите, что при свертке сигнал обратный по отношению к фильтру. С изменяющимся во времени сигналом это приводит к тому, что данные коррелируются в порядке их поступления в фильтр. На мгновение давайте определим корреляцию просто как точечный продукт, т.е. проецируем одно на другое. Итак, в начале мы коррелируем первую часть сигнала с первой частью фильтра. Когда сигнал продолжается через фильтр, корреляция становится более полной. Обратите внимание, что каждый элемент в сигнале умножается только на тот элемент фильтра, который он «касается» в данный момент времени.

Итак, с помощью свертки мы в некотором смысле коррелируем, но мы также пытаемся сохранить порядок во времени, когда происходят изменения, когда сигнал взаимодействует с системой. Однако, если фильтр симметричный, как это часто бывает, это не имеет значения. Свертка и корреляция дадут одинаковые результаты.

С помощью корреляции мы просто сравниваем два сигнала, а не пытаемся сохранить порядок событий. Чтобы сравнить их, мы хотим, чтобы они смотрели в одном направлении, то есть выстроились в линию. Мы накладываем один сигнал поверх другого, чтобы мы могли проверить их сходство в каждом временном окне, если они не совпадают по фазе или мы ищем меньший сигнал в большем.

В обработке изображений все немного по-другому. Нам нет дела до времени. Однако свертка все еще обладает некоторыми полезными математическими свойствами . Однако, если вы пытаетесь сопоставить части большего изображения с меньшим (то есть с согласованной фильтрацией), вам не захочется переворачивать их, потому что тогда функции не будут выстраиваться. Если, конечно, фильтр является симметричным. В обработке изображений корреляция и свертка иногда используются взаимозаменяемо, особенно с нейронными сетями . Очевидно, что время все еще актуально, если изображение является абстрактным представлением двумерных данных, где одним измерением является время - например, спектрограмма.

Итак, в итоге, и корреляция, и свертка - это скользящие внутренние продукты, используемые для проецирования одной вещи на другую, поскольку они изменяются в пространстве или времени. Свертка используется, когда важен порядок, и обычно используется для преобразования данных. Корреляция обычно используется, чтобы найти меньшую вещь внутри большей, то есть для соответствия. Если хотя бы одна из двух «вещей» симметрична, то не имеет значения, какую вы используете.

orodbhen
источник
0

Оставьте обработку сигналов в стороне, если вы просто попытаетесь понять, что происходит в Convolution и Correlation, обе эти операции очень похожи. Единственная разница заключается в Convolution, одна из переменных инвертируется (переворачивается) перед выполнением накопления продукта. Смотрите , что я не использую слово сигнала в любом месте выше. Я говорю только с точки зрения выполненных операций.

Теперь давайте перейдем к обработке сигналов.

Операция свертки используется для расчета выходных данных системы с линейным временным инвариантом (система LTI) с учетом входного сигнала ( x ) и импульсного отклика системы ( h ). Чтобы понять, почему только операция Convolution используется для получения выходных данных системы LTI, есть большой вывод. Пожалуйста, найдите вывод здесь.

http://www.rctn.org/bruno/npb163/lti-conv/lti-convolution.html

Операция корреляции используется для нахождения сходства между двумя сигналами x и y. Чем больше значение корреляции, тем больше сходство двух сигналов.

Понять разницу здесь,

  • Свертка -> между сигналом и системой (фильтр)

  • Корреляция -> между двумя сигналами

Таким образом, с точки зрения анализа сигналов, операция Convolution не используется. Только корреляция используется с точки зрения анализа сигнала. Принимая во внимание, что свертка используется с точки зрения системного анализа.

Лучший способ понять операции свертки и корреляции - это понять, что происходит, когда две свертки и корреляция выполняются между двумя непрерывными переменными, как показано на диаграммах в вопросе.

Картик Подугу
источник