ВУЗ:
Составители:
56
Приведем один из возможных вариантов реализации алгоритма БПФ для числа
точек, являющегося степенью двойки. Алгоритм предполагает, что операции с
комплексными числами уже реализованы.
1) Выборка из
q
N 2=
дискретных значений подвергается пересортировке, как
показано в Таблице 1. Значения записываются в массив
A
, всего
N
элементов в
массиве. Массив
A
должен быть предназначен для хранения комплексных чисел.
Диапазон индексов массива
1,..,0 −N
.
2) Вводится целочисленная переменная
m
, пробегающая значения от
1
до
q
.
Начальное значение
1=m
.
3) Производится обработка элементов массива по следующей схеме:
[ ] [ ]
( )( )
[ ]
⋅⋅−+=
−
10
222\
2
exp
2
1
iAii
N
i
iAiA
mqmm
π
(9.13)
0
i
,
1
i
получаются заменой
( )
1−m
-го бита в двоичной записи числа
i
на 0 и 1,
соответственно.
m
i 2\
означает целочисленное деление, когда вещественная часть результата
деления отбрасывается. Выражение
( )
mm
ii 22\ ⋅−
представляет остаток от деления
i
на
m
2
, что практически в любом языке программирования записывается как одна
операция. Отметим также, что операции умножения и деления на числа, являющие
степенью двойки, в двоичной системе удобно представлять через сдвиги битов
числа влево и вправо, соответственно.
Хотя выражение (9.13) описывает операцию над одним массивом, удобно
вводить вспомогательный массив, в котором хранится результат операций над
A
.
По окончанию обработки всего массива
A
, в него переписывается вспомогательный
массив.
4) Увеличивается на единицу
m
. Если
qm >
, то основная работа алгоритма
закончена, массив
A
содержит Фурье-образ исходной выборки, умноженной на
N
.
В противном случае выполняется переход на п.3.
5) Выполняется деление всех элементов на
N
.
Приведем один из возможных вариантов реализации алгоритма БПФ для числа точек, являющегося степенью двойки. Алгоритм предполагает, что операции с комплексными числами уже реализованы. 1) Выборка из N = 2 q дискретных значений подвергается пересортировке, как показано в Таблице 1. Значения записываются в массив A , всего N элементов в массиве. Массив A должен быть предназначен для хранения комплексных чисел. Диапазон индексов массива 0,.., N − 1 . 2) Вводится целочисленная переменная m , пробегающая значения от 1 до q . Начальное значение m = 1 . 3) Производится обработка элементов массива по следующей схеме: 1 2πi A[i ] = A[i0 ] + exp ( ( ) ) i − i \ 2 m ⋅ 2 m ⋅ 2 q −m A[i1 ] (9.13) 2 N i0 , i1 получаются заменой (m − 1) -го бита в двоичной записи числа i на 0 и 1, соответственно. i \ 2 m означает целочисленное деление, когда вещественная часть результата деления отбрасывается. Выражение i − (i \ 2 m )⋅ 2 m представляет остаток от деления i на 2 m , что практически в любом языке программирования записывается как одна операция. Отметим также, что операции умножения и деления на числа, являющие степенью двойки, в двоичной системе удобно представлять через сдвиги битов числа влево и вправо, соответственно. Хотя выражение (9.13) описывает операцию над одним массивом, удобно вводить вспомогательный массив, в котором хранится результат операций над A . По окончанию обработки всего массива A , в него переписывается вспомогательный массив. 4) Увеличивается на единицу m . Если m > q , то основная работа алгоритма закончена, массив A содержит Фурье-образ исходной выборки, умноженной на N . В противном случае выполняется переход на п.3. 5) Выполняется деление всех элементов на N . 56
Страницы
- « первая
- ‹ предыдущая
- …
- 54
- 55
- 56
- 57
- 58
- …
- следующая ›
- последняя »