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

Обновлено: 08.07.2024

Быстрые алгоритмы БПФ являются “обратимыми”, т.е. вычисления по графу БПФ (см., например, рис. 3.1) могут выполняться как “слева направо”, так и “справа налево”.

В первом случае алгоритм БПФ основан на “бабочке” вида:

и называется алгоритмом с прореживанием по времени (алгоритм Кули- Тьюки) [21,25].

Во втором случае (при вычислении по графу “справа налево”) алгоритм БПФ производится на основе бабочки вида:

и называется алгоритмом БПФ с прореживанием по частоте (алгоритмом Сэнди-Тьюки). Такие алгоритмы были впервые опубликованы в середине 60-х годов [21,25].

Графы подобных базовых операций приведены на рис. 8.2, а) и б) соответственно.

Рис. 8.2. Графы базовых операций БПФ с прореживанием по времени (а) и по частоте (б)

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

8.5. Алгоритм БПФ по основанию r (N = r m , r³3)

До сих пор мы рассматривали БПФ только для случая, когда N = 2 m . На практике, однако, достаточно часто возникает необходимость вычисления ДПФ при , где r отлично от 2 (например, N=125=5 3 , N= 625=5 4 ; N=27 и т.д.).

Для таких случаев несколько позднее Сэнди и Радемахором были разработаны алгоритмы БПФ, основу которых составляют базовые операции “бабочка” следующего вида для алгоритмов с прореживанием по времени:

и для алгоритмов с прореживанием по частоте соответственно:

Графически каждая из представленных базовых операций может быть изображена так, как это указано на рис.8.3.

Рис. 8.3. Графы базовых опeраций БПФ по основанию r

Остановимся на правилах перестановки элементов в таком случае. На входе выполняется перестановка по закону r - ичной инверсии, т.е. на входе элементы вектора X объединяются в подвектора из r - элементов, причём шаг выборок составит:

С помощью системы рекуррентных соотношений, подобных выражению (8.9), алгоритм БПФ для N=r M с прореживанием по времени можно описать

следующим образом [6,15]:

где - матрица ДЭФ порядка r (т.е. ДПФ для вектора N сводится к ряду ДПФ размера r над блоками), k=(n)mod l, n текущий индекс элемента вектора ( ), ,

Граф БПФ для N=9 имеет вид, представленный на рис.8.4

Рис.8.4. Граф БПФ

Быстрые алгоритмы БПФ являются “обратимыми”, т.е. вычисления по графу БПФ (см., например, рис. 3.1) могут выполняться как “слева направо”, так и “справа налево”.

В первом случае алгоритм БПФ основан на “бабочке” вида:

и называется алгоритмом с прореживанием по времени (алгоритм Кули- Тьюки) [21,25].

Во втором случае (при вычислении по графу “справа налево”) алгоритм БПФ производится на основе бабочки вида:

и называется алгоритмом БПФ с прореживанием по частоте (алгоритмом Сэнди-Тьюки). Такие алгоритмы были впервые опубликованы в середине 60-х годов [21,25].

Графы подобных базовых операций приведены на рис. 8.2, а) и б) соответственно.

Рис. 8.2. Графы базовых операций БПФ с прореживанием по времени (а) и по частоте (б)

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

8.5. Алгоритм БПФ по основанию r (N = r m , r³3)

До сих пор мы рассматривали БПФ только для случая, когда N = 2 m . На практике, однако, достаточно часто возникает необходимость вычисления ДПФ при , где r отлично от 2 (например, N=125=5 3 , N= 625=5 4 ; N=27 и т.д.).

Для таких случаев несколько позднее Сэнди и Радемахором были разработаны алгоритмы БПФ, основу которых составляют базовые операции “бабочка” следующего вида для алгоритмов с прореживанием по времени:

и для алгоритмов с прореживанием по частоте соответственно:

Графически каждая из представленных базовых операций может быть изображена так, как это указано на рис.8.3.

Рис. 8.3. Графы базовых опeраций БПФ по основанию r

Остановимся на правилах перестановки элементов в таком случае. На входе выполняется перестановка по закону r - ичной инверсии, т.е. на входе элементы вектора X объединяются в подвектора из r - элементов, причём шаг выборок составит:




С помощью системы рекуррентных соотношений, подобных выражению (8.9), алгоритм БПФ для N=r M с прореживанием по времени можно описать

следующим образом [6,15]:

где - матрица ДЭФ порядка r (т.е. ДПФ для вектора N сводится к ряду ДПФ размера r над блоками), k=(n)mod l, n текущий индекс элемента вектора ( ), ,

На прошлой лекции мы изучили, что такое дискретное преобразование Фурье (ДПФ), изучили его свойства, подводные камни, способы улучшения результатов, а также частотно-временное преобразование Фурье.

Вспомним выражение для ДПФ:

\begin</p>
<p>(1) X[m] = \sum\limits_^x[n]\cdot e^ <-j2\pi n m/N>\end

Из него видно, что для расчёта -точечного ДПФ требуется вычислений с комплексными числами. Получается ресурсозатратно, особенно если мы имеем дело с большим количеством отсчётов.

Учёным не нравилось делать много вычислений, и несколько человек (существуют разные мнения, кто был первым) предложили алгоритмы, позволяющие вычислять ДПФ, производя меньшее количество математических операций. Называются такие алгоритмы Быстрое преобразование Фурье (БПФ).

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

В рамках данной лекции рассмотрим два самых распространённых алгоритма БПФ — с прореживанием по времени и с прореживанием по частоте.

Итак, выше мы уже отметили, что для -точечного ДПФ требуется операций комплексного умножения и сложения. А что, если разделить исходный сигнал на два длиной отсчётов каждый? Тогда получается, что для вычисления ДПФ от одной из половин потребуется математических операций. Или для двух половин (если не считать процедуру разделения и объединения). Получается, эффективность вычислений возрастает в два раза! Но это ещё не предел. Мы можем делить наш сигнал до тех пор, пока не получим набор из сигналов, состоящих из двух отсчётов:

Разбиение сигнала до N=2

Разбиение сигнала до N=2

W_N^<n m></p>
<p>Теперь давайте немного модифицируем выражение (1). Пусть = e^<-j2\pi n m/N>
, тогда:

\begin</p>
<p>(2) X[m] = \sum\limits_^x[n]\cdot W_N^ \end

W_N^<n m></p>
<p>На примере сигнала из  отсчётов рассчитаем несколько значений
:

\begin</p>
<p> W_8^0 &= e^ = 1\\ W_8^1 &= e^ <-j2\pi/8>= e^ <-j\pi/4>= \frac> = a\\ W_8^2 &= a^2 = \left( \frac> \right)^2 = \frac = -j\\ W_8^3 &= a^3 = a^2 \cdot a = -a^*\\ W_8^4 &= a^4 = (a^2)^2 = -1 \\ W_8^5 &= a^5 = a^4\cdot a = -a\\ W_8^6 &= a^6 = a^4\cdot a^2 = j\\ W_8^7 &= a^7 = a^4\cdot a^3 = a^*\\ W_8^8 &= a^8 = a^4 \cdot a^4 = 1 \end

W_N^<n m></p>
<p>Можно заметить, что первая половина значений
отличается от второй половины только знаком:

\begin</p>
<p> W_8^0 &= -W_8^4\\ W_8^1 &= -W_8^5\\ W_8^2 &= -W_8^6\\ W_8^3 &= -W_8^7 \end

Если произведение выходит за диапазон от 0 до 7, мы также увидим повторяемость этих значений. Например, при , а :

\begin</p>
<p> W_8^ = a^ = (a^8)^5 \cdot a^2 = a^2 = -j \end

Следовательно, в процессе ДПФ вычисление одних и тех же значений повторяется несколько раз. Наша задача — оптимизировать процесс так, чтобы избежать выполнение повторяющихся операций.

Давайте разделим сигнал на отсчёты с чётными и нечётными номерами, как показано на рисунке:

Прореживание сигнала по времени

Прореживание сигнала по времени

Эта операция называется прореживание по времени. Математически это можно записать следующим образом:

\begin</p>
<p>(3) X[m] = \sum\limits_^x[2n]\cdot W_N^ + \sum\limits_^x[2n+1]\cdot W_N^ \end

\begin</p>
<p>(4) W_N^ = e^ <-j2\pi 2n m/N>= e^<\frac<-j2\pi n m>> = W_>^ \end

\begin</p>
<p>(5) W_N^ = W_N^ \cdot W_N^m = W_>^ \cdot W_N^m \end

Тогда, выражение (3) принимает вид:

\begin</p>
<p>(6) X[m] = \sum\limits_^x[2n]\cdot W_>^ + W_N^m\sum\limits_^x[2n+1]\cdot W_>^ \end

Это был расчёт ДПФ для первых отсчётов. Теперь запишем подобное выражение для второй половины отсчётов:

\begin</p>
<p>(7) \begin X\left[m+\frac\right] = \sum\limits_^x[2n]\cdot W_N^<2n(m+\frac)> +\\ +\sum\limits_^x[2n+1]\cdot W_N^<(2n+1)(m+\frac)> \end \end

Давайте теперь по очереди разбираться со всеми множителями:

\begin</p>
<p>(8) \begin W_N^<2n(m+\frac)> = W_N^ \cdot W_N^> = W_>^ \cdot e^<\frac<-j2\pi 2n\frac>> = \\ = W_>^ \cdot e^ <-j2\pi n>\end \end

e^<-j2\pi n></p>
<p>Т.к. = 1
, то выражение (8) принимает вид:

\begin</p>
<p>(9) W_N^<2n(m+\frac<N>)> = W_>^ \end

Рассмотрим следующий множитель:

\begin</p>
<p>(10) W_N^<(2n+1)(m+\frac<N>)> = W_N^ \cdot W_N^ \cdot W_N^m \cdot W_N^ \end

\begin</p>
<p>(11) W_N^ = e^<\frac<-j2\pi N>> = e^ <-j\pi>= -1, \end

то выражение (10) можно упростить:

\begin</p>
<p>(12) W_N^<(2n+1)(m+\frac<N>)> = -W_>^ \cdot W_N^m \end

Подставим результаты из (9) и (12) в уравнение (7) и получим:

\begin</p>
<p>(13) \begin X\left[m+\frac\right] = \sum\limits_^x[2n]\cdot W_<\frac>^ - \\ - W_N^m\sum\limits_^x[2n+1]\cdot W_<\frac>^ \end \end

Для простоты восприятия сделаем две замены:

\begin</p>
<p>(14) G[m] = \sum\limits_^x[2n]\cdot W_>^ \end

\begin</p>
<p>(15) H[m] = \sum\limits_^x[2n+1]\cdot W_>^ \end

Тогда, с учётом (14) и (15), сгруппируем уравнения (6) и (13):

\begin</p>
<p>(16) \begin X[m] = G[m]+W_N^m \cdot H[m]\\ X\left[m+\frac\right] = G[m]-W_N^m \cdot H[m] \end \end

Полученное выражение (16) называется графом “бабочка”. Почему? Это станет ясно, если посмотреть на его графическое представление:

Граф

Граф “бабочка” для БПФ с прореживанием по времени

Данное выражение лежит в основе БПФ с прореживанием по времени.

Таким образом, берём анализируемый сигнал и продолжаем разбивать его на сигналы, состоящие из чётных и нечётных индексов до тех пор, пока не получим набор сигналов из двух отсчётов. На рисунке ниже показан пример такого разбиения для сигнала из восьми отсчётов.

Алгоритм БПФ с прореживанием по времени для N=8

Алгоритм БПФ с прореживанием по времени для N=8

Для вычисления ДПФ такого сигнала требуется 3 стадии разбиения. На первом этапе получаем набор из четырёх ДПФ от сигналов из двух отсчётов:

\begin</p>
<p> X_[0] = x[0] + W_2^0 x[4]\\ X_[1] = x[0] - W_2^0 x[4]\\\\ X_[0] = x[2] + W_2^0 x[6]\\ X_[1] = x[2] - W_2^0 x[6]\\\\ X_[0] = x[1] + W_2^0 x[5]\\ X_[1] = x[1] - W_2^0 x[5]\\\\ X_[0] = x[3] + W_2^0 x[7]\\ X_[1] = x[3] - W_2^0 x[7] \end

Далее, на основе полученных результатов формируется два ДПФ для сигналов, состоящих из четырёх отсчётов:

\begin</p>
<p> X_[0] = X_[0] + W_4^0 X_[0]\\ X_[1] = X_[1] + W_4^1 X_[1]\\ X_[2] = X_[0] - W_4^0 X_[0]\\ X_[3] = X_[1] - W_4^1 X_[1]\\\\ X_[0] = X_[0] + W_4^0 X_[0]\\ X_[1] = X_[1] + W_4^1 X_[1]\\ X_[2] = X_[0] - W_4^0 X_[0]\\ X_[3] = X_[1] - W_4^1 X_[1] \end

И на последнем этапе формируются итоговые результаты восьмиточечного ДПФ:

\begin</p>
<p> X[0] = X_[0] + W_8^0 X_[0]\\ X[1] = X_[1] + W_8^1 X_[1]\\ X[2] = X_[2] + W_8^2 X_[2]\\ X[3] = X_[3] + W_8^3 X_[3]\\ X[4] = X_[0] - W_8^0 X_[0]\\ X[5] = X_[1] - W_8^1 X_[1]\\ X[6] = X_[2] - W_8^2 X_[2]\\ X[7] = X_[3] - W_8^3 X_[3] \end

Если количество отсчётов исходного сигнала , где — целое положительное число, то его разбиение на сигналы, состоящие из чётных и нечётных индексов вплоть до последнего уровня можно сделать легко и за одну итерацию с помощью двоично-инверсной перестановки.

Для этого записываем индексы всех отсчётов в двоичной системе счисления, при этом должны быть записаны все бит индекса, включая ведущие нули. Затем зеркально отображаем код каждого из этих двоичных чисел и записываем полученные результаты обратно в десятичную систему счисления. Готово! Если расставить элементы исходного массива в соответствии с полученными индексами, мы получим подряд идущие пары отсчётов для двухточечного ДПФ. Пример, как это работает для сигнала из восьми отсчётов, представлен в таблице:

Номер до перестановки Двоичное Двоично-инверсная перестановка Десятичное
0 000 000 0
1 001 100 4
2 010 010 2
3 011 110 6
4 100 001 1
5 101 101 5
6 110 011 3
7 111 111 7

Можете сравнить с рисунком выше, действительно совпадает. Именно поэтому, рассматриваемые нами алгоритмы также называются БПФ по основанию два. У них есть одно небольшое ограничение — количество отсчётов анализируемого сигнала должно быть равно степени двойки (например, 16, 32, 64, 128, 256 и т.д.). “Но как же быть, если, скажем, в моём сигнале всего 200 отсчётов?” — спросите вы. Ничего страшного, нужно просто дополнить сигнал нулевыми отсчётами, пока его длина не станет равна ближайшей степени двойки.

Как вы догадались из названия раздела, прореживать можно не только время, но ещё и частоту. Граф “бабочка” для БПФ с прореживанием по частоте показан на рисунке:

Граф

Граф “бабочка” для БПФ с прореживанием по частоте

Подробно рассматривать данный алгоритм не будем, просто примем его как данность. Пример БПФ с прореживанием по частоте для сигнала, состоящего из 8 отсчётов показан ниже:

Алгоритм БПФ с прореживанием по частоте для N=8

Алгоритм БПФ с прореживанием по частоте для N=8

Прореживание (двоично-инверсная перестановка) в данном случае производится уже после вычисления ДПФ, т.е. по частотным отсчётам, отсюда и такое название.

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

В вышеупомянутых “бабочках” есть множитель . Он называется поворотным коэффициентом. На нижнем уровне БПФ, когда имеем дело с двумя отсчётами, требуется всего один поворотный коэффициент . Умножение на единицу считается тривиальной операцией, откуда следует, что на первом уровне не требуется ни одной операции умножения, только сложение и вычитание.

На втором уровне у нас получается два поворотных коэффициента и . Умножение на также делается просто: нужно поменять местами действительную и мнимую часть, а также инвертировать знак мнимой части. На этом уровне также не требуется операций умножения.

На следующем уровне требуется четыре поворотных коэффициента , , и , их значения мы рассчитывали в начале нашей статьи.

Давайте проиллюстрируем на графике все упомянутые выше поворотные коэффициенты (и даже немного больше):

Из графика видно, что на каждом следующем уровне количество поворотных коэффициентов увеличивается в два раза, при этом половина из них совпадает с поворотными коэффициентам предыдущего уровня.

Когда БПФ используется для решения каких-либо задач в устройствах цифровой обработки сигналов, количество отсчётов анализируемого сигнала как правило заранее известно и скорее всего не будет меняться в процессе работы устройства. Поэтому, чтобы не тратить время на вычисление , их заранее рассчитанные значения для заданного количества отсчётов и всех уровней разбиения записывают в памяти в виде таблицы констант, которые в дальнейшем будут использоваться для умножения в графах “бабочка”.

\frac</p>
<p>БПФ — это всего лишь алгоритм эффективного вычисления ДПФ, поэтому результаты вычисления БПФ и ДПФ получаются абсолютно идентичны. <br />Для вычисления ДПФ сигнала, состоящего из  отсчётов нам требуется  вычислений с комплексными числами, в случае с БПФ — \log_2
вычислений с комплексными числам.

Чтобы наглядно продемонстрировать эффективность алгоритма, давайте взглянем на таблицу:

Кол-во отсчётов,
N
Количество вычислений
с комплексными числами
Эффективность
ДПФ БПФ
256 65 536 1 024 64:1
512 262 144 2 304 114:1
1024 1 048 576 5 120 205:1
2048 4 194 304 11 264 373:1
4096 16 777 216 24 576 683:1

Особенно заметен прирост эффективности с увеличением количества отсчётов.

Принцип прореживания по времени наиболее удобно иллюстрируется в частном случае, когда N является целой степенью числа 2, т. е. В этом случае из исходной последовательности x(n), формируют две -точечные подпоследовательности и из четных и нечетных членов соответственно:


(1.155)


С учетом этого прямое ДПФ последовательности можно представить следующим образом:




С учетом того, что последнее выражение можно переписать в виде:


(1.156)


0  kN – 1, (1.157)

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

Поскольку определено для а и определены только для то необходимо доопределить полученное выражение для Для этой цели воспользуемся свойством периодичности ДПФ. Действительно, и – периодические функции переменной k с периодом Следовательно

(1.158)

(1.159)

(1.160)


Так как то выражение (1.157) и (1.160) можно записать таким образом:


(1.161)

В этом случае для вычисления двух -точечных ДПФ требуется комплексных умножений и приблизительно столько же комплексных сложений. Затем два -точечных ДПФ должны быть объединены, что потребует комплексных умножений и комплексных сло­жений. Следовательно, для всех значений k требуется или комплексных умножений, что уже при меньше чем


Проиллюстрируем вычисление X(k) в соответствии с полученным выражением для Для этой цели используем направленные сигнальные графы следующего вида (рис. 1.23).


Рис. 1.23. Направленные сигнальные графы

При этом предполагается, что ветви, входящие в узел суммируются (вычитаются), причем верхний выход соответствует сумме, а нижний – разности. Стрелка обозначает операцию умножения на значение множителя, указанного под стрелкой; если множитель не указан – передача по ветви равна 1.

Из рисунка 1.24 видно, что вычисляются два четырехточечные ДПФ четных и нечетных значений входной последовательности. Затем получается путем умножения на и прибавления Значение получается умножением на и прибавления Значение получается умножением на и вычитания из

Аналогичным образом вычисляются и остальные значения.


Рис. 1.24. Вычисление ДПФ для N = 8 на основе двух 4-х точечных

Рассмотренная схема вычислений может быть использована для расчета -точечных ДПФ в соответствии с полученными формулами. В этом случае -точечные ДПФ могут быть представлены как комбинация двух -точечных ДПФ (рис. 1.25).


Рис. 1.25. Вычисление ДПФ для N = 8 на основе четырех 2-х точечных


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


(1.162)

Здесь – преобразуемая двухточечная последовательность. Поскольку и то для вычислений по данным формулам действительно не нужны операции умножения. Таким образом, восьмиточечное ДПФ в итоге сводится к алгоритму, описываемому следующим графом (рис. 1.26).


Рис. 1.26. Направленный граф алгоритма БПФ с прореживанием по времени для N=2 3

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

Описанный алгоритм был назван алгоритмом с прореживанием по времени, поскольку на каждом этапе входная, т. е. временная последовательность разделяется на две обрабатываемые подпоследовательности меньшей длины, т. е. входная последовательность прореживается на каждом этапе.

Общими свойствами таких алгоритмов БПФ являются:


1. Этот алгоритм наиболее удобен, когда


(1.163)

Направленный граф базовой операции выглядит следующим образом (рис. 1.27).


Рис. 1.27. Базовая операция алгоритма с прореживанием по времени

3. Каждый из этапов, как видно из рис. 1.26, содержит базовых операций. В случае, когда множитель – нетривиальный, для каждой базовой операции необходимо выполнять только одно умножение, поскольку величину можно вычислить и запомнить. Структура базовых операций такова, что для выполнения БПФ N – точечной последовательности, размещенной в памяти, достаточно иметь лишь одну дополнительную ячейку памяти. Результаты вычислений на всех промежуточных этапов БПФ можно размещать в те же ячейки памяти, где находились исходные данные. Поэтому для хранения входной и выходной последовательности можно использовать один и тот же массив ячеек памяти. Алгоритмы, у которых для размещения входной и выходной последовательностей используются одни и те же ячейки памяти, называются алгоритмами БПФ с замещением.

Проиллюстрируем алгоритм БПФ с основанием 2 несколько иначе. Все ДПФ являются двухточечными и не требуют операций умножения. Однако при объединении двух – точечных ДПФ в одно N – точечное приходится выполнять около умножений, причем все они используются только при объединении результатов ДПФ. Поскольку эти умножения используются во всех алгоритмах БПФ, соответствующие множители получили специальное название поворачивающих множителей (иногда их называют фазовыми множителями или множителями вращения).

4. Еще одной особенностью алгоритма данного типа является необходимость такой перестановки элементов входной последовательности чтобы выходная последовательность имела естественный (прямой) порядок расположения, т. е. В примере при для этого требовался следующий порядок размещения входной последовательности: и Оказывается, что если является степенью 2, то входная последовательность должна быть расположена в памяти в двоично-инверсном порядке для того, чтобы выходная последовательность получалась в прямом порядке. Двоично-инверсный порядок определяется следующим образом. Записываются порядковые номера элементов входной последовательности в двоичном коде, используя двоичных разрядов, причем а затем осуществляется их инверсия. Полученные при этом числа и будут номерами элементов входной последовательности. Для прямой и двоично-инверсный порядок отсчетов входной последовательности приведен в табл. 1.7.


Чтобы достичь существенного улучшения эффективности необходимо разложить вычисления ДПФ на набор ДПФ меньшего порядка. Алгоритмы, в которых это разложение основано на разложении последовательности на меньшие подпоследовательности, называются алгоритмами с прореживанием по времени.

Рассмотрим частный случай . , . Разделим на четные и нечетные точки: , или, заменяя индексы суммирования на при четном n и при нечетном, получим = , т.к. , то


=
(1.54)

Каждая из сумм является N/2 точечным ДПФ. Первая сумма N/2 точечное ДПФ четных точек исходных последовательностей, а вторая – N/2 точечное ДПФ нечетных точек исходных последовательностей. Хотя индекс k простирается на N значений, k=0,1,…,N-1, каждая из сумм требует вычислений только для k от 0 до N/2-1, т.к. G(k) и H(k) периодичны по k с периодом N/2.


После того, как ДПФ, соответствующие двум суммам в (1.54), вычислены, они объединяются и дают N-точечное ДПФ .





Рис. 1.5.


Разложение 4-точечного ДПФ.

Рис. 1.6. 2-х точечное ДПФ.


Проведя разложение максимально возможное число раз, получим общее число комплексных умножений и сложений, равное .

Вычисления с замещением

Направленный граф для полного разложения восьмиточечного ДПФ в алгоритме с прореживанием по времени изображен на Рис. 1.7. На каждой ступени вычислений происходит преобразование множества из N комплексных чисел в другое множество из N комплексных чисел. Этот процесс повторяется раз, определяя в результате дискретное преобразование Фурье. Обозначим последовательность комплексных чисел, получающихся на m-ой ступени вычисления, через , где = и m=1,2,… . Можно считать входным массивом, а выходным массивом на m+1 ступени вычислений. Таким образом, для случая N=8:

; ; ;

; ; ;



Рис. 1.8.

Рис. 1.9.



Уравнение, соответствующее этому графу, имеет вид:



(1.55)


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



(1.56)

Следовательно, так как имеются N/2 бабочек вида (1.56) на каждую ступень и ступеней, общее требуемое число умножений . Ясно, что для вычисления элементов p и q m+1-го массива требуются комплексные числа, расположенные на местах p и q m-го массива. Поэтому реально необходим только один комплексный массив из N элементов.

Чтобы вычисления выполнялись так, как сказано выше, входные данные должны быть записаны в необычном порядке, который называется двоичной инверсией.


Если (n0,n1,n2) – двоичное представление номеров последовательности , то элемент последовательности x(n2n1n0) запоминается в массиве на месте X(n0n1n2).

; ; ;

; ; ;

; .

Объяснить этот факт можно с помощью следующей схемы:


Рис. 1.10.
Двоичная инверсия.

Рассмотрим частный случай . , . Разделим на четные и нечетные точки: , или, заменяя индексы суммирования на при четном n и при нечетном, получим = , т.к. , то


=
(1.54)

Каждая из сумм является N/2 точечным ДПФ. Первая сумма N/2 точечное ДПФ четных точек исходных последовательностей, а вторая – N/2 точечное ДПФ нечетных точек исходных последовательностей. Хотя индекс k простирается на N значений, k=0,1,…,N-1, каждая из сумм требует вычислений только для k от 0 до N/2-1, т.к. G(k) и H(k) периодичны по k с периодом N/2.


После того, как ДПФ, соответствующие двум суммам в (1.54), вычислены, они объединяются и дают N-точечное ДПФ .





Рис. 1.5.


Разложение 4-точечного ДПФ.

Рис. 1.6. 2-х точечное ДПФ.


Проведя разложение максимально возможное число раз, получим общее число комплексных умножений и сложений, равное .

Вычисления с замещением

Направленный граф для полного разложения восьмиточечного ДПФ в алгоритме с прореживанием по времени изображен на Рис. 1.7. На каждой ступени вычислений происходит преобразование множества из N комплексных чисел в другое множество из N комплексных чисел. Этот процесс повторяется раз, определяя в результате дискретное преобразование Фурье. Обозначим последовательность комплексных чисел, получающихся на m-ой ступени вычисления, через , где = и m=1,2,… . Можно считать входным массивом, а выходным массивом на m+1 ступени вычислений. Таким образом, для случая N=8:

; ; ;

; ; ;



Рис. 1.8.

Рис. 1.9.



Уравнение, соответствующее этому графу, имеет вид:



(1.55)


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



(1.56)

Следовательно, так как имеются N/2 бабочек вида (1.56) на каждую ступень и ступеней, общее требуемое число умножений . Ясно, что для вычисления элементов p и q m+1-го массива требуются комплексные числа, расположенные на местах p и q m-го массива. Поэтому реально необходим только один комплексный массив из N элементов.

Чтобы вычисления выполнялись так, как сказано выше, входные данные должны быть записаны в необычном порядке, который называется двоичной инверсией.


Если (n0,n1,n2) – двоичное представление номеров последовательности , то элемент последовательности x(n2n1n0) запоминается в массиве на месте X(n0n1n2).

; ; ;

; ; ;

; .

Объяснить этот факт можно с помощью следующей схемы:


Рис. 1.10.
Двоичная инверсия.


Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰).


Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни.


Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначен­ные для поддерживания проводов на необходимой высоте над землей, водой.


Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого.

Читайте также: