Секционная свёртка

Материал из testwiki
Перейти к навигации Перейти к поиску

Шаблон:Значения Секционная (секционированная) свёртка — метод вычисления свёртки, используемый, когда количество элементов одной из входных последовательностей во много раз больше, чем количество элементов другойШаблон:Sfn. Основные методы вычисления секционной свёртки — Шаблон:Нп3 и Шаблон:Нп3.

Вычисление

Пусть x={x(1),x(2),} — неограниченная последовательность, h={h(1),,h(N)} — последовательность длины N, L — некоторое натуральное число.

Метод перекрытия с суммированием

Для вычисления линейной свёртки y=x*h методом перекрытия с суммированием необходимо разделить последовательность x на смежные секции длины L:

x(n)=k=0+xk(n),

где

xk(n)={x(n),n[kL,(k+1)L1],0,n[kL,(k+1)L1].

Тогда

y(n)=m=0N1h(m)k=0+xk(nm)=k=0+h(n)*xk(n)=k=0+yk(n).

Длина каждой из частичных свёрток в данной сумме равна L+N1, то есть имеется участок длины N1, на котором k-я и (k+1)-я частичные свёртки перекрываются, поэтому их отсчёты на участке перекрытия нужно сложить. Отсюда и происходит название данного методаШаблон:Sfn.

Метод перекрытия с накоплением

Пусть теперь длина секций xk последовательности x равна L+N1 и у этих секций есть участки перекрытия длиной N1. Для каждой секции вычисляется циклическая свёртка h и xk, содержащая L+N1 отсчёт и обозначаемая yk. Необходимо отбросить последние N1 отсчётов этой последовательности, а остальные присоединить к последовательности yk1. После выполнения этой процедуры для каждого k получится искомая последовательность y=x*hШаблон:Sfn.

Замечание

Число L удобно выбирать так, чтобы число L+N1 было степенью двойки. Тогда каждую из частичных свёрток можно эффективно выполнять с помощью быстрых алгоритмов, значительно снижая вычислительную сложность.

Примечания

Шаблон:Примечания

Литература

Шаблон:Math-stub