Скачиваний:
6
Добавлен:
28.04.2023
Размер:
283.88 Кб
Скачать

1

Лекция 13. Быстрое преобразование Фурье (БПФ)

1.БПФ Кули-Тьюки.

2.Одноэтапный алгоритм БПФ.

3.Двухэтапный алгоритм БПФ.

4.ν-этапныйй алгоритм БПФ.

5.Эффективность алгоритма БПФ.

6.Формирование начальных условий в алгоритме БПФ.

7.Вычисление ОДПФ с помощью БПФ.

13.1. БПФ Кули-Тьюки

Рассмотрим, какое количество арифметических операций с комплексными числами требуется для вычисления ДПФ (12.17):

 

 

N 1

 

 

 

 

 

 

X(k) x(n)WNnk,

k 0,1,..., N 1,

(12.17)

 

 

n 0

 

 

 

 

 

где

 

 

 

 

 

 

 

 

 

Wnk

 

j

2

nk

 

 

 

e

 

N .

(12.19)

 

 

N

 

 

 

 

 

Вычисление X(k)

представляет собой цикл в цикле: внутренний цикл по n, внешний

по k.

 

 

 

 

 

 

 

Для внутреннего цикла:

 

 

 

 

 

 

k fix; n 0, ... ,

N 1

N 1 N

 

 

 

 

2N операций.

 

 

 

N

 

 

 

 

При k 0,1, ..., N 1 2N N 2N2

операций.

 

Порядок вычислительной сложности относительно длины последовательности N:

O(N2).

БПФ — это совокупность алгоритмов, предназначенных для быстрого вычисления ДПФ.

Первый БПФ Кули-Тьюки (БПФ по основанию 2) опубликован в 1965 г., в нем длина исходной последовательности должна быть степенью двойки:

N 2

.

(13.1)

Если длина N не удовлетворяет условию (13.1), последовательность дополняется нулями.

Основная идея — поэтапное (циклическое) вычисление ДПФ через ДПФ вдвое меньшей последовательности. Всего этапов.

13.2. Одноэтапный алгоритм БПФ

Начальные условия алгоритма: исходную N-точечную последовательность разделим на две N2-точечные (рис. 13.1 и 13.2):

четных отсчетов;

нечетных отсчетов.

Получили группу «чет N2 + неч N2», которую используем для расчета N-

точечного ДПФ.

2

Рис. 13.1. Деление исходной последовательности

Этап

Деление 8-точечной

Размерность

последовательности

 

 

 

x(0) x(1) x(2) x(3) x(4) x(5) x(6) x(7)

8

1

x(0) x(2) x(4) x(6)

x(1) x(3) x(5) x(7)

2*4

2

x(0) x(4)

x(2) x(6)

x(1) x(5)

x(3) x(7)

4*2

3

x(0)

x(4)

x(2)

x(6)

x(1)

x(5)

x(3)

x(7)

Рис. 13.2. Пример деления 8-точечной последовательности

Вывод формулы БПФ

С учетом начальных условий ДПФ (12.17) примет вид:

 

N 2 1

N 2 1

X(k)

x(2n)WN(2n)k

x(2n 1)WN(2n 1)k

 

n 0

n 0

где (2n) отображает четные, а (2n 1) — нечетные значения n.

Вынесем Wk

за знак второй суммы:

 

 

 

 

N

 

 

 

 

 

 

 

 

 

 

 

N 2 1

 

 

 

 

N 2 1

 

X(k)

x(2n)WN(2n)k WNk

 

x(2n 1)WN(2n)k

 

 

n 0

 

 

 

 

 

n 0

представим WN(2n)k в виде:

 

 

 

 

 

 

 

 

 

 

j

2

2nk

j

2

nk

 

 

W2nk

 

 

 

e N

e

 

N 2 Wnk

 

 

N

 

 

 

 

 

 

N 2

,

,(13.2)

и запишем ДПФ (13.2):

3

 

 

 

N 2 1

N 2 1

 

 

 

 

 

 

 

 

 

 

 

 

X(k) x(2n)WNnk2 WNk

 

x(2n 1)WNnk2 ,

 

k 0,1, ..., N 1,

 

 

 

 

n 0

 

n 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

X0(k)

 

 

 

 

 

X1(k)

 

 

 

 

 

 

или коротко:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

X(k) X0(k) WNk X1(k) ,

k 0,1, ..., N 1,

 

(13.3)

где:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

X0(k) N/2-точечные ДПФ четных отсчетов;

 

 

 

 

 

 

 

 

 

X1(k) N/2-точечные ДПФ нечетных отсчетов.

 

 

 

 

 

 

С учетом периодичности ДПФ X0(k) и X1(k)

справедливы равенства:

 

 

 

 

 

N

k 0,1,...,

 

N

 

 

 

 

 

 

 

 

 

X0(k) X0 k

 

 

 

,

 

 

 

1;

 

(13.4)

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

N

k 0,1,...,

N

 

 

 

 

 

 

 

 

 

X1(k) X1 k

 

 

,

 

 

1.

 

(13.5)

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

2

 

 

 

 

 

 

Вывод: при вычислении N-точечного ДПФ

X(k) (13.3) ДПФ

X0(k) и

X1(k)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

N

 

 

достаточно

вычислить на первой

половине

периода

 

0;

 

1 , а на

второй

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

N

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

; N 1

продублировать.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Определим поворачивающей множитель на второй половине периода :

 

N

 

N

 

 

2

 

N

 

 

 

k

 

 

 

Wke

j

 

Wke j Wk .

(13.6)

 

W

2

WkW 2

 

N 2

N

 

N

N

N

 

 

 

 

N

N

 

Вывод: поворачивающий множитель WNk достаточно вычислить на первой половине

периода N , а на второй — изменить знак.

2

Это позволяет заменить последовательное вычисление N-точечного ДПФ в (13.3) параллельным вычислением через N2-точечные ДПФ (рис. 13.3).

X(k) X

0

(k) Wk

X

(k)

 

 

 

 

 

 

 

 

 

 

 

 

 

N

1

 

 

 

 

 

 

 

 

N

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

k

 

 

 

 

X

 

k

 

 

X

0

(k) W

N

X

1

(k)

(13.7)

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

N

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

k 0,1, ...,

 

 

1,

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Согласно (13.7), одновременно вычисляются следующие отсчеты ДПФ:

N

при k 0 X(0) и X ;

2

при k 1 X(1)

и X

 

 

N

 

 

 

 

 

1

;

2

 

 

 

 

 

 

 

 

 

…………………………….

 

 

при k

N

N

 

 

 

и X(N 1) .

 

1

X

 

 

 

1

2

 

 

 

 

 

2

 

 

 

 

 

 

 

В (13.7) размерность вычисляемого ДПФ соответствует нижнему индексу WNk .

4

Выигрыш в количестве арифметических операций определим позже для полного υ- этапного алгоритма. Пока отметим, что это оказалось возможным благодаря делению исходной последовательности на четные и нечетные отсчеты.

Pазмерность

 

 

 

 

Этап

 

ДПФ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ν

 

N

 

 

 

X

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

N

 

 

 

X0

X1

 

ν 1

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

4

N

 

 

X00

X01

X10

X11

 

 

 

 

 

4

 

 

 

 

 

 

 

 

 

 

 

 

……………………………...

 

 

 

N

 

 

 

 

 

Z(0)

Z(1)

 

 

 

2

 

 

….

……

 

1

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

z(0) z(1)

Начальные условия

Рис. 13.3. Поэтапное вычисление N-точечного ДПФ

Параллельное вычисление в (13.7) при фиксированном k называют операцией «бабочка» и изображают в виде сигнального графа (рис. 13.4).

X0(k)

 

X(k) X

0

(k) Wk X

(k)

 

 

 

 

 

 

 

N 1

 

 

 

Wk

 

 

 

 

 

 

 

N

N

 

 

 

X1(k)

 

 

 

k

 

 

X k

 

 

 

X0(k) WN

X1(k)

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

k 0,1,..., N 1 2

Рис. 13.4. Сигнальный граф операции «бабочка»

Для вычисления N-точечного ДПФ по формуле (13.7) требуется N «бабочек».

2

13.3. Двухэтапный алгоритм БПФ

Начальные условия алгоритма: каждую из N2-точечных последовательностей разделим на две N4-точечные (рис. 13.1—13.2):

четных отсчетов (в порядке следования, считая от нуля);

нечетных отсчетов (в порядке следования, считая от нуля).

Получили две группы «чет N4 + неч N4».

Используем их для расчета двух N2-точечных ДПФ X0(k) и X1(k) через N4- точечные ДПФ по формуле (13.7).

Это первый этап двухэтапного алгоритма.

Количество формул увеличилось вдвое, а размерность ДПФ в каждой из них вдвое уменьшилась.

5

Обозначим:

X00(k) и X01(k) N4-точечные ДПФ четных и нечетных отсчетов в первой группе;

X00(k) и X01(k) N4-точечные ДПФ четных и нечетных отсчетов во

второй группе;

Формулы (13.7) примут вид:

X

 

(k) X

 

(k) Wk

 

 

X

 

 

(k)

 

 

 

 

(13.8)

 

0

 

 

00

 

N

/2

 

 

01

k

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

X0

k N /4 X00(k) WN /2X01(k)

 

 

k 0,1,...,N /4 1,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

X

(k) X

 

 

(k) Wk

 

X

 

 

(k)

 

 

 

 

(13.9)

 

1

 

10

 

N

/2

 

 

11

 

k

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(k)

 

 

X1

k N /4 X10(k) WN /2X11

 

 

k 0,1, ...,N /4 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Размерность вычисляемого ДПФ соответствует нижнему индексу Wk

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

N

/2

 

На первом этапе для вычисления ДПФ X0(k)

и X1(k) требуется

N

«бабочек».

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

Второй этап (рис. 13.3): вычисление N-точечного ДПФ

 

X(k)

через

N 2-точечные

ДПФ X0(k) и X1(k) по формуле (13.7).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

13.4. ν-этапныйй алгоритм БПФ

Рассмотренную закономерность легко распространить на на трехэтапный алгоритм БПФ:

начальные условия: каждая из N4-точечных последовательностей делится

на две «чет N8 + неч N8» и таких групп четыре;

первый этап — расчет N4-точечных ДПФ через N8-точечные ДПФ с использованием четырех формул типа (13.7).

второй этап — расчет N2-точечных ДПФ через N4-точечные ДПФ с использованием двух формул типа (13.7).

третий этап — расчет N-точечного ДПФ через N2-точечные ДПФ по формуле

(13.7).

И т. д.

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

Получим N групп 2-точечных последовательностей. Это начальные условия -

2

этапного алгоритма БПФ (рис. 13.1—13.2).

Первый этап — особенный, т. к. на этом этапе вычисляются N 2-точечных ДПФ

2

непосредственно по 2-точечным последовательностям (рис. 13.4). Для этого

требуется N формул типа (13.7).

2

Запишем одну из них, используя условные обозначения: z(0) и z(1) — четный и

нечетный отсчеты последовательности; Z(0) и Z(1)

— отсчеты 2-точечного ДПФ:

Z(k) z(0) Wkz(1)

(13.10)

 

2

 

Z(k 1) z(0) W2kz(1)

k 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6

На первом этапе выполняется

N

«бабочек».

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

На

втором

этапе — расчет

 

N

 

4-точечных

ДПФ через

2-точечные ДПФ

 

с

4

 

 

 

 

 

 

N

 

 

 

 

 

 

 

 

 

использованием

формул типа (13.7). и т. д. (рис. 13.3).

 

 

 

 

 

 

 

 

 

 

 

4

 

 

 

 

 

 

 

 

 

 

 

 

На

каждом

этапе выполняется

N

«бабочек».

Сигнальный

граф алгоритма

8-

 

 

 

 

 

 

2

 

 

 

 

 

 

точечного БПФ представлен на рис. 13.5.

x(0)

 

 

X (0)

W20

 

 

 

 

 

x(4)

W40

 

X (1)

 

 

 

x(2)

1

W 0

X (2)

W4

8

 

W20

W1

 

 

 

X (3)

x(6)

 

8

 

 

 

 

 

W 2

X (4)

x(1)

W20

8

 

 

 

 

 

x(5)

W 0

W 3

X (5)

4

8

 

x(3)

W41

 

X (6)

W20

 

 

 

 

 

X (7)

x(7)

Рис. 13.3. Сигнальный граф 8-точечного БПФ

13.5. Эффективность алгоритма БПФ

Определим количество арифметических операций с комплексными числами в БПФ:

количество этапов — log2 N ;

количество бабочек на каждом этапе — N ;

2

количество арифметических операций с комплексными числами для одной бабочки:

2

3

1

ИТОГО — 3N log2 N операций.

2

Порядок вычислительной сложности относительно длины последовательности N:

O(Nlog2 N) .

Выигрыш в количестве операции по сравнению с ДПФ для N 1024 в 100 раз и он возрастает с ростом длины N.

13.6. Формирование начальных условий в алгоритме БПФ

Начальную расстановку отсчетов исходной последовательности в -этапном алгоритме БПФ называют прореживании последовательности.

Рассмотрим алгоритм прореживания последовательности на примере 8-точечного БПФ (рис. 13.2) и результаты обобщим.

7

Исходная последовательность

Прореженная последовательность для БПФ

 

 

 

 

Отсчет

Двоичный номер

Двоичный номер

Отсчет

отсчета

отсчета

 

 

 

 

 

 

x(0)

000

000

x(0)

 

 

 

 

x(1)

001

100

x(4)

 

 

 

 

x(2)

010

010

x(2)

 

 

 

 

x(3)

011

110

x(6)

 

 

 

 

x(4)

100

001

x(1)

 

 

 

 

x(5)

101

101

x(5)

 

 

 

 

x(6)

110

011

x(3)

 

 

 

 

x(7)

111

111

x(7)

 

 

 

 

Вывод: Для алгоритма БПФ отсчеты исходной последовательности должны быть расставлены в бит-реверсивной последовательности своих двоичных номеров.

13.7. Вычисление ОДПФ с помощью БПФ

ОДПФ (12.18):

1

N 1

 

x(n)

 

X(k)WNnk, n 0,1, ..., N 1.

(12.18)

 

 

N k 0

 

Алгоритм вычисления ОДПФ (12.18) с помощью БПФ включает в себя следующие шаги:

обе части равенства умножаются на N и выполняется операция их комплексного сопряжения (символ *):

 

N 1

 

Nx (n) X (k)WNnk ;

 

k 0

правая часть

равенства — N-точечное ДПФ последовательности X (k)

вычисляется с

помощью БПФ;

выполняется операция комплексного сопряжения обеих частей полученного равенства с делением на N :

 

1 N 1

 

 

 

 

x(n)

 

X (k)WNnk

 

, n 0,1, ..., N 1.

 

 

N

 

 

 

 

k 0

 

 

 

 

 

 

Соседние файлы в папке лекции