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