Обновления
Хрущовки
Архитектура Румынии
Венецианское Биеннале
Столица Грац
Дом над водопадом
Защита зданий от атмосферных осадков
Краковские тенденции
Легендарный город Севастополь
Новый Париж Миттерана
Парадоксы Советской архитектуры
Реконструкция города Фрунзе
Реконструкция столицы Узбекистана
Софиевка - природа и искусство
Строительство по американски
Строительтво в Чикаго
Тектоника здания
Австрийская архитектура
Постмодернизм в Польше
Промышленное строительство
Строительство в Японии
Далее
|
Главная -> Вычислительные алгоритмы где Vl = Vi к vl = - соответственно переставленные компоненты последовательностей входных и выходных данных. Теперь мы получили уравнение для вычисления циклической свертки последовательностей [v]] и {(o ). Таким образом, переставляя инде1сы входных и выходных данных, мы записали преобразование Фурье в виде свертки. Однако для того вида, в котором эти формулы выписаны, необходимое число операций для вычисления свертки опять имеет порядок л. В следующем разделе мы скомбинируем алгоритм Рейдера для простой длины с алгоритмом Винограда для свертки и получим малый БПФ-алгоритм Винограда. Построим, используя алгоритм Рейдера, двоичное пятиточечное преобразование Фурье, для которого = Б шЧ. А = о.....4, где ш = Сначала перепишем преобразование в виде V. = i; Щ, v = o + i: t.i = Vo + i:(o -i)ii. * = i..... (=1 (=1 И будем заниматься только членами 2 ( - ) i- Элемент 2 в поле GF (5) является примитивным, и, следовательно, в этом поле выполняются равенства 2 = 1, 2> = 2, 2 = 4, 2 = 3, 2 = 1, 2- = 3, 2-2 = 4, 2- = 2. Таким образом, V;-V,= ; (0,24 !) ;. в этой сумме легко узнается 4-точечная циклическая свертка. Выделим постоянные члены и определим фильтр Рейдера, задавая его многочленом g (х) над полем комплексных чисел, где g (х) = (<о= - 1) X + ((О* -1)х + (О) - 1) X -Ь (<о - 1) (с коэффициентами gj = ш - 1). Вход и выход фильтра описываются многочленами, коэффициенты которых равны перестав- ленным компонентам векторов v и V. Итоговая форма 5-точечного алгоритма Рейдера задается уравнениями; d (jc) = VX + ViX -f V3X + Dl, s {x) = (V3 -Vo)x> + (V4 - Vo) + (V,-Vo)x + (V,- V ) s{x) = g{x)d(x) (mod-I), Многочлен g (л:) фиксирован. Многочлен d (x) образуется перестановкой коэффициентов многочлена t) (д;). Многочлен V {х) получается обратной перестановкой коэффициентов многочлена s(x). Схематически этот алгоритм представлен на рис. 4.13. Поучительно переписать алгоритм Рейдера в матричной формулировке. Для 5-точечного преобразования Фурье такая формулировка имеет вид
У, - у, У-. - у. у> - у в у, - У ш - I м= - 1 - 1 .= - I и - 1 и - 1 и - I - I - 1 - 1 - 1 и - 1 Правило перестановки алгоритма Рейдера приводит это равенство к эквивалентному равенству У, - П У, - и. у. - У< У> - ( и - 1 и> - 1 и - 1 ш - 1 и - 1 ш - 1 и - 1 и - 1 - 1 - 1 w - 1 w - 1 - 1 w - I - 1 ш - 1 в котором легко распознать матричную форму записи циклической свертки \у, - П у г - Ус У, - Ус у, - у. Sl 2 1 о 1 2 it Sl о s> ) 2 Sl о Вход (ио, wi, ui, fj, u) Перестановка компонент Входа й{Х] = - VtX - + ViX + tf,
Выход (И,. И И,. Г.. V.) Рис. 4.13. Алгоритм Рейдера вычисления 5-точечкого преобразования Фурье. go = 01 - 1, 1 = - 1, (о* - I, = - где - 1. Идея алгоритма Рейдера переносится на случай, когда длина п преобразования равна степени нечетного простого числа. В этом случае, подобно тому, как нулевые компоненты временного и частотного векторов обрабатывались отдельно, еще некоторое количество компонент временного и частотного векторов должны обрабатываться отдельно. Это объясняется тем, что в кольце Z/(p ) не существует элемента порядка р - 1. Теорема 5.1.8 (которая будет доказана в гл. 5) гарантирует, однако, что для простого нечетного р в этом кольце имеется элемент порядка р - (р - 1), и мы этим воспользуемся. При вычислении р -1 А = 0, ...,/) - 1, воспользуемся структурой кольца zKp ) для того, чтобы переупорядочить компоненты векторов. Эта структура описывается теоремой 5.1.8. Еслн q равно степени простого нечетного числа, то zl(p ) содержит циклическую-подгруппу порядка р - (р - 1). Из (р ! X р-матрицы W = lmJ просто выбросим все вызывающие трудности строки и столбцы так, чтобы к оставшейся матрице размерности р - (р - 1) была применима идея Рейдера. Выброшенные строки и столбцы будем обрабатывать отдельно. Как мы увидим в следующем разделе, обработку даже этих вызывающих трудности столбцов и строк можно организовать как вычисление еще меньших циклических сверток. Таким образом, вычисление р -точечного преобразования Фурье, хотя и слишком нерегулярного для того, чтобы быть вычисляемым как единое целое, можно реализовать в виде всего нескольких разумных фрагментов. Случай, когда длина преобразования равна степени двойки, является несколько более сложным и требует еще одного уровня вычислений. Это объясняется тем, что множество индексов, взаимно простых 0 2 - множество нечетных индексов - не образует циклической группы по умножению. Как доказывается в теореме 5.1.8, это множество образует группу, изоморфную группе Zi X Zm~2 Идея организации процедуры вычислений состоит в следующем. Из (г X 2 )-матрицы W = [ш ] выбрасываются все строки и столбцы с четными индексами, так что остается матрица размерности 2 -1. Все оставшиеся индексы являются нечетными и по умножению образуют группу, изоморфную группе 22 X Z2m-2- Этот изоморфизм используется для того, чтобы определить такую перестановку строк и столбцов матрицы, которая переводит ее в матрицу вида
где Wi и представляют собой (2 -2х2 -2)-матрицы, каждая из которых задает структуру циклической свертки. Точнее, пусть я = 3 и 0=2 - 1. Тогда по модулю 2 имеем о = 1. На самом деле группа нечетных целых чисел относительно умножения по модулю 2 порождается элементами п на: каждый элемент группы может быть однозначно представлен . в виде <1л , где / = О, 1 и Г - 0.....2 -. Следовательно, м = О) яояг- и подходящей перестановкой строк и столбцов матрица W приводится к виду где и г соответственно индексы строк и столбцов в каждой из подматриц. Каждая из четырех подматриц задает циклическую свертку длины 2 -. После выполнения перестановки рассматриваемое вычисление приводится к виду матричной 2-точечной циклической свертки ОДИН из способов вычисления которой дается формулой
4-(Wi-Wa) 1 1 1 -1 Этим задача сводится к вычислению двух комплексных циклических сверток длины 2 -; мы увидим, что вычисления можно организовать несколько лучше. В качестве примера рассмотрим две 4-точечные циклические свертки, образующие сердцевину 16-точечного преобразования Фурье. Пусть Кй = S м*и А = 0.....15, где ш = I. Рассмотрим матрицу, образуемую в результате выбрасывания всех четных индексов в рассматриваемом диапазоне значений i и к. Получим
Чтобы найти нужную перестановку, выпишем индексы в виде чисел 15-З для Г= О, 1 и Г= О, 1, 2, 3. Степени тройки по модулю 16 имеют вид 3° =1, 3 = 3, 3 = 9, 3 = И, 3 = I, 3- = 11, 3- = 9, 3 = 3, и соответственно 15-3° = 15, 15-3 = 13, 15-3 = 7, 15-3 = 5, 15-3 = 15, 15-3- = 5, 15-3,- = 7, 15-3- = 13. Выполним перестановку входных индексов, записывая их в порядке 15--3- (mod 16), и перестановку выходных индексов, записывая их в порядке 15-3 (mod 16). Тогда VI <1 CI и К U и; ш ui ш u) i ui ui ui u \ Чтобы показать четыре образовавшиеся при этом циклические свертки, матрица разбита на блоки. Если преобразование Фурье вычисляется в поле комплексных чисел, то блоки связаны соот-
|