- •Бпф по основанию 2 с прореживанием по времени
- •Процедура объединения. Граф «Бабочка»
- •Граф алгоритма бпф с прореживанием по времени. Двоично-инверсная перестановка
- •Поворотные коэффициенты
- •Алгоритм бпф с прореживанием по частоте
- •Граф алгоритма с прореживанием по частоте
- •Сравнение алгоритмов бпф по основанию 2 с прореживанием по времени и частоте
- •Ход выполнения работы
- •Листинг 1. Рекурсивная реализация бпф
Лабораторная работа №2. Алгоритмы быстрого дискретного преобразования Фурье
Цель: Изучение алгоритмов быстрого дискретного преобразования Фурье с прореживанием по частоте и по времени. Программная реализация алгоритмов БПФ для одномерного сигнала.
Программное обеспечение: MS Visual Studio, OpenCV 2.4.0.
Теория
Как отмечалось ранее, для вычисления одного спектрального отсчета требуется операций комплексного умножения и сложения. Таким образом, вычислительная сложность алгоритма ДПФ составляет комплексных умножений и сложений. При этом можно заметить, что если одно ДПФ на отсчетов заменить вычислением двух ДПФ по отсчетов, то это приведет к уменьшению количества операций в 2 раза. Замена -точечного ДПФ двумя -точечными представлено на рисунке 1.
Рис. 1 - Замена N-точечного ДПФ двумя N/2-точечными ДПФ
При этом каждое из – точечных ДПФ также можно вычислить путем замены -точечного ДПФ на два -точечных. В этом случае количество вычислительных операций равно . Таким образом можно продолжать разбиение исходной последовательности до тех пор, пока возможно деление последовательности на две. Очевидно, что если , – положительное целое, мы можем разделить последовательность пополам раз. Для такое разбиение представлено на рисунке 2.
Рис.2 - Разбиение и объединение последовательностей при N = 8
Каждое разбиение делит последовательность на две половинной длительности (красную и синюю), а каждое объединение собирает из двух последовательностей одну удвоенной длительности. Алгоритмы БПФ, которые используют выборки длиной , называются «алгоритмами БПФ по основанию 2». Данные алгоритмы получили наибольшее распространение.
Эффективность алгоритма БПФ полностью зависит от способа разбиения и объединения последовательности, поскольку если не учитывать операции на разбиение-объединение, то для расчета спектра требуется раз посчитать ДПФ на 2 точки, в результате общее количество вычислительных операций составит , то есть количество операций линейно зависит от величины выборки.
Бпф по основанию 2 с прореживанием по времени
Дискретное преобразование Фурье описывается формулой:
, (1)
Комплексную экспоненту в выражении (1) обозначим как:
(2)
Тогда выражение (1) принимает вид:
, (3)
Прореживание по времени заключается в разбиении исходной последовательности отсчетов на две последовательности и , длительности , таких что , а , . Другими словами, последовательность содержит отсчеты последовательности с четными индексами, а - с нечетными. Прореживание по времени для N = 8 наглядно представлено на рисунке 3.
Рис.3 - Прореживание по времени для N=8
Рассмотрим ДПФ сигнала прореженного по времени:
, (4)
где .
Если рассмотреть только первую половину спектра , , а также учесть что
(5)
тогда (4) можно записать:
(6)
где и точечные ДПФ последовательностей четной и нечетной , :
(7)
(8)
Таким образом, прореживание по времени можно считать алгоритмом разбиения последовательности на две половинной длительности. Первая половина объединенного спектра есть сумма спектра четной последовательности и спектра нечетной последовательности, умноженного на коэффициенты , которые носят названия поворотных коэффициентов.
Процедура объединения. Граф «Бабочка»
Теперь рассмотрим вторую половину спектра :
(9)
Рассмотрим подробнее множитель
(10)
Учтем, что
(11)
Выражение (11) справедливо для любого целого , тогда (10) можно записать с учетом (11):
(12)
Рассмотрим теперь поворотный коэффициент в (9):
(13)
Тогда выражение (9) с учетом (12) и (13) принимает вид:
(14)
Таким образом, окончательно можно записать:
(15)
(16)
Выражения (15) и (16) представляют собой алгоритм объединения при прореживании по времени. Данную процедуру объединения можно представить в виде графа (рисунок 4), который называется «Бабочка».
Рис. 4 - Процедура объединения на основе графа « Бабочка »
Граф алгоритма бпф с прореживанием по времени. Двоично-инверсная перестановка
Представим в виде графа алгоритм БПФ с прореживанием по времени основанный на разбиении — объединении при (рисунок 5).
Рис. 5 - Граф алгоритма БПФ с прореживанием по времени при N=8
На первом этапе отсчеты входного сигнала переставляются местами и исходная последовательность делится на четную и нечетную последовательности (обозначены красными и синими стрелками). Потом четная и нечетная последовательности в свою очередь делятся на четную и нечетную последовательности. При такое деление можно делать раз. В нашем случае . Данная процедура называется двоично-инверсной перестановкой, так можно выполнить перенумерацию отсчетов, переписав номер отсчета в двоичной системе в обратном направлении. Например, имеет индекс в десятичной системе счисления , если же переписать справа налево то получим , то есть после разбиения на четные нечетные перед первой операцией «Бабочка» встанет на место , которая в свою очередь встанет на место . По аналогичному правилу поменяются местами все отсчеты, при этом некоторые останутся на месте, в частности , так как если переписать справа налево, то все равно останется , аналогично . Очень важно понять, что данный метод перенумерации должен применяться при записи числа в двоичной системе, состоящей из разрядов. В приведенном примере использовалось 3 разряда двоичного числа, но если же , то необходимо записать число при использовании 4 разрядов. В этом случае и после переписывания получим , то есть при не останется на месте, а поменяется местами с .
Можно сказать, что напрямую двоично-инверсная перестановка удобна, когда заранее количество отсчетов входного сигнала фиксировано, однако в универсальных алгоритмах БПФ на различные размеры , двоично-инверсная перестановка не эффективна, проще и быстрее поменять отсчеты местами.
После двоично-инверсной перестановки получаем четыре 2-точечных ДПФ:
(17)
На основе четырех 2-точечных ДПФ формируются два 4-точечных ДПФ:
(18)
И на последнем уровне формируется полный спектр входного сигнала.