Один шаблон локальных сумм
Для конечных последовательностей вне диапазона считаем значения нулевыми. Их линейная свёртка:
Если 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.