Обновления
Хрущовки
Архитектура Румынии
Венецианское Биеннале
Столица Грац
Дом над водопадом
Защита зданий от атмосферных осадков
Краковские тенденции
Легендарный город Севастополь
Новый Париж Миттерана
Парадоксы Советской архитектуры
Реконструкция города Фрунзе
Реконструкция столицы Узбекистана
Софиевка - природа и искусство
Строительство по американски
Строительтво в Чикаго
Тектоника здания
Австрийская архитектура
Постмодернизм в Польше
Промышленное строительство
Строительство в Японии
Далее
|
Главная -> Вычислительные алгоритмы Вход ВПФ: 75 точек Вход БПФ: 25 точек Отображение данных б таблицу 325 Отображение данных в таблицу 5*5 25-кратный вызоё 3-точечного преобразования 5-кратный Вызов 5-точечного преовразодания Умножение таб ицыЗ& на и>- Умножение таблицы J 5 на и}** 3-кратный вызов 25-точечного преобразования 5-к ратный вызов 5-точечного преобразования Отображение табяицыЗ*25 в 75-точечный вектор Отображение таблицы 5*5 в 25-точечный вектор Выход бПФ: 75 точек Выход 6ПФ: 25 точек Вход вход 5-точечного лреабразованив 3-точечного преобразования Выход Выход 5-точечного преобразования 3~точечного ореобразования Рис. 4.4. Разбиение БПФ-алгоритма Кули-Тьюки на подпрограммы. МОЖНО вычислять с помощью БПФ-алгоритма Кули-Тьюки. На этом пути преобразование длины п = может быть пред- ставлено в такой форме, в которой требуется выполнения пщ комплексных умножений. На рис. 4.3 показан один из многих способов разбиения 75-точечного преобразования Фурье. Каждый из узлов этого рисунка можно представлять себе как обращение к подпрограмме. Если вычисления реализуются с помощью такого разбиения на подпрограммы, то один из способов организации программного вычисления показан на рис. 4,4. На самом нижнем уровне вычислений находятся 3-точечное и 5-точечное преобразования Фурье, выполняемые буквально. Позже мы построим малый БПФ-алгоритм Винограда, который можно использовать на этом уровне в качестве подпрограммы. Малые БПФ-алгоритмы Винограда представляют собой сильно оптимизированные процедуры вычисления преобразования Фурье для длин, являющихся простым числом или степенью простого числа. 4.2. Алгоритм Кули-Тьюки по малому основанию Во многих приложениях, в которых используется алгоритм Кули-Тьюки, длина преобразования равна степени двух или четырех. Для построения БПФ-алгоритма длина 2 преобразования представляется в виде 2.2 -i или В этом случае говорят БПФ-алгоритме Кули-Тьюки по основанию два Аналогично, длина 4* преобразования разлагается в виде 4-4 -i или 4 -. 4, и тогда говорят о БПФ-алгоритме Кули-Тьюки по основанию четыре. Если в 2 -точечном алгоритме Кули-Тьюки по основанию два полагается л = 2 и л* = 2 -, то он называется БПФ-алгоритмом Кули-Тьюки по основанию два с прореживанием по времени. Используя тот факт, что р = о) /2 = -1 в этом случае уравнения, задающие БПФ, можно записать в следующем простом виде: л/2-I п/2-l i=0 (=0 n/2-1 n/2-I = 0. л/2-I, ) Тернии по основанию два относится к факту записи индексов по основанию два. Компоненты данных могут быть представлены в любой системе счисления, в частности по основанию два. л/2-I V2k-= Е ( с + г+л/г) (=0 л/2-1 Vlk-+I = Tl (Иг- 1Ч-г./2)мю . к =0, .... п/2 - i. Прореживание по частоте разбивает компоненты входного вектора на два подмножества, содержащие соответствеино первые /1/2 компонент и вторые п/2 компонент. Компоненты выходного вектора разбиваются на подмножество компонент с четными индексами и подмножество компонент с нечетными индексами. Алгоритм с прореживанием по времени и алгоритм с прореживанием по частоте отличаются структурой и последовательностью вычислений, хотя имеют одно и то же число операций. Характеристики алгоритмов совпадают, но пользователь может предпо-. честь один из них из соображений реализации. Мы подробно рассмотрим только характеристики алгоритма с прореживанием по времени. Алгоритм с прореживанием по времени сводит п-точечное преобразование Фурье к двум (п/2)-точечным преобразованиям Фурье с некоторыми дополнительными сложениями и умножениями. Часть из умножений представляют собой умножения на единицу или +/. Они тривиальны и не требуют действительного вычисления. Чтобы обойтись без тривиальных умножений в алгоритме, их следует обрабатывать отдельно. Иногда конструктор предпочитает включить в процедуру вычисления все умножения, даже тривиальные. Алгоритм с прореживанием по времени работает рекурсивно, разбивая на каждом шаге п-точечное преобразование на два (/г/2)-точечных преобразования, которые, в свою очередь, разбиваются точно таким же образом. Из уравнений ясно видно, что число Ale ( ) комплексных умножений п-точечного БПФ удовлетворяет рекуррентному уравнению М, (п) = 2М, (п/2) + п/2. а число Л, (п) комплексных сложений удовлетворяет рекуррентному уравнению А, (п) = 2А, {п/2) + п, где п равно степени двойки. Решения этих уравнений даются равенствами (п) = (л/2) loga л, (п) = п logj л. Комплексные умножения можно реализовать алгоритмом с четырьмя вещественными умножениями и двумя вещественными сложениями. В этом случае характеристики БПФ по основанию два даютсг равенствами Л1д (л) = 2п logj л, Л;, (л) = Зп logj л. Альтернативный алгоритм выполнения комплексного умножения содержит три вещественных умножения и три вещественных сложения. В этом случае характеристики имеют вид (п) = (3/2) п log, л, Л (л) = (7/2) л log, л. Теперь предположим, что мы хотим построить алгоритм, в KofopoM выброшены все тривиальные умножения. Тогда полу-ченнЬте нами характеристики сложности алгоритма улучшатся. Тщательный анализ алгоритма показывает, что все умножения на самом внутреннем шаге алгоритма тривиальны и имеют вид умножений на (-1) для А = О, 1; все умножения на следующем шаге тривиальны и имеют вид умножений на /* для к - О, I, 2, 3; на последующих шагах число тривиальных умножений равно п/4, л/8..... Следовательно, число комплексных умножений равно . МАп) = (л/2) (-3-flog, л).-1-2. Используя для реализации комплексного умножения алгоритм с четырьмя вещественными умножениями и двумя вещественными сложениями, для БПФ-алгоритма по основанию два получаем /И, (л) = 2п (-3 + log, л) + 8, Ля (л) = Зл (-1 + log, л) + 4. Используя для комплексного умножения алгоритм с тремя вещественными умножениями и тремя вещественными сложениями, получаем характеристики /И (л) = (3/2) л (-3 -Ь log, л) + 6, Л (л) = (1/2) п (-9 + 71og, л) -f- 6. Еще немного можно улучшить алгоритм, если воспользоваться свойством симметрии тригонометрических функций. Заметим, что (D-/S =(1 /) 2. Прореживание по времени разбивает множество компонент входного вектора на два подмножества: множество компонент с четными индексами и множество компонент с нечетными индексами. Множество компонент выходного вектора разбивается при этом на мнйжество первых п/2 компонент и множество вторых п/2 компонент. ----------- г-точечный БПФ-алгоритм Кули-Тьюки по основанию два, в котором п = 2 - и п = 2, называется БПФ-алгоритмом Кули-Тьюки по основанию два с прореживанием по частоте. Уравнения БПФ в этом случае преобразуются к виду Мв С ) = п (-7 + 2 1о Л (п) = Зп (-1 + loj п) +4 Мя (п) = (1/2) п (-10 + 3 logj п) + 8. Лн (п) = (1/2) п. (-10 + 7 log, п) + 8. Как мы видим, число вариантов алгоритма Кули-Тьюки весьма велико, но мы еще не перечислили все возможности; имеются и другие возможности улучшения алгоритма. На рис. 4.5 приведены характеристики некоторых БПФ-алгоритмов Кули- Тьюки. В таблицу помимо обычной формы алгоритма Кули- Тьюки включен БПФ-алгоритм Рейдера-Бреннера. Этот БПФ-алгоритм является модификацией алгоритма Кули-Тьюки, основанной на том, что с помощью переупорядочивания уравнений БПФ некоторые умножения на комплексные константы можно заменить умножением на вещественные константы. Алгоритм Рейдера-Бреннера можно строить, исходя из уравнений для алгоритма с прореживанием по времени, но мы предпочитаем отталкиваться от уравнений для алгоритма с прореживанием по частоте: v = s(f,-f tii+ )u> , k = 0, 1112-1 S (Ui - В(+ /2)шй) . (=0 n/2 - 1, Определим рабочий вектор a равенствами О, 1 I (vi - о,+ ,2)/[2/ Sin (2ni/n)l, i a положим n/2-1 Так как fi/2-! nl2-\ A = 0, 1) = = 0, = 1, /1/2-1. пП- 1, i)ai2jSin(2ni J) = E (Wi - И(-)-п/2) 0) ,
- 5 Й s s * ° S I E 2 S S Ю K} -чг (N <0 2 о u2 п. о с -Ч s о * a ills 5 ! 5S Умножение на эту комплексную константу требует всего двух вещественных умножений и двух вещественных сложений. Таких умножений на щагах 3, 4, ... алгоритм содержит соответственно n/i, п/8, .... Их можно реализовать с помощью специальной процедуры умножения. При этом в зависимости от выбранной реализации комплексного умножения характеристики алгоритма будут даваться равенствами
|