Быстрое преобразование Фурье

Автор работы: Пользователь скрыл имя, 19 Января 2014 в 12:05, курсовая работа

Краткое описание

Изобретение БПФ привело к потрясающему всплеску популярности преобразования Фурье. Целый ряд важных задач раньше решался за время порядка N 2, но после проведения преобразования Фурье над исходными данными (за время порядка Nlog2 N) решается практически мгновенно. Преобразование Фурье лежит в основе цифровых корелляторов и методов свертки, активно используется при спектральном анализе (практически в чистом виде), применяется при работе с длинными числами.

Содержание

Свойства дискретного преобразования Фурье
Алгоритмы быстрого преобразования Фурье
Перестановка данных и двоичная инверсия
Алгоритм БПФ по основанию 2 с прореживанием по частоте
Обобщенный гнездовой алгоритм БПФ
Введение в проблему

Вложенные файлы: 1 файл

Быстрое преобразование Фурье.docx

— 136.90 Кб (Скачать файл)

0

= - = - = -

Õ=

k m

r

l r j N k

q

q

k

и легко реализуется.

Очевидно, алгоритм (2.32) – (2.34) реализует БПФ и при одинаковых

основаниях.

– 45 –

Выше представлен обобщенный алгоритм БПФ по смешанным осно-

ваниям с прореживанием  по частоте. В алгоритмах БПФ с  прореживанием

по времени помимо того, что в базовых операциях умножение  на фазовые

множители предшествует rk-точечным ДПФ, в схемах алгоритмов этапы

чередуются как бы в  обратном порядке (по сравнению с  алгоритмами БПФ

с прореживанием по частоте). Трудоемкость алгоритмов БПФ с прорежи-

ванием по частоте совпадает  с трудоемкостью алгоритмов с  прореживани-

ем по времени.

С учетом этого обобщенный алгоритм БПФ по смешанным основа-

ниям с прореживанием  по времени можно записать

X 1[n] := x[n], n = 0, ..., N -1; - (2.40)

[ ] [ ]

[ ] [ ] ï

ï

þ

ï ï

ý

ü

= ×

Õ

= ×

å -

=

×

-

÷ ÷

ø

ö

ç ç

è

æ

=

× ×

- -

1

0

1

/

0

1 1

, , : , , , = 0, ..., -1;

, , : , , , = 0, ..., -1;

k

k

k

k

q

r

n

k

n l

k k r

k

r

q

l j r

k k N

X i l j X i n j W l r

X i l j X i l j W l r (2.41)

0, ..., 1; = 0, ..., -1; = 0, ..., 0 1; = 0, ..., -1

0

k m

r

r

l r i

r

j N

k

k

q

q

k k

q

q

= - -

Õ

Õ

=

=

,

X[n] := Xm-1[n], n = 0, ..., N -1. (2.42)

В режиме замещения обобщенный алгоритм БПФ по смешанным ос-

нованиям с прореживанием  по времени можно представить  как (2.43),

(2.44)

X[n] := x[n], n = 0, ..., N -1; (2.43)

[] [ ]

[ ] [ ] ï

ï

þ

ï ï

ý

ü

= ×

Õ

= ×

å -

=

×

÷ ÷

ø

ö

ç ç

è

æ

=

× ×

1

0

/

0

, , : , , , = 0, ..., -1;

: , , , = 0, ..., -1;

k

k

k

k

q

r

n

k

n l

r

k

r

q

l j r

N

X i l j X i n j W l r

B l X i l j W l r (2.44)

0, ..., 1; = 0, ..., -1; = 0, ..., 0 1; = 0, ..., -1

0

k m

r

r

l r i

r

j N

k

k

q

q

k k

q

q

= - -

Õ

Õ

=

=

.

В алгоритме введен рабочий  массив B комплексных чисел, размер-

ность которых определяется максимальным основанием

(sup ri, i = 0, ..., m - 1) алгоритма БПФ. Выражение (2.43) определяет запись

входных отсчетов в массив X, как правило, расположенный в ОЗУ вычис-

лителя. Отсчеты должны записываться в R-ично-инверсном порядке (см.

– 46 –

алгоритм R-ичной инверсии индекса). Непосредственно сам алгоритм

(реализация базовой операции) представлен в выражениях (2.44). В  первом

выражении (2.44) входные отсчеты, умноженные на фазовые множители,

соответствующей базовой  операции записываются в рабочий  массив B.

Второе выражение (2.44) реализует rk-точечные ДПФ с записью результата

в массив комплексных чисел X.

Рассмотрим на конкретном примере использование предложенных

методик реализации и исследования алгоритмов БПФ по смешанным осно-

ваниям.

2.7.1. Пример реализации  и исследования алгоритма БПФ  для

N = 24 = 4 ´ 3 ´ 2 с прореживанием по частоте

Исходные данные: N = 24, m = 3, R = (4, 3, 2); (r0 = 4, r1 = 3, r2 = 2).

Требуется построить графическую  схему алгоритма БПФ и оценить  его

трудоемкость в комплексных  умножениях и комплексных сложениях.

На рис. 2.7 представлено обозначение rk-точечной базовой операции

алгоритмов БПФ по смешанным  основаниям.

Базовая операция БПФ записана в выражениях (2.31) – (2.34) для ал-

горитма без замещения  и в (2.24), (2.25) для алгоритма с  замещением. Ба-

зовая операция заключается  в rk-точечном ДПФ и умножении его резуль-

татов на фазовые множители. На рис. 2.7 через x[lj], j=0, ..., rk - 1 обозначе-

на входная последовательность rk-точечного ДПФ, через X[lj],

j = 0, ..., rk - 1 выходная последовательность базовой операции (БО) стрел-

кой ( ® ) умножение на фазовые множители, а через aj, j = 1, ..., rk - 1 пока-

затель степени WN фазовых множителей. Следует помнить, что a0 всегда

равно нулю, что соответствует  тривиальному умножению на 1. Поэтому  на

соответствующем выходе базовой  операции не показано стрелкой умно-

жение на фазовый множитель.

– 47 –

a -1

rk

.

.

.

.

.

.

X[lrk -2 ]

a -2

rk

a0

X[l0 ]

x[lrk -2 ]

x[l0 ]

x[l1]

a1 X[l1]

x[lrk -1] X[lrk -1]

[ ] ( [ ] ) , 0,..., 1; 0,..., 1;

1

0

= × × = - = - × a

-

= å

X l x l W WN j rk k m

i j

r

r

i

j i

j

k

k

, 0,..., 1; 0,..., 1; 0,..., 1.

0

a = × × 0 = - = - = -

Õ

Õ

=

= k m

r

l r j N

r

r

l j k

q

q

k

k

k

q

q

l

Рис. 2.7. Графическое обозначение  базовой операции

быстрого преобразования Фурье

На рис. 2.8 представлена графическая  схема алгоритма БПФ, постро-

енная по табл 2.1.

– 48 –

Таблица 2.1

Данные для схемы алгоритма  БПФ

k i j Номера отсчетов БО al, l = 0, ..., rk - 1

1 2 3 4 5

0 0 0 0, 6, 12, 18 0, 0, 0, 0

0 0 1 1, 7, 13, 19 0, 1, 2, 3

0 0 2 2, 8, 14, 20 0, 2, 4, 6

0 0 3 3, 9, 15, 21 0, 4, 8, 12

0 0 4 4, 10, 16, 22 0, 4, 8, 12

0 0 5 5, 11, 17, 23 0, 5, 10, 15

1 0 0 0, 2, 4 0, 0, 0

1 0 1 1, 3, 5 0, 4, 8

1 1 0 6, 8, 10 0, 0, 0

1 1 1 7, 9, 11 0, 4, 8

1 2 0 12, 14, 16 0, 0, 0

1 2 1 13, 15, 17 0, 4, 8

1 3 0 18, 20, 22 0, 0, 0

1 3 1 19, 21, 23 0, 4, 8

2 0 0 0, 1 0, 0

2 1 0 2, 3 0, 0

2 2 0 4, 5 0, 0

2 3 0 6, 7 0, 0

2 4 0 8, 9 0, 0

2 5 0 10, 11 0, 0

2 6 0 12, 13 0, 0

2 7 0 14, 15 0, 0

2 8 0 16, 17 0, 0

2 9 0 18, 19 0, 0

2 10 0 20, 21 0, 0

2 11 0 22, 23 0, 0

– 49 –

i=0 X[0] j=0

0 X[12]

X[4]

0 X[16]

i=1 j=0

X[8]

0 X[20]

i=2 j=0

0

4

0

8

i=0

j=0

j=1

x[0]

X[1]

0 X[13]

i=3

j=0

i=4 j=0 X[5]

0 X[17]

X[9]

0 X[21]

X[2]

0 X[14]

j=0

i=6

i=1

j=0

j=1

X[6]

0 X[18]

X[10]

0 X[22]

j=0

i=7

j=0

i=8

i=2

j=0

j=1

0 X[23]

X[11]

0 X[19]

X[7]

0 X[15]

0

4

0

8

0

4

0

8

0

4

0

8

i=9 j=0

i=10

i=11

j=0

j=0

j=1

j=0

i=3

X[3]

0

1

2

3

j=0

4

5

0

2

4

6

8

10

0

3

6

9

15

12

i=0

j=0

j=1

j=2

j=3

j=4

j=5

x[1]

x[2]

x[3]

x[4]

x[5]

x[6]

x[7]

x[8]

i=5

x[9]

x[10]

x[11]

x[12]

x[13]

x[14]

x[15]

x[16]

x[17]

x[18]

x[19]

k = 0 k = 1 k = 2

x[20]

x[21]

x[22]

x[23]

Рис. 2.8. Схема алгоритма  быстрого

преобразования Фурье  для N = 24 = 4 ´ 3 ´ 2

В колонке 1 табл. 2.1 записан  номер этапа алгоритма БПФ k. В ко-

лонках 2 и 3 индексы циклов базовых операций i и j (см. (2.20) – (2.22) и

– 50 –

(2.24) – (2.25)) соответственно. На каждом этапе каждая БО  однозначно

определяется индексами i и j.

Колонка 4 определяет номера индексов одномерного массива дан-

ных, элементы которого принадлежат  каждой БО. Номера одномерных ин-

дексов определяются по выражению (2.31) при подстановке в него соот-

ветствующих индексов k, i, j (колонки 1, 2, 3) и l (l = 0, ..., rk - 1 определяет

номер входа и выхода соответствующей  БО).

Колонка 5 определяет показатель степени al, l = 0, ..., rk - 1 (l номер

выхода каждой БО) у WN для всех фазовых множителей каждой БО

, 0,..., 1; 0,..., 1; 0,..., 1.

0

a = × × 0 = - = - = -

Õ

Õ

=

= k m

r

l r j N

r

r

l j k

q

q

k

k

k

q

q

l

Таким образом, колонка 4 определяет, какие элементы массива дан-

ных X являются входами и выходами каждой БО на каждом этапе алгорит-

ма БПФ, а колонка 5 определяет фазовые множители каждой БО. Кроме

этого следует помнить, что  полученные в результате выполнения алгорит-

ма коэффициенты Фурье  будут расположены в R-ично-инверсном порядке,

который показан на рис. 2.2. Алгоритм R-ичной инверсии индекса рас-

смотрен выше.

На рис. 2.9 иллюстрировано представление одномерного массива

трехмерным вместе с границами  изменения индексов l, j и i для каждого

этапа алгоритма БПФ. Это  представляет интерес при проектировании спе-

циализированных процессоров  БПФ, реализующих многословные обраще-

ния к ОЗУ данных (до rk комплексных слов) и более подробно будет рас-

смотрено ниже.

Теперь оценим трудоемкость алгоритма БПФ в комплексных  умно-

жениях и комплексных  сложениях. Сначала выберем эффективные  в

смысле трудоемкости способы  реализации rk-точечных ДПФ. Четырехто-

чечное ДПФ целесообразно  выполнить как БПФ по основанию 2 по алго-

ритму (2.20) – (2.22) или (2.24), (2.25). Будем учитывать только нетриви-

альные умножения (отличные от умножений на ±1 и ± -1 ). Тогда My4 = 0

и Nl4 = 8. Трехточечные ДПФ можно выполнять по алгоритму Винограда

(My3 = 2 и Nl3 = 6). Двухточечные ДПФ тривиальны по сути

(My2 = 0 и Nl2 = 2). Для того, чтобы воспользоваться выражением (2.38) для

определения количества нетривиальных  комплексных умножений в алго-

ритме БПФ оценим по приведенному выше алгоритму количество в нем

тривиальных умножений (S0 = 3, S1 = 0). Подставляя приведенные данные в

(2.38) получаем

My(24; 4,3,2) = [24 ´ 3/4 + 24 ´ (2+3-1)/3] + 24 ´ 0/2 -

- (1 ´ 3+4 ´ 2) - (1 ´ 3+4 ´  0) = 36.

– 51 –

l = 0,...,3;

j = 0,...,5;

i = 0;

k = 0.

l = 0,...,2;

j=0,...,1;

i = 0,...,3;

k=1.

1 3 5

0 2 4 11

1

0

j

6 8 10 17

12 14 16 23

18 20 22

1

2

3

4

5

0

1

2

3

4

5

7

8

9

10

11

13

14

15

16

17

0 6 12 18

19

20

21

22

23

0 1 2 3

0

1

2

3

i

0 1 2 l

j

l

Рис. 2.9. Представление одномерного массива трехмерным для алгоритма

БПФ (N = 24 = 4 ´ 3 ´ 2)

– 52 –

l = 0, 1;

j = 0;

i = 0,...,11;

k = 2.

0 1

2 3

4 5

6 7

8 9

10 11

12 13

14 15

16 17

18 19

20 21

22 23

l

i

0

1

2

3

4

5

6

7

8

9

10

11

Рис. 2.9. Окончание.

Для оценки количества комплексных  сложений воспользуемся вы-

ражением (2.39)

Nl(24; 4,3,2) = 24 ´ 8/4 + 24 ´ 6/3 + 24 ´ 2/2 = 120.

Приведенные алгоритмы БПФ  по смешанным основаниям могут

быть легко запрограммированы (микропрограммированы) как для одно-

процессорных, так и для  мультипроцессорных систем. Реализация обоб-

щенного алгоритма БПФ  для любого основания рассмотрена  в работе [17].

Основные принципы реализации обобщенного алгоритма БПФ по смешан-

ным основаниям совпадают  с соответствующим алгоритмом для  любого

основания. Возрастают только требования к процессору БПФ, который

должен одинаково эффективно реализовывать базовые операции для раз-

личных оснований. При  реализации обобщенного алгоритма  БПФ по сме-

шанным основаниям на мультипроцессорных системах целесообразно по

процессорам распараллеливать реализацию базовых операций на каждом

– 53 –

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

вания программного обеспечения  спектрального анализа и цифровой

фильтрации звуковых сигналов.

В прилож. 1 рассмотрен пример реализации алгоритма БПФ Кули –

Тьюки по смешанным основаниям с прореживанием по частоте для  длины

блока данных N = 6.

2.8. Обобщенный гнездовой алгоритм быстрого преобразования

Фурье на основе алгоритмов Винограда

для коротких выборок данных

В работах [1, 20, 25] показано, что  для большого множества объемов

выборок данных существуют более эффективные в смысле трудоемкости

алгоритмы БПФ, чем алгоритмы  Кули – Тьюки. В первую очередь  это ал-

горитмы ДПФ, основанные на теоретико-числовых представлениях. Ниже

представлен обобщенный гнездовой  алгоритм ДПФ, реализующий схему

Винограда. Незначительные изменения обобщенного гнездового алгорит-

ма позволяют реализовать  схему Джонсона – Барраса [1].

Основой рассматриваемого обобщенного  гнездового алгоритма ДПФ

являются базовые алгоритмы  Винограда [1] для малых размерностей бло-

ков входных данных ni = (2, 3, 4, 5, 7, 8, 9, 16). Базовые алгоритмы имеют

вид (2.45):

X = Ci × Bi ×Ai ×  x, (2.45)

где x – блок входных данных размерности (ni); Ai – матрица предсложений

размерности (n'i ´ ni), элементами матрицы являются целые числа 0, -1, 1,

2. Умножение матрицы на  вектор x реализуется без нетривиальных умно-

жений; Bi – диагональная матрица размерности (n'i ´ n'i), элементами мат-

рицы являются вещественные числа; Ci – матрица постсложений размер-

ности (ni ´ n'i). Элементами матрицы являются комплексные числа 0, ±1,

± -1 (либо 0, либо чисто мнимые ± -1 , либо вещественные). Умноже-

ние матрицы Ci на вектор размерности n'i вещественных или комплексных

чисел реализуется без  нетривиальных умножений; X – блок выходных дан-

ных (результат) размерности ni.

Матрицы базовых алгоритмов Винограда приведены в справочной

литературе, например [1, 25]. Из вышеописанного следует, что базовые  ал-

горитмы реализуются за n'i нетривиальных умножений. Однако, при анали-

зе матриц Bi становится очевидно, что некоторые диагональные элементы

этих матриц равны единице. Поэтому число нетривиальных  умножений в

базовых алгоритмах меньше n'i.

Если Õ-

=

=

1

0

m

k

N nk , где nk – взаимно простые числа из множества ni, а m

– число вложений гнездового алгоритма, то можно реализовать  гнездовой

– 54 –

алгоритм БПФ размерности N, используя базовые алгоритмы размерностей

nk, k = 0, ..., m - 1. В обобщенном виде известна запись гнездового алгорит-

ма БПФ с процедурой кронекеровского произведения матриц [1] (2.46)

X = (Cm-1 Ä Cm-2 Ä ... Ä C0) × (Bm-1 Ä Bm-2 Ä ... Ä B0) × (Am-1 Ä Am-2 Ä ...

... Ä A0) × x, (2.46)

где Ä – операция кронекеровского  произведения матриц. К недостаткам

такой реализации гнездового алгоритма относят необходимость  наличия

большого объема оперативной  па0мяти для хранения результатов  кронеке-

ровского произведения матриц [1, 20].

Гнездовые алгоритмы предполагают преобразование одномерной

входной последовательности в m-мерную таблицу (переиндексация на

входе), обработку m-мерной таблицы с помощью матриц базовых алгорит-

мов Ak, Ck, k = 0, ..., m - 1 и m-мерной таблицы Bb, полученной из матриц

базовых алгоритмов Bk, k = 0, ..., m - 1, и преобразования результирующей

m-мерной таблицы в одномерную (переиндексация на выходе).

При обработке m-мерной таблицы матрицами Ak и Ck происходит

умножение Ak (Ck) на параллельно расположенные векторы мерной табли-

Информация о работе Быстрое преобразование Фурье