где для за пределами области В этой статье используются общепринятые абстрактные обозначения, такие как или , в которых подразумевается, что функции следует рассматривать в их совокупности, а не в конкретные моменты времени (см. Convolution#Notation ).
Идея состоит в том, чтобы разделить задачу на несколько сверток с короткими сегментами :
где — произвольная длина сегмента. Тогда :
и может быть записана как сумма коротких сверток : [1]
где линейная свертка равна нулю вне области И для любого параметра [A] она эквивалентна -точечной круговой свертке с внутри области Преимущество состоит в том, что круговая свертка может быть вычислена более эффективно, чем линейная свертка, согласно теореме о круговой свертке :
где :
DFT N и IDFT N относятся к дискретному преобразованию Фурье и его обратному преобразованию, вычисляемому по дискретным точкам, и
Обычно выбирается таким образом, чтобы было целой степенью числа 2, а преобразования реализуются с помощью алгоритма БПФ для эффективности.
( Алгоритм перекрытия-сложения для линейной свертки )h = FIR_фильтрМ = длина(ч)Nx = длина(x)N = 8 × 2^ceiling( log2(M) ) (8 раз наименьшая степень двойки, большая, чем длина фильтра M. См. следующий раздел для немного лучшего выбора.)
step_size = N - (M-1) (L в тексте выше)Н = ДПФ(h, N)позиция = 0у(1 : Nx + M-1) = 0пока позиция + размер_шага ≤ Nx делать y(позиция+(1:N)) = y(позиция+(1:N)) + IDFT(DFT(x(позиция+(1:размер_шага)), N) × H) позиция = позиция + размер_шагаконец
Соображения эффективности
Когда DFT и IDFT реализуются алгоритмом FFT, псевдокод выше требует около N (log 2 (N) + 1) комплексных умножений для FFT, произведения массивов и IFFT. [B] Каждая итерация производит N-M+1 выходных выборок, поэтому количество комплексных умножений на выходную выборку составляет около :
Например, когда и Eq.3 равны , тогда как прямая оценка Eq.1 потребует до комплексных умножений на выходной образец, худший случай — когда и являются комплексными значениями. Также обратите внимание, что для любого заданного Eq.3 есть минимум относительно Рисунок 2 — это график значений , которые минимизируют Eq.3 для диапазона длин фильтров ( ).
Вместо уравнения 1 мы также можем рассмотреть применение уравнения 2 к длинной последовательности выборок длины. Общее количество комплексных умножений будет:
Для сравнения, количество комплексных умножений, требуемых алгоритмом псевдокода, составляет:
Следовательно, стоимость метода перекрытия-сложения масштабируется почти как , в то время как стоимость одной большой круговой свертки составляет почти . Два метода также сравниваются на рисунке 3, созданном с помощью моделирования Matlab. Контуры представляют собой линии постоянного отношения времени, необходимого для выполнения обоих методов. Когда метод перекрытия-сложения быстрее, отношение превышает 1, и видны отношения вплоть до 3.
^ Это условие подразумевает, что сегмент имеет по крайней мере добавленные нули, что предотвращает циклическое перекрытие переходных процессов нарастания и спада выходного сигнала.