Круговая свертка , также известная как циклическая свёртка , является частным случаем периодической свертки , которая является свёрткой двух периодических функций, имеющих одинаковый период. Периодическая свертка возникает, например, в контексте дискретного временного преобразования Фурье (ДВПФ). В частности, ДВПФ произведения двух дискретных последовательностей является периодической свёрткой ДВПФ отдельных последовательностей. И каждое ДВПФ является периодическим суммированием непрерывной функции преобразования Фурье (см. Дискретное временное преобразование Фурье § Связь с преобразованием Фурье ). Хотя ДВПФ обычно являются непрерывными функциями частоты, концепции периодической и круговой свертки также напрямую применимы к дискретным последовательностям данных. В этом контексте круговая свертка играет важную роль в максимизации эффективности определённого вида общей операции фильтрации.
Периодическая свертка двух T-периодических функций может быть определена как :
где - произвольный параметр. Альтернативное определение, в терминах записи нормальной линейной или апериодической свертки, следует из выражения и как периодических сумм апериодических компонентов и , то есть :
Затем :
Обе формы можно назвать периодической сверткой . [a] Термин круговая свертка [2] [3] возникает из важного специального случая ограничения ненулевых частей как и интервалом Тогда периодическое суммирование становится периодическим расширением [b] , которое также можно выразить как круговую функцию :
А пределы интегрирования сводятся к длине функции :
Аналогично, для дискретных последовательностей и параметра N мы можем записать круговую свертку апериодических функций и как :
Эта функция является N -периодической. Она имеет не более N уникальных значений. Для особого случая, когда ненулевая степень как x, так и h ≤ N , она сводится к умножению матриц , где ядром интегрального преобразования является циркулянтная матрица .
На рисунке проиллюстрирован случай, представляющий большой практический интерес. Длительность последовательности x равна N (или меньше), а длительность последовательности h значительно меньше. Тогда многие значения круговой свертки идентичны значениям x∗h , что на самом деле является желаемым результатом, когда последовательность h представляет собой фильтр с конечной импульсной характеристикой (КИХ). Кроме того, круговая свертка очень эффективна для вычисления с использованием алгоритма быстрого преобразования Фурье (БПФ) и теоремы о круговой свертке .
Существуют также методы для работы с последовательностью x , которая длиннее практического значения для N. Последовательность делится на сегменты ( блоки ) и обрабатывается по частям. Затем отфильтрованные сегменты аккуратно собираются вместе. Краевые эффекты устраняются путем перекрытия либо входных блоков, либо выходных блоков. Чтобы помочь объяснить и сравнить методы, мы обсудим их оба в контексте последовательности h длиной 201 и размера FFT N = 1024.
Этот метод использует размер блока, равный размеру FFT (1024). Сначала мы опишем его в терминах нормальной или линейной свертки. Когда обычная свертка выполняется для каждого блока, на краях блока возникают переходные процессы запуска и затухания из-за задержки фильтра (200 выборок). Только 824 выходных данных свертки не подвержены влиянию краевых эффектов. Остальные отбрасываются или просто не вычисляются. Это привело бы к пробелам в выходных данных, если бы входные блоки были смежными. Пробелы избегаются путем перекрытия входных блоков на 200 выборок. В некотором смысле, 200 элементов из каждого входного блока «сохраняются» и переносятся в следующий блок. Этот метод называется перекрытием-сохранением [ 4], хотя метод, который мы описываем далее, требует аналогичного «сохранения» с выходными выборками.
Когда для вычисления 824 незатронутых выборок DFT используется FFT, у нас нет возможности не вычислять затронутые выборки, но передние и задние краевые эффекты перекрываются и добавляются из-за круговой свертки. Следовательно, 1024-точечный обратный FFT (IFFT) вывод содержит только 200 выборок краевых эффектов (которые отбрасываются) и 824 незатронутых выборки (которые сохраняются). Чтобы проиллюстрировать это, четвертый кадр рисунка справа изображает блок, который периодически (или «круговым образом») расширялся, а пятый кадр изображает отдельные компоненты линейной свертки, выполненной для всей последовательности. Краевые эффекты находятся там, где вклады расширенных блоков перекрывают вклады исходного блока. Последний кадр представляет собой составной вывод, а раздел, окрашенный в зеленый цвет, представляет незатронутую часть.
Этот метод известен как перекрытие-сложение . [4] В нашем примере он использует смежные входные блоки размером 824 и дополняет каждый из них 200 нулевыми выборками. Затем он перекрывает и добавляет 1024-элементные выходные блоки. Ничего не отбрасывается, но 200 значений каждого выходного блока должны быть «сохранены» для сложения со следующим блоком. Оба метода продвигают только 824 выборки на 1024-точечное ОБПФ, но перекрытие-сохранение избегает начального нулевого дополнения и окончательного сложения.