Алгоритм БПФ с прореживанием по времени
![]() DSPL-2.0 — свободная библиотека алгоритмов цифровой обработки сигналов Распространяется под лицензией LGPL v3
Страница проекта на SourceForge
|
В предыдущих разделах мы рассмотрели ДПФ и его свойства, а также показали принцип построения алгоритмов быстрого преобразования Фурье (БПФ) на основе процедуры разделения-объединения.
В данном разделе мы рассмотрим один из наиболее распространенных алгоритмов БПФ: БПФ по основанию два с прореживанием по времени.
Приведем еще раз выражение для ДПФ:

Мы будем оперировать с поворотными коэффициентами ДПФ:


Прореживание по времени заключается в разделении исходной последовательности ,
,
на две последовательности половинной длительности
и
,
,
таким образом, что
, а
.
Последовательность содержит отсчеты с четными индексами, а
— с нечетными.
Прореживание по времени для наглядно представлено на рисунке 1.


Рассмотрим ДПФ прореженного по времени сигнала:

Если рассмотреть только первую половину ДПФ для индексов
,
а также учесть, что







Таким образом, прореживание по времени можно считать алгоритмом разделения последовательности
на две последовательности половинной длительности.
Первая половина ДПФ есть сумма ДПФ «четной» последовательности
и ДПФ
«нечетной» последовательности
, умноженного на поворотные коэффициенты
.
Проанализируем теперь вторую половину ДПФ
для
:





Тогда выражение (8) с учетом (9) и (10) принимает вид:


Выражение (12) объединяет два -точечных ДПФ
и
,
, прореженных сигналов половинной длительности
и
,
, в результирующее
-точечное ДПФ
,
, исходного сигнала.
Графически процесс объединения представлен на рисунке 2.

Из-за специфической формы графа он получил название «бабочка». Данная процедура объединения является основной при построении алгоритмов БПФ по основанию два.
На рисунке 3 представлен граф алгоритма БПФ в соответствии с (12) для .

для

Выражение (12) представляет собой процедуру объединения для расчета точечного ДПФ
,
, через два
-точечных ДПФ
и
,
, четной и нечетной прореженных последовательностей
и
,
.
Такую же процедуру можно применить для расчета каждого из -точечных ДПФ
и
через два
-точечных ДПФ.
Тогда для можно произвести
этап деления последовательности
на «четную» и «нечетную» и после этого производить объединение спектра за
этапов.
В результате мы получим полный граф алгоритма БПФ.
В качестве примера на рисунке 4 приведен полный граф БПФ с прореживанием по времени для .


На первом этапе отсчеты входного сигнала переставляются местами и исходная последовательность делится на «четную» и «нечетную» последовательности. Потом «четная» и «нечетная» последовательности в свою очередь делятся на «четную» и «нечетную» последовательности.
Данная процедура называется двоично-инверсной перестановкой, так можно выполнить перенумерацию отсчетов, переписав номер отсчета в двоичной системе счисления в обратном направлении.
Например, имеет индекс в десятичной системе счисления
,
если же
переписать справа налево, то получим
,
то есть
после разделения на «четные-нечетные» перед первой
операцией «бабочка» встанет на место отсчета
,
который в свою очередь встанет на место
.
По аналогичному правилу поменяются местами все отсчеты, при этом некоторые останутся на месте,
в частности , так как если
переписать справа налево,
то все равно останется
, аналогично
,
и
.
Важно отметить, что данный метод перенумерации должен применяться при записи числа в двоичной системе,
состоящей из разрядов. В приведенном примере
использовалось
3 разряда двоичного числа, но если бы
было равно 16, то необходимо было записать число при
использовании 4 разрядов.
В этом случае
и после перестановки получим
,
то есть при
, отсчет
не останется на месте, а поменяется местами с
.
После двоично-инверсной перестановки получаем четыре 2-точечных ДПФ:


И на последнем уровне формируется полное ДПФ входного сигнала:

В данном разделе мы рассмотрели один из наиболее широко распространенных алгоритмов быстрого преобразования Фурье: алгоритм с прореживанием по времени.
Показана процедура разделения прореживанием по времени и приведена процедура объединения на основе графа «бабочка» согласно выражению (12).
Был приведен полный граф БПФ с прореживанием по времени для .
В следующем разделе мы рассмотрим еще один алгоритм БПФ по основанию два: алгоритм БПФ с прореживанием по частоте .