logo search
Цифровая обработка сигналов Лекции / Цифровая обработка сигналов Лекции

2. Алгоритм бпф с прореживанием по времени

Пусть требуется вычислить ДПФ (12.1) при N = 2v, где v > 0 — целое. Если N  2v, то последовательность x(n) дополняется в конце нулевыми элементами так, чтобы длина результирующей последовательности была степенью 2.

Исходную N-точечную последовательность

х(n) = хv(n), где v = log2N, n = 0, ...., N – 1,

разобьем на две (N/2)-точечные последовательности xv1,0(n) и xv1,1(n), состоящие соответст­венно из четных и нечетных членов х(n Т), т. е.

(4)

При этом N-точечное ДПФ (12.1) можно записать в виде

. (5)

Учитывая, что , получаем

, (6)

где и— -точечные ДПФ соответственно последовательностейи:

.

Преобразование Xv(k) должно быть определено для N точек

(k = 0, 1, ..., N – 1), а последовательности иопределяются только дляточек (k = 0, 1, ..., – 1), поэтому доопределим (12.6) для значений k = ,+1, ..., N – 1. Учитывая, что ипериодические функции с периодом, можно записать

(7)

так как WN = ;

Формулы (12.6) и (7) дают алгоритм вычисления N-точечной ДПФ через -точечные ДПФ, который можно пред­ставить направленным графом, имеющим вид «бабочки» – рис. 1.

.

Рис. 1. Направленный граф «бабочка»

Выходные числа X и Y графа на рис. 1 получаются из входных чисел A и B по правилам

(8)

В качестве примера граф на рис. 1 представляет операции (6) и (7). Аналогично можно выразить -точечные ДПФ

и

через - точечные ДПФ:

(8а)

и

(8б)

где Xv–2,0(k) и Xv–2,1(k) – соответственно -точечные ДПФ четных

хv–2,0(n) и нечетных хv–2,1(n) членов последовательности

хv–1,0(n), а Xv–2,2(k) и Xv–2,3(k) – соответственно -точечные ДПФ четных хv–2,2(n) и нечетных хv–2,3(n) членов

последовательности хv–1,1(n).

Процесс уменьшения размера ДПФ в два раза продолжается до тех пор, пока на v-м шаге (v = log2N, где N – исходный размер ДПФ) не окажутся только 2-точечные ДПФ Ф(k), k = 0, 1, для двухточечных последовательностей (n), n = 0, 1, определяемые из соотношений

(9)

Теперь, используя алгоритм, представленный графом «бабочка» строим алгоритм 8-точечного БПФ – рис. 2.

Рис. 2. а). 8-точечное БПФ с прореживанием по времени

Вначале построим исходный массив, который состоит из элементов последовательности х(n), n = 0, 1, …, 7. На входах первого графа «бабочка» первой ступени помещаются числа х(0) и х(4), на входах второго графа «бабочка» — числа х(2) и х(6), на входах третьей «бабочки» — х(1) и х(5) и на входах четвертой «бабочки» — х(3) и х(7).

Рис. 2, б). Двоичная инверсия

Если последовательность х(n) записывается в массив ячеек памяти, то удобно разместить элементы х(n) в следующем порядке: и х(5) х(0), х(4), х(2), х(6), х(1), х(5), х(3), х(7) – рис. 2, б). Эта последовательность X0(k) получается из исходной последовательности х(n) путем двоичной инверсией номеров. Число х(n) с номером в двоичном представлении 4(10)=1002 запоминается в ячейке с номером 001(2)=1(10), а число х(3), где 3(10) = 011(2), запоминается в ячейке с номером 110(2) = 6(10) и т.д. Начальная ступень преобразования X0(k), k = 0, 1, …,7, получается просто прореживанием исходной временной последовательности n = 0, 1, …, 7

,

где – двоично-инверсное представление номера n.

Входные числа «бабочек» X0(k) получаются из х(n) в соответствии с двоичной инверсией номеров, т.е. число х(n) с двоичным представлением номера n является входным числом X0(k) «бабочки» с номером k, равным инверсному двоичному представлению номера n.

На выходах N/2 = 4 «бабочек» m = 1-й ступени образовываются значения X2(k), являющиеся входными числами «бабочек» m = 2-й ступени. На выходах последней значения выходной последовательности X3(k) = X(k), k = 0 … 7. Выходная последовательность X(k), k = 0, 1, ..., 7, получается в естественном порядке следования.

Алгоритм БПФ можно выполнять, путем замещения массивов памяти. Входная последовательность X0(k) «бабочек» размещается в массиве из 2v ячеек памяти, после вычисления выходов «бабочек» входные элементы становятся ненужными и в указанные ячейки памяти могут быть записаны вычисленные выходные числа. На следующем этапе вновь вычисленные значения выходов «бабочек» записываются в ячейки массива вместо использованных входных чисел, и в конце вычислений во входном массиве окажутся записанными значения X(k) в естественном порядке, т.е. значения ДПФ при k = 0, 1, 2, …, N – 1.