Alterna · учебный материал

11.2 Окно перемещается по сигналу

На каждом месте получаем сумму произведений окна и коэффициентов. Для строгой свёртки нужно учитывать переворот ядра.

Что в этом материале

Содержание и основные понятия

На предыдущей странице: сигнал становится отдельными отсчётами.
На каждом месте получаем сумму произведений окна и коэффициентов. Для строгой свёртки нужно учитывать переворот ядра.
Маленькое окно проходит по сигналу или изображению. Каждый выход складывается из чисел окна и общих коэффициентов. Частотная запись описывает те же данные иначе.
Для изменения рисунка включитеJavaScript; расчёт и теория доступны далее.
Один шаблон локальных сумм
Для конечных последовательностей вне диапазона считаем значения нулевыми. Их линейная свёртка:
y
[
n
]
=
∑
j
h
[
j
]
x
[
n
−
j
]
.
y[n]=\sum_j h[j]x[n-j].
y
[
n
]
=
j
∑
​
h
[
j
]
x
[
n
−
j
]
.
Если x имеет длинуN, h длинуK, full output имеет длинуN+K−1. H07 описывает эту семантику. При x=[1,2,3,4],h=[1,−1] получаем[1,1,1,1,−4]. Например,y[2]=1×3+(−1)×2=1; последний y[4]=1×0−4=−4.
Лаборатория реализует скользящее окно с перевёрнутым ядром. При padding p с каждой стороны и stride s число выходов floor((N+2p−K)/s)+1. Для full linear convolution выбирайте p=K−1,s=1. В общем случае выходной индекс i соответствует линейному n=i·s−p+K−1. Так начало массива output не путается с физическим индексом исходной формулы.
Эксперимент.
Пройдите все окна, включая начало и хвост. Для padding-значений должно быть явно видно, что это добавленный0. Увеличьте stride: некоторые положения окна пропускаются, а не усредняются автоматически.
Легко ошибиться.
Zero padding — допущение о продолжении сигнала, способное создать граничные эффекты. Ядро[1] должно сохранять исходные значения приp0,s1. Симметричное ядро не позволяет заметить переворот, поэтому для проверки convolution/correlation используйте несимметричный fixture.
x,h=[1,2,3,4],[1,-1]
y=[sum(h[j]*(x[n-j] if 0<=n-j<len(x) else 0)
for j in range(len(h))) for n in range(len(x)+len(h)-1)]
assert y==[1,1,1,1,-4]
Код повторяет только что разобранные операции.
Полный проверяемыйPython-пример главы
доступен отдельным файлом; показанный короткий фрагмент не заменяет его реализацию.
Переворот соответствует индексу h[n−k].
Что меняется без переворота окна. Как этот вопрос продолжает полученный результат?
Python-примеры главы 11
Академическая база →

Структурная карта учебников