Во время свертки на сигнале, почему мы должны перевернуть импульсную реакцию во время процесса?
convolution
impulse-response
winuall
источник
источник
Ответы:
Адаптировано из ответа на другой вопрос (как упомянуто в комментарии) в надежде, что этот вопрос не будет неоднократно подниматься вики-сообществом как один из главных вопросов ....
Разобьем входной сигналx на сумму масштабированных единичных импульсных сигналов. Отклик системы на единичный импульсный сигнал
⋯, 0, 0, 1, 0, 0,⋯ является импульсным откликом или импульсным откликом
источник
Вот пример C / C ++, который показывает, что свертка может быть сделана без обратного импульсного отклика. Если вы проверяете
convolve_scatter()
функцию, ни одна переменная нигде не отменяется. Это свертка рассеяния, при которой каждая входная выборка разбрасывается (суммируется) на несколько выходных выборок в памяти, используя веса, заданные импульсной характеристикой. Это расточительно, потому что выходные образцы нужно будет прочитать и записать несколько раз.Обычно свертка делается как сборка свертки, как в
convolve_gather()
. В этом методе каждая выходная выборка формируется отдельно путем сбора (суммирования) входных выборок с обратным импульсным откликом в качестве весов. Выходная выборка находится в регистре процессора, который используется в качестве аккумулятора, пока это делается. Обычно это метод выбора, потому что для каждой отфильтрованной выборки будет только одна запись в память. Теперь доступно больше операций чтения из памяти, но только столько, сколько было чтения из памяти в методе рассеяния.Это свертывает последовательности:
и используя оба метода свертки:
Я не могу представить, чтобы кто-либо использовал метод рассеяния, если только фильтр не меняется во времени, и в этом случае два метода будут давать разные результаты, и один из них может быть более подходящим.
источник
Это только «перевернуто» для точечных вычислений.
@Dilip объясняет, что представляет собой интеграл / суммирование свертки, но чтобы объяснить, почему одна из двух входных функций (часто
h(t)
) переключается для целей вычисления, рассмотрим систему с дискретным временем с входнымx[n]
и импульсным откликомh[n]
:Вы можете взять свою входную функцию
x[n]
и для каждой ненулевой выборки *x[n]
рассчитать масштабированный импульсный отклик от выборкиn
и далее до тех пор, пока сдвиг по времени неh[n]
уменьшится до нуля (предполагая причинностьh[n]
). Это не будет включать в себя не «листать» (точнее «обращения времени») : либоx[n]
илиh[n]
. Тем не менее, в конце вы должны добавить / наложить все эти масштабированные + смещенные «эхо» импульсной характеристики для каждого ненулевого значенияx[n]
.x[0]
k
h[n]
x[n]
, который естьx[0]h[0]
. Затем увеличениеk
на единицу сместитсяh[n]
на один шаг вправо, так чтоh[n]
вторая запись (h[1]
) с обращенной по времени теперь будет лежать поверхx[0]
, ожидая умножения. Это даст желаемый вкладx[0]h[1]
во времениn=1
, так же, как это было бы сделано в предыдущем методе.x[n]
h[n]
y[n]
источник
При индексе c [n] свертка a [n] и b [n] такова, что:
«c [n] является суммой всех произведений (a [k] b [m]), таких что m + k = n», поэтому m = n - k или k = n - m, что означает, что одна из последовательностей должен быть перевернут.
Теперь, почему свертка ведет себя так в первую очередь? Из-за его связи с умножением многочленов.
Умножение двух полиномов приводит к новому полиному с коэффициентами. Коэффициенты полинома произведения определяют операцию свертки. Теперь при обработке сигналов передаточные функции - преобразования Лапласа или z-преобразования - являются этими полиномами, причем каждый коэффициент соответствует разной временной задержке. Сопоставление коэффициентов произведения и мультипликатов приводит к тому, что «умножение в одном представлении соответствует свертке в преобразованном представлении».
источник
Во время свертки не должно происходить никакого «переворота» импульсного отклика ...
Однако, если вы хотите предотвратить любое изменение фазы, вы можете свернуть сигнал с импульсным откликом, а затем обратить вспять импульсный отклик и повторно свернуть, чтобы отменить фазовые эффекты.
В автономной обработке вы можете так же легко повернуть сигнал после первой свертки, чтобы прийти к такому же выводу (как предлагают комментарии).
источник
Теперь форма рукопожатия четко показывает симметрию, которая здесь задействована, и что никакого «переворачивания» не происходит. Однако преобразование этого в правильный одномерный интеграл требует превращения одного из двух аргументов в фактическую переменную интегрирования. Это либо так, либо нахождение жесткой симметричной формы, не связанной с маханием рукой. Последнее сложнее. По сути, вы должны вернуть нормализацию, создавая что-то (при использовании дельта-функции Дирака) как Если вы затем переставите одним способом, вы получите и из свойства просеивания оператора Дирака
источник