Быстрое преобразование Фурье (БПФ, FFT) — алгоритм быстрого вычисления дискретного преобразования Фурье (ДПФ). То есть, алгоритм вычисления за количество действий меньшее, чем , требуемых для прямого (по формуле) вычисления ДПФ.
Иногда под БПФ понимается один из быстрых алгоритмов, называемый алгоритмом прореживания по частоте/времени, имеющий сложность.
Введение
Дискретное преобразование Фурье преобразует набор чисел в набор чисел , такой, что , где и при .
Алгоритм быстрого преобразования Фурье применим к любым коммутативным ассоциативным кольцам с единицей.
Чаще всего этот алгоритм применяют к полю комплексных чисел (c ) и к кольцам вычетов (коим, в частности, является компьютерный целый тип).
Основной алгоритм
Амплитуды БПФ для разного количества компонент разложения . Первый случай: , где - количество отсчетов сигнала; второй случай: ; третий: . Обратите внимание, что в первом и последних случаях спектральные характеристики оцениваются менее точно. Данный эффект связан с явлением Гиббса.
Покажем возможность выполнения дискретного преобразования Фурье за
действий при . В частности, при понадобится действий.
Основной шаг алгоритма состоит в сведении задачи для чисел к задаче с меньшим числом. Пусть , . Действуем над полем комплексных чисел: , , где - любое число.
Дискретное преобразование Фурье может быть представлено в виде
(Эти выражения могут быть легко получены, если исходную сумму разбить на меньшее число сумм с меньшим числом слагаемых, а после полученные суммы привести к одинаковому виду путём сдвига индексов и их последующего переобозначения).
.
С учётом того, что и , окончательно можем записать
Вычисляем каждое , где . Здесь по-прежнему требуется совершить действий. То есть на этом этапе производится операций.
Далее считаем , где . Заменив в последней формуле, убеждаемся в том, что выражения, стоящие в скобках, остались неизменными. А так как они уже были посчитаны на предыдущем шаге, то на вычисление каждого из них потребуется только действий. Всего чисел. Следовательно, операций на этом шаге . Последнее с хорошей точностью верно при любых . Но стоит также упомянуть, что алгоритм БПФ логично применять для , потому как при малом числе отсчётов он даёт небольшой выигрыш в скорости по отношению к ДПФ.
Таким образом, для того чтобы полностью перейти к набору чисел , необходимо действий. Следовательно, нет разницы, на какие два числа разбивать — ответ от этого сильно не будет меняться. Уменьшено же число операций может быть только дальнейшим разбиением .
Скорость алгоритма :
Короче говоря, число операций при любом разбиении на два числа, есть , где .
Обратное преобразование Фурье
Для обратного преобразования Фурье можно применять алгоритм прямого преобразования Фурье — нужно лишь использовать вместо (или применить операцию комплексного сопряжения вначале к входным данным, а затем к результату, полученному после прямого преобразования Фурье), и окончательный результат поделить на .
Общий случай
Общий случай может быть сведён к предыдущему. Пусть . Заметим, что . Обозначим . Тогда , если положить при .
Таким образом задача сведена к вычислению свёртки, но это можно сделать с помощью трёх преобразований Фурье для элементов. Выполняем прямое преобразование Фурье для и , перемножаем поэлементно результаты и выполняем обратное преобразование Фурье.
Вычисления всех и требуют действий, три преобразования Фурье требуют действий, перемножение результатов преобразований Фурье требует действий, вычисление всех зная значения свертки требует действий. Итого для дискретного преобразования Фурье требуется действий для любого .
Этот алгоритм быстрого преобразования Фурье может работать над кольцом только когда известны первообразные корни из единицы степеней и .
Наиболее распространенным алгоритмом БПФ является алгоритм Кули-Тьюки (Cooley–Tukey), при котором ДПФ от выражается как сумма ДПФ более малых размерностей и рекурсивно для того, чтобы достичь сложность . В вычислительной технике наиболее часто используется рекурсивное разложение ДПФ надвое, то есть с основанием 2, (хотя может быть использовано любое основание), а количество входных отсчетов является степенью двойки. Для случаев, когда ДПФ считается от количества отсчетов, являющихся простыми числами, могут быть использованы алгоритмы Блуштайна и Рейдера.
Ниже рассмотрим наиболее простой способ вычисления БПФ по алгоритму Кули-Тьюки с основанием 2.
Дискретное преобразование Фурье для вектора , состоящего из N элементов, имеет вид:
,
элементы матрицы имеют вид: .
Взяв за основание 2, ДПФ можно выразить как сумму 2 частей: сумму четных индексов и сумму нечетных индексов :
Коэффициенты и можно переписать следующим образом:
В результате получаем:
Вычисление данного выражения можно упростить, используя:
В результате упрощений, обозначив ДПФ четных индексов через (англ., even — четный) и ДПФ нечетных индексов через (англ., odd — нечетный), для получаем:
Данная запись является базой алгоритма Кули-Тьюки с основанием 2 для вычисления БПФ. То есть ДПФ от вектора, состоящего из N отсчетов, приведено к линейной композиции двух ДПФ от отсчетов, и, если для первоначальной задачи требовалось операций, то для полученной композиции — (за счет повторного использования промежуточных результатов вычислений и ). Если N является степенью двух, то это разделение можно продолжать рекурсивно до тех пор, пока не дойдем до двухточечного преобразования Фурье, которое вычисляется по следующим формулам:
При рекурсивном делении ДПФ от входных значений на сумму 2 ДПФ по входных значений сложность алгоритма становится равной .
Захаров С. И. Повышение эффективности вибродиагностики механизмов с помощью экспертных систем. М: Машиностроение//Вестник машиностроения, 2008, № 6, стр.31-32.
Другой контент может иметь иную лицензию. Перед использованием материалов сайта WikiSort.ru внимательно изучите правила лицензирования конкретных элементов наполнения сайта.
2019-2025 WikiSort.ru - проект по пересортировке и дополнению контента Википедии