
Шпоры по вычмату / 22
.doc
БЫСТРОЕ ПРЕОБРАЗОВАНИЕ ФУРЬЕ (БПФ)
Понятие о БПФ
БПФ – это группа
алгоритмов для программной реализации
ДПФ, сокращающих количество операций
примерно в
раз, т.е.
операций вместо
,
см. раздел 14.6.
Другими словами, БПФ - это ДПФ, выполняемое
очень быстро. Первый алгоритм БПФ
предложен в 1965г, а сейчас их много и они
очень сложные. Мы рассмотрим один из
них, наиболее простой для понимания.
Этот алгоритм, иногда называемый
алгоритмом “бабочки”, основан на
расщеплении исходного массива отсчетов
сигнала. Появление БПФ сделало переворот
в цифровой обработке, т.к. позволило
легко переходить к преобразованиям
спектров в случае больших значений
.
Основу БПФ составляют 4 идеи:
-
Спектр ДПФ – периодический,
.
-
Спектр ДПФ легко вычисляется в случае
, когда имеется только одна гармоника и по (14.7)
-
Выбирается
, где
– целая степень, т.е. количество отсчетов не может быть произвольным целым числом. Например, при
имеем
.
-
Спектр исходной последовательности несложно найти по спектрам расщепленных последовательностей. При каждом расщеплении от одного массива из
отсчетов переходят к двум массивам из
отсчетов каждый.
Вычисление спектра объединенной последовательности по спектрам расщепленных.
Пусть на периоде T
имеем два сигнала и
,
,
каждый из которых содержит N/2
точек и имеет безразмерный шаг
дискретизации
.
Из этих двух сигналов, объединяя их в
виде “гребенки”, получаем объединенную
последовательность
,
,
состоящую из
отсчетов. При таком объединении для
четных
при
имеем
,
для нечетных
при
имеем
.
Например,
,
,
,
и
т.д. Для объединенного сигнала получается
шаг
.
Рассматриваемые сигналы даны на рисунке 13.1
|
Рис 13.1 Две расщепленных и объединенная последовательности отсчетов. |
Запишем спектры этих трех сигналов в комплексной форме (14.7), причем для спектров будем использовать заглавные буквы, соответственно строчные - для сигналов.
ДПФ для исходного
сигнала (15.3) требует
опреаций в строке (
)
(операция – это вычисление константы,
умноженное на
,
прибавление к предыдущему), всего
,
т.е.
строк, операций
.
|
(13.1) |
|
(13.2) |
|
(13.3) |
Здесь суммы по
вычисляются по
точкам и по этому появляются множители
2 перед суммой и в показателе степени.
Количество гармоник в (13.1 – 13.2) равно
,
а в (13.3) оно равно
.
Покажем, как спектр
можно вычислить
по спектрам
и
:
|
13.4 |
т.е.
,
.
При выводе вместо
отсчетов с четными номерами
подставлены значения
,
а вместо отсчетов
c нечетными номерами – значения
.
Формулу (13.4) можно применять для
,
т.к. спектры
и
содержат
гармоник. Но учитывая их периодичность:
,
а
также равенство
,
получаем для гармоник с номерами
|
13.5 |
Формулы (13.4-13.5) составляют суть алгоритма “бабочка”, т.к. для его иллюстрации используют рисунок, похожий на бабочку.
|
Рис.13.2 Иллюстрация к алгоритму “бабочка”. |
Алгоритм БПФ
Дан массив
из
отсчетов сигнала, причем
.
1.
Расщепляем его многократно на четные
и нечетные последовательности до
получения
последовательностей из одного отсчета
в каждой, см. рис 13.3.
|
Рис.15.3 Расщепление последовательностей. |
На рис. 13.3 значение
дает количество отсчетов в каждой из
расщепленных последовательностей.
Всего уровней расщепления
,
т.е. расщепляем
раз. Будем считать, что
– это новый массив
точек. В нем порядок следования точек
отличен от исходного, т.е.
,
где
,
а индекс
вычисляется по
.
Оказывается, что
преобразование
дает обратный битовый порядок, например,
.
Для
получаем следующее преобразования
индексов:
Столь простое преобразование можно не учитывать при оценках времени работы алгоритма.
2.
Так как при
,
т.е. при одном отсчете на периоде, спектр
равен самому отсчету, то на последнем
уровне расщепления (
)
спектры всех
последовательностей известны. Всего
имеем
спектров, каждый из которых состоит
только из нулевой гармоники (
),
т.е. среднее значение.
3. Объединение последовательностей, т.е. обратный ход.
При каждом объединении
используются формулы для вычисления
спектра (13.4-13.5).
Вычисления завершаются после получения
спектра
из
гармоник для исходной последовательности
уровня
.
Оценка количества операций в БПФ.
В ДПФ было примерно
операций, см. раздел 14.6.
В БПФ одна гармоника требует одной
операции в соответствии с (13.4)
или (13.5). На
каждом уровне расщепления вычисляется
гармоник (равное числу отсчетов) для
каждого из
сигналов, т.е. всего
гармоник. Так как количество уровней
расщепления равно
,
то всего нужно определить
гармоник, т.е.выполнить
операций, где
.
Следовательно, БПФ требует
операций вместо
в ДПФ, т.е. оно в
раз эффективнее. Выигрыш во времени
выполнения равен
и приведен в таблице 13.1 для M<15,
а далее он резко увеличивается.
Таблица 13.1.
|
3 |
|
10 |
|
|
|
8 |
256 |
1024 |
8192 |
16384 |
|
3 |
30 |
100 |
600 |
1200 |
Следует отметить, что БПФ дает существенный выигрыш при вычислениях всех гармоник, но если нужны только некоторые гармоники, то можно использовать ДПФ.