Лекция № 12. Цифровая обработка сигналов в частотной области. Быстрое преобразование Фурье. Нахождение спектральных составляющих c (k ) дискретного комплексного сигнала x(n) непосредственно по формуле ДПФ требует N 2 комплексных умножений и N ( N 1) комплексных сложений. Так как количество вычислений, а следовательно, и время вычислений приблизительно пропорциональны N 2 , то при больших N количество арифметических операций весьма велико. Поэтому нахождение спектра в реальном времени даже для современной вычислительной техники представляет сложную задачу. По этой причине представляет значительный интерес вычислительные процедуры, уменьшающие количество умножений и сложений. Основной принцип всех этих алгоритмов заключается в разложении операций вычисления ДПФ сигнала длины N на вычисление преобразований Фурье с меньшим числом точек. Разделив анализируемый набор отсчетов на части, вычисляют их ДПФ и объединяют результаты. Такие процедуры получили название алгоритмов быстрого преобразования Фурье БПФ. При реализации БПФ возможно несколько вариантов организации вычислений в зависимости от способа деления последовательности отсчетов на части (прореживание по времени или по частоте) и от того, на сколько фрагментов производится разбиение последовательности на каждом шаге (основание БПФ). Наиболее простыми и широко используемыми являются алгоритмы БПФ с основанием 2, когда длина последовательности x(n) является целой степенью числа 2, то есть N 2 , где целое число. БПФ с прореживанием по времени. Рассмотрим идею БПФ с прореживанием по времени на примере деления набора отсчетов пополам. Введя общепринятое в литературе обозначение для дискретных экспоненциальных функций: eN (k , n) e j (2 N ) kn wNnk , (12.1) Запишем ДПФ сигнала x(n) в виде: c( k ) 2 nk j 1 N 1 1 N 1 N x ( n ) e x(n) wNnk . N n 0 N n 0 (12.2) Разобьем x(n) на две N 2 -точечные последовательности, состоящие из отсчетов с четными и нечетными номерами соответственно. В результате получим: 1 c(k ) N N 2 1 nч 1 x (n) w N nk N N 2 1 x(n)w nk N . (12.3) nнч 1 Заменяя индексы суммирования на n 2 p при четном n и на n (2 p 1) при нечетном n , придем к выражению: c(k ) 1 N 1 N N 2 1 p 0 N 2 1 x(2 p)w 2 pk N p 0 1 N N 2 1 x(2 p 1)w (2 p 1) k N p 0 N 2 1 1 x(2 p)( wN2 ) pk wNk x(2 p 1)( wN2 ) pk N p 0 . (12.4) Так как wN2 wN 2 , то (12.4) можно записать в виде: c(k ) 1 N N 2 1 p 0 x(2 p) wNpk2 1 k N 21 wN x(2 p 1) wNpk2 N p 0 (12.5) 1 1 G (k ) wNk H (k ). 2 2 Каждая из сумм (12.5) является N 2 точечным ДПФ: первая – для четных отсчетов исходной последовательности, а вторая – для нечетных. Несмотря на то, что индекс k в формуле (12.5) распространяется на N значений k 0,1,..., N 1 , каждая из сумм требует вычислений только для k 0,1,...,( N 2 1) , так как G (k ) и H ( k ) периодичны по k с периодом N 2 . Объединение же этих сумм приводит к N точечному ДПФ c (k ) . Процесс вычислений значений c (k ) в соответствии с (12.5) для восьмиточечной последовательности, то есть для N 8 , приведен на рисунке 12.1. 1 2G(0) c (0) x (0) 1 2G(1) x (2) x (4) N|2 ДПФ 1 2G(2) 1 2G(3) w 0 N 1 N w w c (3) 1 2H (0) x (7) w 3 N c (4) x(1) x (5) c (2) 2 N x (6) x (3) c (1) 1 2H (1) N|2 ДПФ w 4 N c (5) 1 2H (2) w 5 N c (6) 1 2H (3) w 6 N c (7) wN7 Рис.12.1 2 Процедура вычислений представлена в виде направленного графа, позволяющего формализовать вычисления. Предполагается, что ветви направленного графа, входящие в узел, суммируются. В тех случаях, когда не указываются коэффициенты передачи, их значение равно единице. Для других ветвей коэффициенты передачи по ветви являются целой степенью wN . Из граф-схемы следует, что c (0) получается умножением 1 2 H (0) на wN0 и прибавлением 1 2 G(0) . Значение c (1) получается умножением 1 2 H (1) на w1N и прибавлением 1 2 G(1) и т.д. Вместе с тем, для c (4) нужно было бы умножить 1 2 H (4) на wN4 и прибавить 1 2 G(4) . Однако, так как G (k ) и H ( k ) периодичны по k с периодом 4, то H (4) H (0) и G (4) G (0) . Таким образом, c (4) получается умножением 1 2 H (0) на wN4 и суммированием результата с 1 2 G(0) . Аналогично вводится коррекция для используемых значений H ( k ) и G (k ) при k 4 . Далее можно вычислить каждое N 2 точечное ДПФ в (12.4) разбиением сумм на два N 4 точечных ДПФ. Таким образом, G (k ) и H ( k ) могут быть вычислены в виде: G (k ) 2 N 2 N N 2 1 p 0 g ( p ) wNpk2 N 4 1 g (2l )w H (k ) lk N 4 l 0 2 N N 41 l 0 2 N N 4 1 l 0 g (2l ) wN2lk2 2 N N 4 1 g (2l 1)w l 0 (2 l 1) k N 2 (12.6) 2 k N 41 wN 2 g (2l 1) wNlk 4 ; N l 0 h(2l ) wNlk 4 2 k N 41 wN 2 h(2l 1) wNlk 4 . N l 0 (12.7) При вычислениях N 4 точечных ДПФ по формулам (12.6) и (12.7) справедливы все закономерности, отмеченные при разбиении отсчетов последовательности на две группы. Продолжим описанную процедуру разбиения исходной ДПФ на преобразования меньшей размерности, пока не останутся только двухточечные преобразования. Двухточечные ДПФ (их число равно N 2 ) могут быть вообще вычислены без использования операций умножения. Действительно, для двухточечной последовательности f (n), n 1, 2, согласно определению ДПФ имеем два спектральных отсчета: s (0) 1 2 f (0) w20 f (1) w20 f (0) f (1) ; (12.8) s(0) 1 2 f (0) w20 f (1) w12 f (0) f (1) . Число требуемых при этом пар операций «умножение – сложение» можно оценить как N log 2 N . Таким образом, вычислительные затраты по сравнению с непосредственным 3 использованием формулы (11.5) уменьшается в N log 2 N раз. При больших N это отношение становится весьма велико. Например, при N 1024 достигается более чем 100-кратное ускорение, но и это еще не предел. Количество комплексных умножений в алгоритме БПФ с прореживанием по времени может быть сокращено вдвое. Из рассмотренного алгоритма следует, что на каждой ступени вычислений происходит преобразование одного множества из N комплексных чисел в другое множество из N комплексных чисел. Обозначим множество комплексных чисел, получающееся на m ой ступени вычисления, через xm (l ), l 0,1,..., ( N 1) . Тогда можно считать xm (l ) входным массивом, а xm 1 (l ) – выходным массивом на ( m 1) ступени вычислений. С учетом введенных обозначений можно представить основную операцию вычислений как операцию, изображенную на рис.12.2 в виде графа: xm ( p) xm1 ( p) 1 2 1 xm (q) wNr wN( r N 2) 2 xm1 (q) Рис. 12.2 Соотношения, соответствующие этому графу, имеют вид: 1 xm ( p ) wNr xm (q ) ; 2 1 xm 1 (q ) xm ( p ) wNr N 2 xm (q ) . 2 xm 1 ( p ) (12.9) Из-за вида графа на рис.12.2 эта операция называется «бабочкой». Выражения (12.9) подсказывают метод сокращения числа комплексных умножений вдвое. Так как wNN 2 1 , соотношения (12.9) можно записать в виде: 1 xm ( p) wNr xm (q) ; 2 1 xm 1 (q ) xm ( p) wNr xm (q ) . 2 xm 1 ( p ) (12.10) Так как на каждую ступень разбиения имеется N 2 «бабочек» вида (12.10), а общее число ступеней равно log 2 N , то общее число пар операций «умножение-сложение» сокращается до N log 2 N . 2 4