Значения свертки равны:
.у(00) = [1,-1,1,-1] [1,2, 3,4]
Т
= -2;
у (01) = {1,-1,1,-1] [2,1,4,3]
Г
= 2;
= [1,-1,1,-1] [3,4, 1,2]
Т
= -2;
= [1,-1,1,-1] [4, 3, 2, 1]
Г
= 2.
4.2. ПРЯМЫЕ МЕТОДЫ ВЫЧИСЛЕНИЯ СВЕРТОК
Для прямого вычисления сверток исяользуются выражения (4.1), (4.3),
(4.6) или соответствующие им векторноматричные произведения, что требует
порядка N
2
операций, где Л
г
- длина свертки. В ряде случаев одна из последо-
вательностей (для определенности будем считать {h (и)} известна заранее. Та-
кой последовательностью может быть импульсная характеристика фильтра
или опорная последовательность коррелятора. Использование особенностей
структуры {h («)j- позволяет часто существенно сократить число операций. В
частности, сокращение почти всегда возможно, если{й (и)} — бинарная после-
довательность. В этом случае выполняется умножение вектора S = [s(0),
s(l), ..., S(JV—1)] на бинарную матрицу. Оно может быть построено итера-
тивно. Сначала вычисляются суммы, соответствующие соседним парам столб-
цов матрицы и элементов вектора S:1H2; Зи4 ит.д. Затем эти результаты
используются для образования сумм соседних четырех элементов в столбцах
матрицы: 1, 2, 3, 4; 5, 6, 7, 8 и т. д. Сокращение объема вычислений при та-
кой процедуре возможно вследствие того, что на каждой итерации число раз-
личных сумм ограничено некоторой постоянной величиной, меньшей или рав-
ной числу строк матрицы. При обычном способе умножения эти ограничения
не учитываются. Рассмотрим этот вопрос подробнее.
На первой итерации образуются суммы, соответствующие парам соседних
столбцов матрицы и элементов вектора: 1 и 2; 3 и 4. Каждая пара столбцов со-
держит в своих строках только четыре различных числа 1, —1; —1, —1; —1, 1;
1,1, причем два числа являются инверсиями двух других. Этим числам со-
ответствуют четыре различные суммы ±s(i) ± s(i + 1), на вычисление которых
достаточно затратить только две операции сложения (вычитания). Общее ко-
личество операций на первой итерации равно 2 (N/2) = N. На второй итерации
используются соседние четверки столбцов матрицы, а количество различных
сумм в каждой четверке не превышает количества различных четырехразряд-
ных чисел, т. е. 2*. Поскольку половина из них получается инвертированием
другой половины, то на вычисление расходуется не более (2
4
/2) (7V/4) = 2N
операций. Рассуждая аналогично, получим, что на г-й итерации число операций
не превышает величины 2
2 -1
(Л/2'). Заметим, кроме того, что число сложе-
ний (вычитаний) на /-й итерации не может быть больше, чемN(N/2'), поэтому
в общем подсчете должно участвовать меньшее из этих чисел.
В табл. 4.1 показан выигрыш т? в количестве операций при рассмотренном
методе умножения для квадратных матриц с N = 2" .