Текст
                    Г.Нуссбаумер
Быстрое
преобразование Фурье
и алгоритмы
вычисления
сверток
Перевод с английского Ю. Ф. Касимова и И. П. Пчелинцева
под редакцией чл.-кор. АН КазССР В. М. Амербаева
и Т. Э. Кренкеля
МОСКВА
•РАДИО И СВЯЗЬ-
198 5

ББК 32.81 Н90 УДК 621.391 Henri J. Nussbaumer Fast Fourier Transform and Convolution Algorithms Second Corrected and Updated Edition Springer Series in Information Sciences Edidors: King Sun Fu Thomas S. Huang Manfred R. Schroeder Редакция переводной литературы H 2402020000-032 .046 (01)-85 104-84 © by Springer-Verlag Berlin Heidelberg 1981 and 1982 © Перевод на русский язык, предисловие ре- дакторов перевода, примечания, дополни- тельный список литературы. Издательство «Радио и связь», 1985
ПРЕДИСЛОВИЕ РЕДАКТОРОВ ПЕРЕВОДА Гармонический анализ и свертка представляют собой два разных, но очень тесно связанных между собой раздела циф- ровой обработки сигналов. Хорошо известно, что свертку можно вычислять с помощью спектральных методов, но о том, что гармо- нический анализ можно проводить, вычисляя систему сверток, ста- ло известно лишь недавно. Книга Г. Нуссбаумера посвящена имен- но вычислительному дуализму между гармоническим анализом и сверткой. Гармонический анализ является одним из старейших разделов прикладной математики, но только в последние два десятилетия он получил признание в практических разработках. Это связано как с развитием интегральной технологии, так и с появлением эф- фективных алгоритмов гармонического анализа, позволяющих вы- числять дискретное преобразование Фурье (ДПФ) с числом опе- раций, пропорциональным не № [в математике принято обозначе- ние 0(№)], a О (A log А) и даже 0(N). Актуальность гармонического анализа признавалась всегда, но в силу оценки 0(№) считалось, что для его проведения требуются громоздкие и длительные вычисления. Даже появление алгоритма быстрого преобразования Фурье (БПФ) Кули — Тьюки с оценкой O(WlogA) не изменило этой точки зрения. По-прежнему счита- лось, что разложение в ряд по дискретным комплексным экспонен- там представляет собой некоторое «упражнение для программис- тов». Новый этап в развитии прикладного гармонического анализа возникал очень медленно, постепенно накапливались факты, необ- ходимые для получения новых по сравнению с БПФ алгоритмов гармонического анализа. Это развитие шло по такому пути: алго- ритм простых множителей Томаса — Гуда, алгоритм Рейдера (све- дение ДПФ при простом N к циклической свертке), алгоритм Тоо- ма — Кука (интерполяционный алгоритм линейной свертки) и, на- конец, алгоритм Винограда преобразования Фурье (АВПФ) и ал- горитм простых множителей (1АПМ). Все алгоритмы в соответствии с китайской теоремой об остат- ках (для целых чисел и полиномов) касались кодирования обла- сти определения дискретных сигналов (отсчетов времени и про- странства). На этом пути было достигнуто эффективное вычисле- ние ДПФ в виде системы коротких сверток с минимальным чис- лом умножений. 3
В свою очередь, кодирование области значений сигналов в не- котором коммутативном кольце с единицей привело к появлению теоретико-числовых преобразований (ТЧП), обеспечивающих цик- лическую свертку и ДПФ, которые по своей сути (выполнение модулярных операций) адекватны ЭВМ с модулярной арифмети- кой. Естественным развитием указанных классов алгоритмов явля- ются: полиномиальное преобразование Нуссбаумера, в котором первообразные корни из единицы ищутся в кольце круговых целых чисел над полем рациональных чисел, и гибридный алгоритм Ри- да— Труонга, в котором алгоритм Винограда реализуется над квадратичным расширением простого поля по модулю числа Мер- сенна. Работй в этой области еще только начинается, и очевидно, основное внимание должно быть обращено на каскадные (состав- ные) полиномиально-числовые преобразования, которые основы- ваются на совместном кодировании ансамбля адресов сигналов (временных, пространственных и в области значений) при вычис- лении ДПФ и свертки с целью достижения минимума вычисли- тельной сложности. Термин «упорядочение полиномов» (ordering of polynomials), введенный Г. Нуссбаумером в связи с полиномиальными преобра- зованиями, следует понимать как образование полиномов по z, ко- эффициентами которых являются столбцы двумерных массивов. Такое представление двумерных массивов дает возможность запи- сывать двумерную циклическую свертку в виде одномерной цикли- ческой свертки полиномов по г. Упорядочение полиномов применимо и к массивам большей размерности, например, трехмерной. Теперь уже можно сказать, что использование теории чисел и алгебраических структур в прикладном гармоническом анализе и при вычислении сверток является разделом цифровой обработки сигналов, требующим самого пристального внимания. Изменилось само определение свертки — теперь вычисление свертки понимает- ся как задача вычисления системы билинейных форм над задан- ным коммутативным кольцом с единицей при помощи билинейной неветвящейся программы, а ее вычислительная сложность (число существенных умножений) по теореме Винограда — Штрассена определяется как ранг системы билинейных форм. Следует разли- чать верхние границы вычислительной сложности гармонического анализа и вычисления сверток, которые появляются при «изобре- тении» новых алгоритмов, и определение нижних границ (потен- циальных возможностей метода), что представляет собой основную задачу алгебраической теории сложности вычисления сверток и ДПФ. Например, в настоящий момент неизвестно,, достигает ли алгоритм Винограда преобразования Фурье нижней границы муль- типликативной сложности в случае произвольного N. Таким образом, речь идет о создании новой идейной концепции конечных вычислительных структур на алгебраическо-числовой ос- нове и поэтому следует ожидать применения все новых разделов
Часть материала книги основана на курсе, прочитанном аспи- рантам в университете г. Ниццы (Франция). Хотелось бы выра- зить свою признательность д-ру Т. А. Крицу (IBM FSD) за добро- желательное рецензирование рукописи и многочисленные полезные пожелания. Я благодарен м-ру П. Беллоту (IBM С. Е. R., France) за советы, касающиеся вводных глав по теории чисел и полиноми- альной алгебре, и д-ру Кули (IBM Research, Yorktown Heights) за комментарии к работам, способствовавшим созданию этой книги. Я признателен также д-ру П. Куандэлу, с которым мы работали над полиномиальными преобразованиями во время подготовки его диссертации и с кем провели много плодотворных обсуждений. Я обязан м-сс С. де Бэкер за помощь по улучшению языка книги и м-сс К- Шевалье за подготовку рукописи.
ПРЕДИСЛОВИЕ В книге с единой точки зрения представлены различные быстрые алгоритмы, используемые при реализации цифровых фильтров и вычислении дискретных преобразований Фурье (ДПФ). Книга содержит восемь глав. Первые две главы посвящены об- щему рассмотрению проблемы и вводному материалу по теории чисел и полиномиальной алгебре. Обсуждаются лишь основные понятия, применяемые в книге. Из теории чисел приводятся срав- нения, первообразные корни, квадратичные вычеты и свойства чи- сел Мерсенна и Ферма, из полиномиальной алгебры —- делимость и сравнения многочленов, а также некоторые вопросы алгебраиче- ской сложности вычислений. Остальная часть книги сосредоточена на быстрой цифровой фильтрации и алгоритмах дискретных преобразований Фурье. Я старался изложить этот материал с единых позиций, используя как можно шире полиномиальную алгебру. Это неизбежно приве- ло к необходимости видоизменения многих алгоритмов, обсуждае- мых в книге. По собственному опыту я убежден, что такое изложе- ние позволяет лучше уяснить связи между алгоритмами и дает ключи к совершенствованию их вычислительной эффективности. Глава 3 содержит обзор быстрых алгоритмов цифровой фильт- рации, основанных на алгебраических методах, и вычислений од- номерных круговых сверток. В гл. 4 и 5 рассмотрены быстрое пре- образование Фурье (БПФ) и алгоритм Винограда преобразования Фурье (АВПФ). В гл. 6 и 7 вводится понятие полиномиальных преобразований и показано, что они являются важным инструмен- том для уяснения структуры многомерных сверток, преобразова- ний Фурье и разработки эффективных алгоритмов. В гл. 8 эти понятия применены к вычислению одномерных свер- ток с заменой полиномиальных конечных полей на конечные чис- ловые поля, что облегчило введение теоретико-числовых преобра- зований, полезных для быстрых вычислений сверток с помощью модулярной арифметики. Свертки и дискретные преобразования Фурье получили широ- кое распространение в физике, и я надеюсь, что предлагаемая книга послужит толчком к новым исследованиям в этих областях и поможет потенциальным читателям оценить и использовать предложенные методы. Вероятно, многие рассмотренные здесь методы имеют весьма общий характер и могут найти в будущем неожиданные применения.
теории чисел и теории алгебраических структур в этой области с одновременным осмыслением понятий сложности дискретных за- дач. В заключение сформулируем алгоритмическую задачу ДПФ: существует ли массовый детерминированный алгоритм вычисления ДПФ (универсальный гармонический анализатор) с минимальной сложностью? Пока исчерпывающего ответа на этот вопрос мы не имеем. Предлагаемая читателю книга Г. Нуссбаумера представляет собой «моментальный снимок» области вычисления ДПФ и сверт- ки в начале 80-х годов. Можно ожидать, что она станет настоль- ной книгой для специалистов по цифровой обработке сигналов, а также ценным пособием для аспирантов и студентов старших кур- сов, изучающих цифровую обработку. Перевод книги выполнен Ю. Ф. Касимовым (предисловие, гл. 1—4, приложения, задачи) и И. П. Пчелинцевым (гл. 5—8). В. М. Амербаев Т. Э. Кренкель
Глава 1 ВВЕДЕНИЕ 1.1. ВВОДНЫЕ ЗАМЕЧАНИЯ Практическое использование цифровой свертки и дис- кретного преобразования Фурье приобрело особое значение в пос- ледние годы. Это явилось прямым следствием все возрастающего применения методов цифровой обработки сигналов, обусловлен- ного быстро снижающейся стоимостью цифровых устройств, а так- же той важной ролью, которую играют цифровая фильтрация и ДПФ в цифровой обработке сигналов. Необходимость разрабаты- вать эффективные или, как еще говорят, быстрые алгоритмы свертки и ДПФ вызвана тем, что прямое вычисление свертки и ЛЛточечного ДПФ требует числа операций порядка №,' быстро растущего с увеличением N и ведущего к огромной затрате вы- числительных ресурсов при такой реализации вычислений. Исторически сложилось так, что важнейшим событием в разра- ботке быстрых алгоритмов явилось создание Кули и Тьюки в 1965 г. алгоритма быстрого преобразования Фурье, позволяющего вычис- лять ДПФ с числом операций, пропорциональным A4og./V. В ре- зультате существенно уменьшается вычислительная сложность при больших преобразованиях. Так как свертки можно вычислять с помощью ДПФ, то БПФ-алгоритм может быть использован и для вычисления свертки с числом операций порядка NlogN. Это обус- ловило важнейшую роль БПФ в цифровой обработке сигналов с момента его открытия. В последнее время было предложено много новых быстрых алгоритмов свертки и ДПФ, имеющих еще мень- шую вычислительную сложность. Быстрый ДПФ-алгоритм, вве- денный Виноградом в 1976 г., является, пожалуй, важнейшим сре- ди них, поскольку позволяет теоретически уменьшить сложность БПФ с помощью метода, который можно рассматривать как обра- щение БПФ, так как он вычисляет ДПФ с помощью свертки. Как мы увидим далее, связь между сверткой и ДПФ имеет много ас- пектов и ее значение далеко выходит за рамки чисто алгоритмиче- ских процедур. Другим важным фактором в разработке новых алгоритмов яви- лось осознание того, что свертки и ДПФ можно рассматривать как операции в конечных числовых и полиномиальных кольцах и по- лях. Эта новая точка зрения позволяет получать нижние границы сложности вычислений и новые улучшенные алгоритмы, основан- ные на полиномиальных и теоретико-числовых преобразованиях. Помимо практических приложений многие алгоритмы свертки
и ДПФ имеют и теоретическое значение, так как они ведут к луч- шему пониманию математических структур, лежащих в их основе, и находят различные приложения в других областях, отличных от применения сверток и ДПФ. В частности, полиномиальные преоб- разования появляются как весьма общий инструмент для преоб- разования многомерных задач в одномерные. Сравнениями различных алгоритмов, реализующих одинаковые функции, насыщена вся книга. Во многих случаях в качестве ме- ры сложности вычислений берется число арифметических операций в алгоритме. Хотя и существует грубое соответствие между общей и алгебраической сложностью алгоритма, все жЬ практическая ценность вычислительного метода зависит от многих факторов. Эффективность алгоритма определяется не только числом опера- ций, но и такими параметрами, как число перемещений данных, стоимость вспомогательных операций, общая структурная слож- ность, различные возможности, предоставляемые используемой вычислительной системой, искусство программиста. Поэтому упо- рядочение алгоритмов по их действительной эффективности, вы- раженной временем выполнения, является весьма трудным делом, так что сравнения, основанные лишь на числе арифметических опе- раций, должны быть «взвешены» с учетом факторов, возникающих при конкретных реализациях этих алгоритмов. 1.2. ОБОЗНАЧЕНИЯ Всегда трудно избежать чрезмерного употребления раз- личных символов и индексов при описании алгоритмов свертки и ДПФ. Для упрощения изложения сделаем ряд допущений. После- довательности дискретных данных будут, как правило, представ- ляться строчными буквами с индексами, например хп- Мы не при- меняем обозначение {хп} для последовательности данных, так как контекст исключает возможность смещения последовательности с ее п-м членом. Так, в наших обозначениях дискретно-временной сигнал хп есть последовательность значении непрерывного сигнала x(t) в заданные моменты времени t=nT, представленных числами. Запись полиномов осуществляем прописными буквами, например: X{z)=^xnz^. (1.1) п=0 Для преобразований используем обозначение Xh и ДПФ будет иметь вид ^xnW^. (1.2) п=0 Иногда будем применять обозначение Рейдера (х)Р для вычета числа х по модулю р.
1.3. СТРУКТУРА книги Вводный материал по теории чисел и полиномиальной алгебре представлен в гл. 2. В ней с неформальной точки зрения вводятся понятия делимости чисел и полиномов, сравнений, корней в конечных кольцах и 1полях. Этот материал необходим для пони- мания остальной части книги, но может быть опущен читателем, знакомым с основами теории чисел и современной алгебры. Быстрые сверточные алгоритмы обсуждаются в гл. 3. Показа- но, что большинство из. них представляется в полиномиальной ал- гебре и может рассматриваться как различные формы рекурсив- ных вложений. В гл. 4 излагается алгоритм быстрого преобразования Фурье и некоторые его новые модификации, в частности алгоритм Рейде- ра — Бреннера. Глава 5 посвящена вычислениям дискретных преобразований Фурье с помощью сверток, основанных на преобразовании Вино- града — Фурье, самого эффективного алгоритма вычисления ДПФ. В гл. 6 и 7 вводятся полиномиальные преобразования, являю- щиеся ДПФ в конечных кольцах и кольцах полиномов. Показано, что эти преобразования вычисляются без умножений и представ- ляют собой эффективное средство вычисления многомерных свер- ток и ДПФ. В гл. 8 изучаются алгоритмы, основанные на модулярной ариф- метике. Вводятся теоретико-числовые преобразования, являющие- ся ДПФ, определенными в конечных числовых кольцах и полях. Отмечается важная роль этих преобразований при реализации ал- горитмов в Специальных устройствах. Глава 2 ЭЛЕМЕНТЫ ТЕОРИИ ЧИСЕЛ И ПОЛИНОМИАЛЬНОЙ АЛГЕБРЫ Многие новые алгоритмы в .цифровой обработке сигналов основаны на элементарной теории чисел и полиномиальной алгебре1», поэтому знакомство с ними необходимо для понимания этих алгоритмов и возможности их прак- тического использования. В этой главе дан неформальный обзор основных теоретико-числовых и алгебраических понятий. Ее цель — познакомить инженеров с математическими методами, наиболее часто встречающимися в .книге. Не стремясь к полному и строгому .изложению, мы приводим краткое описание необходимых матема- тических средств, надеясь, что оно подтолкнет читателя к 'изучению более пол- ных .руководств [2.1—2.4]. *> Термин «полиномиальная алгебра» принят в книге вместо эквивалентного и более привычного термина «алгебра многочленов» вследствие того, что Г.. Нуссбаумер ввел понятие полиномиального преобразования (см. гл. 6, 7), именовать которое многочленным преобразованием было бы крайне неудобно и породило бы ошибку в терминологии. — Прим. ред.
Материал разбит на две части, элементарную теорию чисел и полиноми- альную алгебру. В элементарной теории чисел важнейшими для цифровой обработки сигналов являются китайская теорема об остатках й первообразные корни. Китайская теорема дает нестандартное представление для чисел и ис- пользуется для построения некоторых теоретико-числовых преобразований (ТЧП), а также в работе с теоретико-числовыми индексами, дающими одно- мерные представления многих многомерных задач. Первообразные корни- играют важную роль при определении ТЧП и применяются три сведении дискретных преобразований Фурье к сверткам, например, в алгоритме преобразования Винограда—Фурье. В разделе, посвященном полиномиальной алгебре, кратко обсуждаются понятия кольца и поля; используемые в книге. Показана связь полиномиальной алгебры с такими известными операциями обработки сигналов, как свертка и корреляция. Формулируется китайская теорема об остатках для полиномов и приводятся некоторые результаты теории сложности вычислений, относящиеся к сверткам и корреляциям. 2.1. ЭЛЕМЕНТАРНАЯ ТЕОРИЯ ЧИСЕЛ В этом разделе изучаются свойства целых чисел. Начнем с прос- тейшего понятия — делимости целых чисел. 2.1.1. ДЕЛИМОСТЬ ЦЕЛЫХ ЧИСЕЛ Пусть а и b целые, причем b положительно. Делимость а на b определяется следующим основным соотношением: a=bq+r, O^r<b, (2.1) где q называется частным, аг — остатком. Если г=0, то b и q — делители числа а, и тогда говорят, что b делит а и пишут Ь\а. Если а ие имеет делителей, отличных от 1 и а, то й — простое число. В противном случае а называется составным числом. Каждое составное число может быть представлено в виде произведения степеней простых чисел с положительными целыми с,: п=Прр. (2.2) i Основная теорема арифметики утверждает, что это представление един ственно. Наибольшее положительное целое d, делящее целые числа а и Ь, назы- вается наибольшим общим делителем (НОД) и обозначается: d=(a, b). (2.3) Если d—(а, б) = 1, то а и Ь не имеют общих делителей, отличных от 1, и на зываются взаимно-простыми. НОД чисел .находится с помощью хорошо известного алгоритма Евклида. Не теряя общности, будем считать, что а и b положительны, так как (а, Ь) — = (—а, Ъ) = (с, —Ь) = (—а, —Ь). Деля а на Ь, получим a=bqt + rlt n<b. (2.4) 11
По определению, d=(a, b)^a и d=^6. Далее, если г4=0, то Ь\а и (а, Ь)=Ъ. Если Г1#='О, то, продолжая процесс деления с остатком, получим следующую систему равенств: 6 = Г1<72 + Т2, ГгСГь rl=r2qs+rs, г3<г2; rk-z=rk-tqk+rk, rk<rk-i', rk—i=rkqk+i. (2.5) Так как rl>r2Z>rs>..., то последний остаток равен нулю. Из последнего равенства следует, что rs|rs-4. Затем последовательно получим, что гк\гк_2, и т. д. Наконец, получим гь|д и гь|а. Следовательно, гк — делитель а н Ь. Предположим теперь, что с — делитель а и Ь. Тогда в соответствии с (2.4) с — делитель п. Из системы равенств (2.5) вытекает, что с есть дели- тель г2, гз, .... гк. Тогда каждый делитель с чисел а и Ь есть одновременно делитель гк и потому с^гк. Таким образом, гк — НОД а и Ь. Важным следствием,. получаемым из рассмотрения алгоритма Евклида, является то, что НОД двух целых а и b — их линейная комбинация. Это легко увидеть, если переписать (2.4) и (2.5) так: , ч г4=а—bqi, r2—b—riq2, rk=rk-2—rk-iqk. (2.6) Первое равенство показывает, что г4 — линейная комбинация а и 6; второе показывает, что г2 — линейная комбинация b и г4 и, следовательно, одно- временно г2 есть линейная комбинация а и Ь. Наконец, последнее равенство дает представление гк в виде линейной комбинации а и Ь. Так как гк=(а, Ь), то получим (a, b) =ma+nb, (2.7) где т и п — целые числа. В случае, когда, а и b взаимно-просты, получаем соотношение Безу: 1—fna+nb. (2.8) Теперь будем придерживаться другой точки зрения. Рассмотрим .линейное целочисленное уравнение с коэффициентами а, Ь, с: ах+Ьу=с> (2.9) где хи у — целочисленные неизвестные. Уравнения такого вида’ называются Диофантовыми. Уравнение (2.9) будет иметь решение, только если (а, Ь) | с. Для того чтобы показать это, заметим, что при а =0 или й=0 будем иметь Ь\с или а\с. Если п=#0 и то при разрешимости уравнения (2.9) d=(a, b) — де- литель с. Обратно, если d|c, то c=c4d и (2.7) влечет существование таких целых тип, что d=ma+nb. Следовательно, c=cid=cima+cinb, откуда по- лучаем решение Диофантова уравнения (2.9): x=c4m, t/=c4n. Таким образом, при (а, Ь) | с .решение Диофантова уравнения дается алгоритмом Евклида. Ре- шение (2.9), однако, не является единственным. Пусть х0, у0 — частное реше- ние, с=аХо+Ьув. Если х, у — любое другое решение, то а(х—Хо)=Ь(уо—у). (2.10) 12
Деля обе части равенства иа d, получим (aid) (х—хо) = (b/d) (уо—у). (2Л1) Так как ((aid), (t>ld)) — l, то (b/d)\(x—х0), и, следовательно, х=х0+ (b/d)s, где s целое. После подстановки полученного значения в (2.11) имеем у=уй— (a/d)s-, x=x0+(b/d)s. (2.12) Эти равенства' дают .класс всех решений уравнения (2.9), причем частные решения получаются при различных значениях параметра s. В качестве числового примера рассмотрим уравнение 15x+9t/=21. Исполь- зуя алгоритм Евклида, найдем сначала НОД а и b для а=15, 6=9: 15 = =9-1+6, 9—6-1+3, 6=3-2. Следовательно, d—З. Так как 3|21, то уравнение имеет решение. Представим 3 в виде линейной комбинации 15 и 9, переписав предыдущую систему .равенств в виде: 6=;15—9-1, 3=9—6-1= —15+2-9. Итак, т=—1, п=2. Деля с=21 на d=3, получим Ci=7. Это дает частное решение х0~—7, ро=14. Деля а=-15 и 6=9 на d=3, получим a/d—Ъ и 6/d=3. Следовательно, общее решение Диофантова уравнения имеет вид: t/=14—5-s, х=—7+3-s, где s — целый параметр. 2.1.2. СРАВНЕНИЯ И ВЫЧЕТЫ В (2*. 1) деление целого а на целое 6 дает остаток г. Все целые числа-а, дающие при делении на 6 один и тот же-остаток, образуют класс вы- четов по модулю 6. Два целых числа ai и аг, имеющие одинаковые остатки при делении на 6, называются сравнимыми по модулю 6. Отношение сравнимости обозначают так: щ es az mod 6. (2-13) Отношение сравнимости есть отношение эквивалентности, и класс вычетов есть класс эквивалентности по этому отношению. Два целых числа at и а2 сравнимы по .модулю 6, если 61(0!!—а2). (2.14) Отношение сравнимости возникает во многих физических задачах, в част- ности при -измерении углов. В этом случае возможные значения углов в гра- дусах лежат в диапазоне 0—360° и два угла, отличающиеся на кратное 360°, считаются совпадающими. Таким образам, углы измеряются по модулю 360. С точки зрения сравнимости чисел нас интересует лишь остаток г, полу- чающийся при делении числа а на число 6. Этот остаток называют также вычетом а по модую 6. Очевидно, что rs^amodb. (2.15) Для обозначения -вычета часто используют символ < > [-2.4]: '•=<«>&, (2.16) причем индекс 6 часто опускают, если ие возникает недоразумений. Непосредственно из определения вычета следует соотношение для сумм и произведений чисел <n.+a2>=«di> + <a2»; <ala2y = ^aly<,a2y'>. (2.17) Относительно сравнений деление ие определено. Рассмотрим, однако, сле- дующее сравнение: 13
axssc mod b. (2.18) Это сравнение эквивалентно Диофантову уравнению ах + Ьу—с, в котором все члены определены по модулю Ь. Из результатов, полученных ранее, следует, что сравнение (2.18) разрешимо тогда и только тогда, когда d\c, где d=(a, Ь}. В этом случае решение, согласно (2.12), имеет вид х=х0+ (b/d)s mod b, (2.19) где Хо — частное решение сравнения, as — положительное целое, меньшее Ь. Однако имеется только d различных решений, так как (b/d)s имеет лишь d различных по модулю Ь значений. Важным следствием из этого является одно- значная разрешимость сравнения cxscmodb в случае (а, Ь) = 1. Таким образом, если (а, Ь) |с, то сравнение ах=с mod b решается с помощью алго- ритма Евклида. В дальнейшем увидим, как теорема Эйлера позволяет получить более элегантное решение сравнения (2.18) при (a, 5) = 1. Рассмотрим теперь систему линейных сравнений с различными модулями. Требуется найти целое х, удовлетворяющее одновременно k сравнениям: xer(modmi, i=l, ..., k. ' (2.20) Эта задача играет важную роль во многих алгоритмах цифровой обра- ботки сигналов. Решение ее получается на основании китайской теоремы об остатках. Теорема 2.1. Пусть иг, — k положительных попарно взаимно простых це- лых, больших 1. Тогда система линейных сравнений mod т, имеет един- k ствениое по модулю М решение, где М= П пц. i=\ Доказательство основано на соотношениях k № 2 mod М. (2.21) i=l 1 mod mt. (222) Равенство (2.22) дает k сравнений. Так как mi в совокупности взаимно- простые, [mt, = то каждое такое сравнение имеет единственное решение Г,, которое может быть найдено либо по алгоритму Евклида, либо по теореме Эйлера (см. теорему 2.3). Рассмотрим теперь вычет X из (2.21) по какому-нибудь модулю т3. За исключением M/mj, все Mimi содержат т, в качестве делителя и, следовательно, равны 0 по модулю т,. Поэтому по- лучим х= (М/т3)г3Тj mod т,, (2.23) и так как (7И/пг1)7', = 1 mod т3, то х=г3тойт,. (2.24) Таким образом, (2.21) дает решение х для k сравнений: x=rj mod игц j=l, ..., k. Для примера найдем решение следующей системы сравнений: <х^з=2, <*/4=11, <xS=3. Здесь /П1=3, ш-2=4, ш3=5, М=60, Af/m!=20, М/т2=\5, Л4/и1з= 12. Сравнения ^207'1^>3=1, <157'z^i=l, <127’з^=1 имеют решения: 7\=2, Т'2=3, Т3=3. Следовательно, х=20-2-2+15-1-3 +12-3-3=53 mod 60. Китайская теорема об остатках 'используется при представлении чисел в 14
модулярной арифметике, позволяющей выполнять арифметические операции с большой скоростью вследствие отсутствия переносов от цифры к цифре. В таких системах число а представляется своими вычета.ми а, по системе взаим- но-простых модулей т{: a={ai,az, —, (2.25) Тогда сложение или’ умножение двух чисел а и b может быть выполнено посредством сложения или умножения вычетов at и bi пс каждому модулю и,- независимо друг от друга. Если М=Цт, выбрано как произведение большого i числа малых модулей mt, то даже действия с весьма большими числами могут быть выполнены в такой системе с большим числом малых по величине мо- дулей. Поэтому остаточное представление чисел весьма эффективно для сло- жений и умножений с высокой скоростью. Однако преимущества ограничч ваются практическими .трудностями, возникающими при .пользовании этой си- стемой: стоимостью перехода к вычетам, сложностью операции деления, сильно возрастающей длиной представления при точном выполнении операций. В силу этих ограничений остаточное представление применяется редко. В гл. 8 мы увидим, однако, что модулярная система и китайская теорема об остатках играют важную роль при определении теоретико-числовых преобразований и их приложении. Китайская теорема об остатках часто используется при представлении М-точечяого одномерного массива данных в виде ^-.мерного массива. Оно осу- ществляется преобразованием .вычета п по модулю М, где n=0, I, ..., М—1, в многомерный индекс из вычетов и.-, п, =<0, 1, ..., т,-—1: ft n= j (Mlmi)niTi mod М, (2.26) i=i где mlt т2, ть — k взаимно-простых модулей, дающих в произведении М. Такое представление особенно важно п.ри вычислении преобразования Фурье и свертки, как будет видно в последующих главах. Введем теперь понятие перестановки. Снова рассмат.рим N целых чисел п, п=0, 1, ..., Л'—il. Если умножим по модулю М каждый из этих вычетов и, на целое а, то получим множество из М чисел bi, таких, что bt=ani mod М. (2.27) Все числа И; различны. Мы хотим, чтобы .соответствующие числа bi также получались различными, когда п .изменяется от О до М—1. В таком случае bi будут представлять то же самое множество из М вычетов, но в 'другом по- рядке. Каждое равенство (2.27) есть линейное сравнение и, Как .известно из (2.19), решение такого сравнения единственно, если (а, М) = 1... Предположим, что (а, Л1)~ 1-, и рассмотрим два различных значения п,- и zij. Так как (а, М) =!, то сравнение (.2.27) определяет два целых bi и bj, соответствующих nt- и Пу. Вычитая bj из Ь{, получаем bi—bj^a(nt—n3) mod Л4. (2.28) Если bi=bj, то а(П{—п3) =0 mod М. Это невозможно, так как (а, Л1) = 1 и ni—п}<_М, Значит, все bi попарно-различны и представляют собой переста- новку М элементов от 0 до М—1. 15
В качестве примера рассмотрим перестановку, определенную соотношением i^5nmod6. Очевидно, что 5 и 6 взаимно-просты. Когда п принимает зна- чения 0, 1, 2, 3, 4, 5, то Ь принимает соответственно значения 0, 5, 4, 3, 2, 1. Ниже увидим, что перестановки часто используются для переупорядочения последовательностей данных. Вернемся к многомерному представлению одно мерных массивов, основанному на китайской теореме об остатках, и покажем, как оно может быть упрощено за счет переупорядочения. Если М есть произ ведение двух взаимно-простых .делителей пц и т2. то (2.26) можно переписать: n^m2niTt + m.in2T2moAM. (2.29) Так как Г, и Т2 взаимно-просты с mi и т2, то tn2niTi и min2T2 могут рас- сматриваться как две .перестановки nlTl mod mi и ПгТгГпойлг двух множеств из mi и т2 точек. Следовательно, преобразование, определенное посредством (2.29), можно упростить: к п=т2п, +/тп2 mod М (2.30) и в случае более двух делителей h п= 2 (Mlmif-nt mod М. (2.31) i=l Упрощение (2.30) mo сравнению с (2,26) достигается за счет того, что не нужно больше .вычислять обратное для Mlmj. Рассмотрим пример. Пусть Л1=6, wit =2 и т2—3. Тогда последовательность значений для п есть {0, 1, 2, 3, 4, б). Так -как Ti=.l и 7'г=2, то по (2i.26) получаем'п^3л1 + 4п2, тогда как (2.30) позволяет получить п=ЗЛ1 + 2/гг. Когда пара (/Z1, Па) принимает последовательно значения из {(0,0), (1,0), (0, 1), .(1, 1), (0,2), (1,2)}, то п принимает значения 0, 3, 4, 1, 2, 5 в первом случае и 0, 3, 2, 5, 4, 1 — во втором. Таким образом, в обоих случаях п пробегает полное множество значений, хотя и в различном порядке. 2.1.3. ПЕРВООБРАЗНЫЕ КОРНИ Как было показано, отношение сравнимости по модулю т разби- вает все целые числа на т классов эквивалентности. Среди них классы, обра- зованные числами, взаимно-простыми с т, играют особую роль, и часто тре- буется знать, сколько имеется неотрицательных вычетов, меньших т и взаимно- простых с т. Обычно это число обозначают через <р(т) и называют функцией Эйлера. Легко видеть, что <р(,1) = 1, так как (0, 1) = 1 Если т=р простое, то все положительные числа, .меньшие р, взаимно-простые с р. Тогда Ф(Р)=Р—1- (2.32) Если т=рс, то число целых, .меньших т и кратных р, будет равно рс'*- Поэтому Ф (рс) = рс-—рс~ ’ = рс ‘ ’ (р— 1) = рс (1—1 /р). (2.33) Для- того чтобы найти <р(ш) для произвольного т, покажем, что Ф (г/г) — мультипликативная функция. *> В оригинале (1.1) = 1. Это, по-видимому, опечатка, так как, по опреде- лению, <р(т) — число неотрицательных вычетов, меньших т й взаимно-прос- тых с т. — Прим, перев.
Теорема 2.2. Если а, b — взаимно-простые числа, то <р(а6) =<p(o)fp(6). Рассмотрим все неотрицательные целые и, меньшие а-b и имеющие вид: u==aq+r, r=0, 1 а—1 и q==G, 1, ..., b—1. Ясно, что и взаимно-просто с а, если г есть одно из <р(п) целых г,, .взаимно-простых с а. Далее, 6<р(а) чисел и,, заданных выражениями г.-, a + rit Ча+г,,..., (Ь—1)а+г,, взаимно-просты, с а. Если q выбрано одним из ср (6) значений, взаимно-простых с b и меньших, чем Ь, то соответствующее значение и, взаимно-просто с Ь, так как ни один делитель Ь не может делить ни а, ни q. Таким образом, имеется <р(а)<р(6) чисел, взаимно-простых с а и -6 и, следовательно, с а-'Ь *>. Немедленным следствием теоремы 2.2 является выражение для <р(Л') в об- щем случае: . k <p(N)=W П (1-1/р.). (2.34) где ^=p^c,, .... рь Cfi — разложение TV на простые множители. Эта формула получается непосредственной комбинацией теоремы 2.2 -и формулы (2.33). Функция Эйлера обладает важным свойством: сумма ее значений для всех делителей числа N есть само это число, т. е. 2 <p(d)=JV. (2.35) <i[N Это следует из того, что N/d есть делитель N в том случае, когда d\N. Таким образом, 2 4>(d) = 2 <₽(Wd). (2.36) <j|w <j|jv Рассмотрим теперь множество Sd целых чисел а, таких, что (a, ,N)=d, Каждое целое .от 1 до N принадлежит одному из множеств Sd- В каждом множестве Sd будет (a, N)=d и ((n/d), (N/d)) = l, так что каждое такое множество .содержит (p(N/d) элементов. Так как всего имеется N чисел, то N= 2 <PWd) (2.37) й|Л' и (2.35) следует из (2.36) и (2.37). Функция Эйлера дает число классов вычетов по модулю т, взаимно прос- тых с т. Теперь опишем еще один тип классов вычетов, используя понятие по- казателя числа, по модулю т. Обратимся к последовательности хп, заданной соотношением xn^anmodm, (2.38) где а — целое. Если п последовательно принимает значения 0, 1,2, ..., то хп принимает значения Хо, Xi, Хг, ... соответственно. Так как имеется всего т различных наименьших неотрицательных вычетов", то обязательно найдутся два совпадающих вычета х,- и хТ .при i<r. -Пусть г выбрано наименьшим для всех таких возможных значений. Тогда xT^Xi mod tn, i<Zr. (2.39) *> Это неверно, как показывает-пример 6=3, и — 2-1 + 1, -т. е. 9—1, Таким образом,..нельн-я- утвёр5еда^+что.1и=§п+г будет взаимно-простым с 6, если (9, Й=.1. Одндко (веррф.'что среди чисел u—qa+ri при 9=|0, 1, — -., 6—1 имеетй! в • точности '4(b) чиерл-, взаик(но-п|остых с 6. — Прим, перев. 17
По определению, х,+1=ахг и xi+i=aXi. Отсюда получаем, что xr+1=xi+) и, следовательно, для всех п~^г хи=х„_г+; mod т. (2.40) Значит, при nz&i последовательность хп становится периодической с пе- риодом длины г—I. При 1=0 последовательность является периодической с са- мого начала (а°=1) и цикл, определенный^по (2.40), содержит все возможные значения хп, соответствующие заданным акт. Условия, при которых это происходит, даются теоремой Эйлера. Теорема 2.3. Если (а, т) = 1, то a<P<m> = 1 mod т. (2.41) Теорему легко доказать, если воспользоваться перестановкой а-п по моду- лю т из <р(ш) чисел п, взаимно-простых с т. Так как (n, т) = 1, то (а-п, т) = 1 и перестановка пробегает полную систему вычетов, взаимно-прос- тых с т. Таким образом, П п= П ап=ач>('") П n mod щ. (2.42) (п, т)=1 (п, (п, т)—\ Так как все п взаимно-просты с т, то их произведение также взаимно- просто с т. Сокращая обе части сравнения (2.42) иа это произведение, полу- чим требуемое соотношение (2.41). Если т=р простое, то (а, р) —1 в случае, когда а не делится на р, -и тогда <р(р)=р—1. В этом случае из теоремы Эйлера следует теорема- Ферма. Теорема 2.4. Если р — простое число, то для любого целого а аР~*= 1 mod р (2.43) или a₽=amodp. (2.44) Теоремы 2.3 и 2.4 дают другой метод решения линейных сравнений в слу- чае, когда (а, т) = 1. Рассмотрим сравнение ах=с mod т. (2.45) Известно, что если (а, т) = 1, то это сравнение всегда имеет единственное решение: x=ca'4>'m'~1 mod т (2.46) или при т=р х=сп₽-2 mod т. (2.47) Интересным применением теоремы Эйлера служит нахождение числа по его остаткам в ситуации, описываемой китайской теоремой об остатках. Эта тео- рема утверждает, что если М разлагается в произведение k взаимно-простых чисел mi, то вычет х по модулю М может быть восстановлен по его остат- кам г.-: х=г, mod mt. Одной из трудностей применения китайской теоремы об остатках является необходимость вычисления обратных 7\ по модулю mi. Эту трудность легко преодолеть, если воспользоваться теоремой Эйлера. Можно написать представление для х в виде х= S (Mimi) n mod М. (2.48) i=l Формулу (2.48) можно получить, если учесть, что (M/mj)4>(ropE=0 mod mi для z=/=j и (M/ffij)4>(mj ) =11 mod mt по теореме Эйлера. .
Таким образом, теорему Эйлера можно использовать для решения срав- нений и с ее помощью определить понятие показатель (или порядок, степень) целого числа по данному модулю. Мы уже видели, что последовательность Хп==ап modm периодическая с периодом г—I, начиная с i-ro знамения. Если аг=1 для некоторого г, то последова1тельиость периодическая с самого начала, так как Xos,l. Если г — наименьшее 'положительное .целое, такое, что аг = s 1 mod m, то последовательность ап периодическая с периодом г. Найдем теперь максимально возможное значение г для заданного пг. По теореме Эйлера из (а, т) = 1 следует r=q>(m). Если (a, m)=d=/=l, то (a/d, m/d) = l и ri—fp(m/d). Так как cp(m/rf) <<р(т), то период г максимален при (а> = Элемент g, порождающий циклическую последовательность длиной <р(т), называется первообразным корнем, элемент g, порождающий более ко- роткий цикл длиной г<<р(ш) — корнем из единицы степени г по модулю т. В дальнейшем корни из единицы будем называть просто корнями. Наименьшее число г, для которого c'sl mod т, называется показателем, которому принад- лежит g. Рассмотрим вопросы о числе корней данной степени и о способе их отыскания. Имеет место следующая теорема. Теорема 2.5. Если g — корень степени г по модулю пг, то числа g°, gl, ... gT~l попарно-несравнимы по модулю т. Действительно, пусть gr\ = gri mod т для гг<Г1<г. Тогда получаем I mod пг. Однако это невозможно, так как 0</т—г2<г, а г, по опре- делению, наименьшее из чисел, для которых g'sl. Теорема 2.6. Если (g, пг) = 1 и gb^ 1 mod пг, то показатель числа г де- лит Ь. Если gb= 1 mod пг, то m[gb—1. Пусть г — показатель числа g. Это озна- чает, что г — наименьшее число, для которого gr=l. Так как mlg1-—1, то m|gd—1, где d=(r, b). Так как d — НОД г и Ъ, то d^r. Но d не может быть меньше г по определению г. Значит, r=d и г|'6. Теорема 2.7. Если (g, т)—,1, то показатель г числа g делит <р(т). Эта теорема непосредственно следует из предыдущей и теоремы Эйлера, так как £Ф<т>=,1, если (g, т) = 1. Можно показать, что первообразные по модулю пг корни существуют лишь при т=рс и т=2рс, где р — нечетное простое число. Если р=2, то перво- образные корни существуют лишь .при т=2 и т=4. Если т=р, где р — не- четное простое, то 'Следующая теорема, принадлежащая Гауссу, указывает число корней данной степени. Теорема 2.8. Если г| (р—1), где р — нечетное простое, то имеется в точ- ности <р(г) (попарно-иеарсвнимых корней степени г по модулю р. Пусть g имеет показатель г по модулю р. В силу теоремы 2.5 g°, g', ... gr~' — попарно-несравнимые по модулю р числа, удовлетворяющие урав- нению xr= 1 mod р. Следовательно, gn — периодическая последовательность по модулю р с периодом г. Тогда при (b, г) = 1 gbn mod р — перестановка после- довательности g". Если (Ь, г)=^1, то последовательность bn mod г содержит повторяющиеся члены и число gb имеет показатель, 'меньший г. Таким обра- ** Рассуждения в этом абзаце некорректны. Из {а. т) = 1, конечно, ие сле- дует, что г =.порядок a—tp(m), например, при пг=7 а=4, г=3, тогда как Ч)(т)=6. В общем случае можно лишь утверждать, что rsg-fp(m) для заданно- г° а, (а, т) = 1. Равенство r=<p(m) будет выполняться лишь для первообразных корией а по .модулю т. — Прим, перев.
зом, для любого г либо нет корней степени г, либо их в точности <р(г). Так как каждое число из множества {1, 2, р—1} принадлежит какому-либо по- казателю, то общее число всех корней для ®сех делителей р—1 в точности равно р—1. Заметим, что в силу (2.35) г[2_Ч> ('•)=₽—!. (2.49) Значит, для каждого делителя г числа р—1 имеется ровно <р (г) корней степени г. Теория первообразных корней достаточно сложная, ее полное изложение можно .найти -в [i2.d-—2.3]. Таблица тервоабразиьн корней для простых модулей, меньших 10000, имеется в [2.5]. Если т = рс или т=2рс, где р — нечетное простое, то первообразные корни имеют показатель г=ф(т). Таким образом, число g будет первообразным корнем, если g^^lmodm для п<г. Более того, если г = 9^1... — разложение г на простые .множители, то каждое число, не являющееся .первообразным корнем, будет корнем некоторой степени rit делящей г. Поэтому первообразный корень удовлетворяет условию g rlq i ^.1 mod m. (2.50) Использование (2.50) существенно упрощает нахождение первообразных корней, как это можно увидеть из следующего примера для т=41. Так как 41 — простое, то г=<р (41) =401=5-23. Прямая попытка узнать, будет ли х первообразным корнем, ведет к вычислению х" mod 41 для n=il, 2, ..., 39 и доказательству того, что х71^ 1 для этих п. Если т. большое, то этот метод быстро становится непрактичным и значительно легче проверить хпФ 1 mod т лишь для п, являющихся делителями <р(т). В нашем случае заметим, что 220= 1, 38=1, 42tlsl, 520= 1. Таким образом, 2,3, 4, б не подходят в качестве первообразных корней. Однако 68=10 и 62Os40 и, следовательно, 6 — перво- образный корень по модулю 4'1. Если первообразный корень g известен, то корень степени г; для любогс г,|г может быть легко найден. Для этого достаточно возвести g в степень г/г,. Более того, если т составное, т=т1-тг... дгь, дав силу китайской теоремы об остатках каждый корень степени г, до модулю т будет также -корнем этой степени и -по модулю mi, m2, —, ms °. Таким образом, эти корни легко найти, если известны первообразные корни по модулю рс и 2рс. Первообразные корни играют важную роль в цифровой обработке сигна- лов. Как будет показано, они используются при определении теоретико-число- вых преобразований. Другим важным приложением п.ер1вообрайны.х корней яв- ляется преобразование ДПФ в круговую корреляцию; это преобразование — важнейший шаг в алгоритме преобразования Винограда,—Фурье. Детально этот вопрос будет .рассматриваться в гл. 5. Здесь мы дадим лишь набросок .метода в простейшем случае р-точечнопо ДПФ, где р —простое: Xk=P% xnWnh, №=ехр(—j2n/p), j = ]/Zj, fe=l, ..., р— I, (2.51) п=0 *> Точнее, имеется в виду следующее: еош m=mitnz — ть. и Si есть вь1‘ чет g по модулю т,, являющийся корнем степени г,- .по .модулю т,, то g есть корень степени г по -модулю т, где г — наименьшее -общее кратное чисел ri, гг,гк- — Прим, перев. 20
и для Й=О р—1 Хо= 2 хп. (2.52) п=0 Показатели и индексы в (2.51) определены по модулю р. Для Л=/=0 и п¥=0 сделаем замену переменных: n=gu mod р, k^gvmodp, и, v=Q, р—2, (2.53) где g — первообразный корень по модую р. Тогда, для (2.51) преобра- зуется в р—2 ^eU+V- (2.54) 8 и=0 8 Эта формула показывает, что главная часть вычисления Хь есть круговая кор- реляция последовательности х^и с последовательностью 117 2.1.4. КВАДРАТИЧНЫЕ ВЫЧЕТЫ Рассмотрим квадратичные вычеты, которые играют роль квадрат- ных корней, определенных в полной системе .вычетов по модулю т. Пусть (а, zn) = l, тогда а называется квадратичным вычетом по модулю т, если сравнение x2sutnodm имеет решение, и квадратичным невычетом по модулю ш, если сравнение не имеет решения. Из китайской теоремы об остатках следует, что а — квадратичный вычет по составному модулю т, если а — квадратичный вычет по каждому из взаим- но-простых модулей, входящий в .разложение т.~ Далее легко показать, что а — квадратичный вычет по модулю рс, где р — нечетное простое тогда и только тогда, когда а — квадратичный вычет по модулю р. Если т=2с и а — нечетное число, то а — квадратичный вычет по модулю 2; кроме того, а — квадратичный вычет по модулю 4 тогда и только тогда, когда asp mod 4, и а — квадратичный вычет по модулю т=2ь при тогда н только тогда, когда as 1 mode. Поэтому можно ограничиться лишь неучением случая не- четного простого р, так как остальные случаи сводятся к этому. Далее, определим число различных квадратичных вычетов для р и- пока- жем, как определять, будет ли число квадратичным вычетом. Докажем сначала две теоремы. Теорема 2.9. Если р — нечетное простое число, то число квадратичных вы- четов по модулю р дается формулой Q(P) = l + (P-l)/2.' (2.55) По определению, а — квадратичный вычет по модулю р, если xzsamod р имеет решение. Для а—0 существует тривиальное решение. Для ач^О заметим, что если х — решение, то и р—х — решение, так как из х2=а mod р следует, что (р~х)2=а. Таким образом, существует не более (р—1)/2 ненулевых квад- ратичных вычетов: I2, 22, ..., [(р—1)/2]2. Если два вычета сравнимы, то имеем *2i=x22modp. (2.56) Однако xi+xz^p—.1, так как xt, хг^-(р—1)/2. Следовательно, xi+xz^O и потому x,=ft. Итак, всего имеется (р— 1)/2 ненулевых квадратичных вычетов. Теорема 2.10. Если р — нечетное простое число, то произведение двух квадратичных вычетов или двух квадратичных невычетов будет квадратичным 21
вычетом. Произведение квадратинного вычета на квадратичный невычет есть квадратичный невычет. Для доказательства теоремы рассмотрим квадратичные вычеты ai, аг, ... и квадратичные -невычеты 6i, b2, ... по модую р. Если x2i=ai, х2г=аг, то (xix2)2=aia2. Более того, так как р простое, то для квадратичного вычета а, перестановка порождает полную систему вычетов для О=Сп<р. Известно, что (р—1)/2 членов ^ага^ — квадратичные вычеты. Так как может быть только (р—1)/2 квадратичных вычетов по модулю р, то все члены, соответ- ствующие — квадратичные невычеты. Аналогично, рассматривая перестановку (bkriy, получим, что (р—1)/2 чле- нов, соответствующих (Ь^а-гУ, будут невычетами, а- (р—1)/2 членов, соответ- ствующих ^bkbiy, будут квадратичными вычетами. Введем теперь удобный символ (а)р), принадлежащий Лежандру. Для (а, р) = 1 и простого нечетного р положим (а \ fl, 6СЛИ а — квадратичный вычет по модулю р, ” |== \ (2.57) р / I—1, если а — квадратичный невычет по модулю р. Легко видеть, что, по определению, (а/р) = 1, если р| (х2—а). Следовательно, (1/P)='l и (а2/р) = 1, так как р| (а2—а2). Для использования символа Лежандра при определении квадратичных вы- четов возьмем критерий, принадлежащий Эйлеру. Приводим его без доказа- тельства. Теорема 2.11. Если р—нечетное простое число и а—целое, то р | [а< V-1 > /2— (а/р) ]. (2.58) По теореме 2.10 символ Лежандра мультипликативен: (ab/p) = (а/р) (b/р). (2.59) Кроме того, символ Лежандра периодичен с периодом р, так как х20^а влечет, очевидно, х20=a+kp. Таким образом, (а+Лр)/р= (а/р). (2.60) Приведем без доказательства еще две теоремы. Теорема 2.12. Если р н q — различные нечетные простые числа, то (р/р)(р/р) = (—1)[<Р-1>/2П(в-1>/21. (2.61) Теорема 2.13. Если р — нечетное простое число, то (2/р) = (—1)(г2-1)/8. (2.62) Теперь мы достаточно вооружены, чтобы быстро определять, будет л-и данное целое а квадратичным вычетом. Рассмотрим, например, случай с р=53. Мы хотим узнать, будет ли а=33 -квадратичным вычетом. Следовательно, нам нужно вычислить (33/53). На первом шаге используем мультипликативность символа Лежандра. Так, (33/53) = (3/53) (11/53) и вычисление (33/53) свелось к вычислению более простых выражений: (3/53) н (11/53). Так как 3 и 53 — нечетные простые, то будем вычислять (3/53) по теореме 2.12 с р=3, р=53. Получим (р—1)/2=1, (р—1)/2=26. Так что (—.1)1<р-*>/гН<«-*>/21 = 1, следова- тельно, (3/53) = (53/3) по (2.61). Используем теперь периодичность символа Лежандра. Так как 53^2 mod 3, то (53/3) = (2/3) и, наконец, (3/53) = (2/3) ——1 по (2.62). Символ (11/53) вычисляется аналогично: (11/53) = (53/11) пр (2.61), (11/53) = (9/11) по (2.60), (9/11).= (3/11) (З/1'.l) по (2.59). 22
Таким образом, (11/53) = !. Так как мы уже нашли (3/53)=—1, то (33/53) = = (3/53) (11/53) =—1, т. е. 33 — квадратичный невычет ио модулю 53. Это зна- чит, что сравнение х2=33 mod 53 не имеет решений. 2.1.5. ЧИСЛА МЕРСЕННА И ФЕРМА Числа Мерсенна имеют вид МР=2₽—1, (2.63) где р — нечетное простое число. Числа Ферма имеют вид Л=22< +1, (2.64) где t — положительное целое число. Числа Мерсенна и Ферма находят широкое применение в цифровой обра- ботке сигналов, потому что .арифметические операции по модулю этих чисел сравнительно легко реализуются аппаратурно. Пусть а — целое число, имеющее двоичное представление: в—1 а= 2^*2*, «4^(0, О- (2.65) Вычисления по модулю числа Мерсенна Мр сильно упрощаются, так как 2P=lmodMj, и наименьший неотрицательный вычет а по модулю Мр можно найти без деления, используя выражение р—1 а= 2 (2аг+ьр)2\ (2.66) 1=0 h где i .в (2.65) заменено на i+kp. Когда два числа а и Ь, определенные по модулю Мр, складываются, то получающийся (р+1)-битовый результат ре- дуцируется по модулю Мр к р битам за счет прибавления последнего переноса единицы из самого старшего разряда к самому младшему. Таким образом, операции >по модулю Мр аналогичны обычным операциям в дополнительном коде. Операции по модулю чисел Ферма реализуются труднее, но все-таки легче по сравнению с другими модулями. В гл. 8 будет показано, что числа Мерсенна и Ферма играют важную роль в теоретико-числовых преобразованиях. Здесь приведем некоторые свой- ства этих чисел, которые понадобятся в гл. 8. Особенно важны показатели корней по модулю чисел Мерсенна и Ферма, так как от них зависит длина преобразования. Начнем с чисел Мерсенна и заметим, что некоторые из них, например М3=7, простые, другие, например Ми, составные. Для составных чисел Мёр- сенна справедлива следующая теорема. Теорема 2.14. Каждый простой делитель q числа Мерсенна Мр имеет вид q=2kp+l. (2.67) По определению, <?|2?—1. Из теоремы Ферма (см. теорему 2.4) следует также, что р|2’-1—1. Так как 2?=1 и 2’~*=11 mod р, то 2d=lmodp, где d=(p, q—1). Далее, условие 2d= 1 mod q влечет d=/=l, так как q=£A. Поскольку р — простое, то p\q—1 и потому p=sp+l. Число s не может быть нечетным, так как нечетно q, и потому s—2k, q=2ikp+l. Из этой теоремы непосредственно (следует другая. Теорема 2.15. Все числа Мерсенна взаимно-простые. 23
Если бы два числа Мерсенна AfPi и Мр* имели общий простой делитель, то -в силу теоремы 2.Г4 мы имели бы q=2kipl + l—'2k2p2+l. Так как Pi, р2 и q — простые числа, то это равенство возможно лишь в случае, когда Р1=рг, т. е. Л1г>1=Л1Р2, Согласно теореме 2.14, каждый делитель q составного числа Мерсенна Л1Р равен 2Лр+1 и, следовательно, 2p\q—1. Таким образом, для составного Мр всегда найдутся корни с показателями р и 2р по модулю Мр. Если Мр — простое число, то первообразные корни имеют показатель ф(2я—1). Следова- тельно, каждому корню должен принадлежать показатель d, такой, что d|2?—2. Ясно, что 2|2т—2 и любой другой делитель должен быть нечетным. По тео- реме Ферма р|2г—2. Более того, произведение трех последовательных целых всегда делится на 3, 3|(2<?“1)/2——1) и, следовательно, 3| (2г—2). Значит, каждое простое число Мерсенна имеет корим, показатели которых делят 6р. В частности, 2 и —2 — корни, принадлежащие показателю р и 2р соответственно. Кроме того, —1 — корень с показателем 2 для любого числа Мерсенна -и не существует корней с показателем 4. Поэтому —il есть квадратичный невычет для любого числа Мерсенна. Рассмотрим теперь числа Ферма Ft. Первые пять чисел Ферма (t=0, ... ..., 4) — простые. Все остальные известные числа Ферма — составные. Приве- дем интересные свойства чисел Ферма. Теорема 2.16. Все числа Ферма взаимно-простые. Для доказательства этого заметим, что Fz=F0Fi+2 и F3=F0FiFz+2. Пред- положим, что Л=ЕоЕ1...Л-1+2. (2.68) Если умножим обе части равенства на Ft, то получим F2t=F0Fi... Ft+2Ft. (2.69) По определению чисел Ферма, Et+i=22<^'1 +l=i(Et—1)г+1. Таким образом, Ft+i=F2t—2Ft+2. (2.70) После подстановки полученного в (2.69) значения для F2t ® (2.70) имеем Ft+l^FBFl...Ft+2. (2.71) По индукции (2.68) доказано. Предположим теперь, что два числа Ферма не взаимно-простые. Тогда (Fm, Fk)\=d, d=£l. Из (2.71) следует, что d|2. Но это невозможно, так как все числа Ферма нечетные и, следовательно, d—I. Теорема 2.17. 3 — это первообразный корень для всех простых чисел Ферма. Каждый первообразный корень g должен быть квадратичным невычетом, так как в противном случае некоторые степени g совпадали бы. По теоре- ме 2.9 число Q(Ft) различных квадратичный невычетов равно 22t-1. Из тео- ремы 2.8 следует также, что имеется fp(Ft—4) =22* -* .различных первообразных корней по модулю Ft. Так как <2(Г*)=ф(Е;—1), то все квадратичные невы- четы суть первообразные корни и достаточно показать, что 3 — квадратичный невычет по модулю любого числа Ферма. Прямой проверкой можно установить, что 3 — первообразный корень по .модулю Ft = 5, так как 3 принадлежит по- казателю 4 по модулю 5. Теперь индукцией покажем, что Ft=5 mod 12 24 (2.72)
для любого числа Ft. Действительно, если Ft=12A+5, то Ft+i=(Ft—1)2+Г= = (12й+4)2+1=!12Й!+5. Для того чтобы выяснить, будет ли 3 квадратичным невычетом, вычислим символ Лежандра [3/(12й+5)]. Последовательно полу- чаем [3/(2й + 5)] = [(12fe + 5)/3] = (2/3) =—1. Итак, 3 — квадратичный невычет по модулю Ft, следовательно, 3 — первообразный корень по этому же модулю. Теорема 2.18. Каждый простой делитель q составного числа Ферма Ft имеет вид: <7=Л2‘+2+|1. Доказательство этой теоремы можно найти в [2.6]. В качестве ее немед- ленного следствия получаем, что для каждого числа Ферма Ft существуют первообразные корни с показателями d=2'“, n^.t+2. Целые 2 и —2 есть, оче- видно, корни с показателем 2t+1. Простой корень с показателем 2,+2 может быть найден из соотношения [22«-2(1 — 22‘ *)]2=—2modFi. (2.73) Следовательно, в кольце вычетов по модулю Ft 22<~2 (22<~’+1) конгруэнт- но —2 и, значит, есть корень с показателем 2,+2. Так как (22*-’)2= s—1 mod Ft, то —1 есть квадратичный вычет по модулю Ft. Это означает, что j= —1 — вещественный вычет в кольце целых чисел по модулю Ft, j^22<—1. Это свойство будет использовано в гл. 8 при вычислении комплекс- ных сверток. Числа Мерсенна и Ферма имеют много других интересных свойств, не рас- смотренных здесь. Некоторые из них можно найти в [2.7]. 2.2. ПОЛИНОМИАЛЬНАЯ АЛГЕБРА Полиномиальная алгебра играет важную роль в цифровой обра- ботке сигналов, так как свертки и в какой-то мере ДПФ могут быть описаны в терминах операций над полиномами. Рассмотрим, например, простую сверт- ку yi двух .последовательностей hn и хт из N членов: N—1 yi— X hnXl-n, 1=0, ..., 2N—2. (2.74) п=0 Предположим теперь, что N элементов hn и хт представляются как поли- номы H(z) и X(z) 'Степени N—1 от z, где z — полиномиальная переменная. Итак, N—1 И(2) = 2 (2.75) п=0 N— 1 X(z)= 2 xmzm. (2.76) пг—О Если перемножить H(z) и X(z), то получится полином Y(z) степени 2N—2. Таким образом, 2N—2 Y(z)=H(z)X(z) = 2 a‘z‘- (2-77) 1=0 При умножении полиномов каждый коэффициент щ получается суммиро- ванием всех произведений hnxm, таких, что п+т=1. Следовательно, т=1 п и 25
N—1 ai=yi= 2 hnx^n, (2.78) n=0 N—2 T(z) = 2 yiz'. (2.79) 1=0 Это означает, что свертка двух последовательностей может рассматривать- ся как произведение двух полиномов. Более того, если свертка (2.74) цикли- ческая, то -индексы I, tn и п определены по модулю N. Так что в JV-точечной циклической свертке N=0. Из этого следует, что zN=l и тогда циклическая свертка может рассматриваться как произведение двух полиномов по модулю полинома zN—il: У(г) =H(z)X(z) mod (zw—1). (2.80) Таким образом, для того чтобы .работать с циклической сверткой анали- тически, нужно определить операции, в которых множества чисел заменены множествами полиномов. Эти операции очень похожи на операции над целыми числами н могут обсуждаться с единой точки зрения, основанной на понятиях группы, .кольца и поля. Ниже будет дано лишь беглое изложение этих понятий. Более подробно с этими понятиями читатель может ознакомиться в любом курсе современной алгебры, а также в [2.8]. 2.2.1. ГРУППЫ Рассмотрим множество А из N элементов а, Ь, с,-... Эти элементы могут быть, например, числами или полиномами. Предположим, что на. эле- ментах этого множества .определена некоторая операция, которую обозначим символом ф . Она может быть весьма общей природы, например, сложением нли логической операцией дизъюнкции; требуется лишь, чтобы результат опе- рации ф , примененной к элементам а и Ь множества А, был снова элементом множества Л: с=а®6, а, Ь, с^А. (2.81) Тогда каждое множество А с заданной на нем операцией называется груп- пой, если выполняются следующие условия: 1) ассоциативность: (афЛ) ®с=аф (Ь фс); 2) существование нейтрального элемента: существует элемент ееЛ, такой, что для каждого элемента аеЛ ефа=а; 3) существование симметричного элемента: для любого элемента аеЛ су- ществует элемент а, такой, что сфа=а фа=е. Бели операция, заданная на Л, коммутативна: а ф 6=6 фа, то группа на- зывается абелевой. Порядком группы называется число элементов этой группы. Рассмотрим группы с конечным числом элементов и образуем последова- тельно: а, а фа, афаф а, ... Каждый член этой последовательности — элемент группы. Так как группа конечна, то последовательность необходимо будет пе- риодическая с периодом г. Это число г называется порядком элемента а. Если порядок элемента г совпадает с порядком группы, то все элементы группы порождаются элементом а с помощью групповой операции: а, афа, ... В этом случае а называется образующим группы, а сама группа — циклической. Для иллюстрации этих понятий рассмотрим множество А из N целых чи- сел 0, 1, ..., N—1. В качестве операции на А возьмем сложение по модулю N: 26
a+b~cmod N, a, b, c^A. Тогда A •— абелева птруппа вычетов по модулю N. Эта группа циклическая, так как 1 — .порождающий элемент этой группы. Рассмотрим теперь множество В из N—1 чисел (1, 2 N—1). Вместо сло- жения по модулю Л' в В в качестве операции выберем умножение по модулю JV. Вообще говоря, В не будет группой, так как некоторые элементы не имеют симметричного (обратного) элемента. Например, если N=G, то только 1 и 5 имеют обратные элементы. Поэтому .множество {I, 2, 3, 4, 5} не будет группой по умножению с модулем 6. Однако, если N — простое число, то В -— цикли- ческая группа. Например, .пусть М=5, тогда обратными для 1, 2, 3, 4 будут элементы 1, 3, 2, 4 соответственно. Следовательно, В={1, 2, 3, 4} — группа по умножению с модулем 5. Можно показать, что группа из N целых чисел (9, 1, 2, ..., N—1) со сложением по модулю N имеет ту же самую структуру, что и группа из N чисел (1, 2, ..., Л') с умножением по модулю N+1, если М+1 — простое число. Такое отношение между двумя группами называется изоморфизмом. 2.2.2. КОЛЬЦА И ПОЛЯ Множество А с двумя операциями ф и ® называется кольцом, если .выполнены следующие условия: 1) (А ф) — абелева группа с нулевым элементом 0; 2) ® — ассоциативная операция, т. е. (а®6) ®с=а® (6®с); 3) операция ® дистрибутивна относительно операции ф : а® (Ь ф с) = = (а®6) ф(а®с), (Ь @с)®а= (Ь®с) ф (с®а). Кольцо называется коммутативным, если ® — коммутативная операция. Кольцо называется кольцом с единицей (унитарным кольцом), если существует нейтральный элемент и (единица) для операции ® (а®и=а). Легко установить, что множество целых чисел .вместе с операциями сло- жения и умножения образует кольцо. Если в кольце для каждого элемента а=+0 существует обратный относи- тельно операции ® элемент а (а®а=и), то кольцо называется полем. В част- ности, множество целых чисел 0, 1, , р—1 с операциями сложения и умно- жения по модулю простого р является полем. Это поле называется полем Галуа и обозначается GF(p). Приведем теперь некоторые результаты, касающиеся полей. Теорема 2.19. Если а, Ь, с — элементы поля и то условие а®с= = Ь®с влечет а=Ь. Пусть а®с=6®с. Так как с=/=0, то для с в поле существует обратный элемент с (с® с—и). Умножая обе части равенства на с, получим: (а®с)®с= = (Ь®с)®с, откуда а--а® и—а® (с® с) —Ь® (с®с) ='Ъ®и=Ь. Таким образом, а—Ь. Пусть S — множество всех ненулевых элементов конечного поля 5= ={ai, ..., ап}. Тогда из теоремы 2.19 следует, что для любого а, последова- тельность аг®О1, ..., а,®аи состоит из попарно-различных элементов и, значит, образует некоторую перестановку элементов множества S. Это — обобщение понятия перестановки чисел, определенное выше для поля вычетов по модулю простого числа р. Можно показать, что множество S ненулевых элементов конечного поля будет циклической группой по умножению и, следовательно, в поле существует первообразный корень g, порождающий множество S. 27
Другим важным свойством конечных полей является то, что каждое ко- нечное .поле .состоит в точности из pd элементов, где р — простое число. Такое поле обозначается GF(pd). В оставшейся части главы (будем заниматься лишь кольцами и полями полиномов. При этом операции фи® будут представлять собой модулярные операции сложения и умножения полиномов соответственно. Для упрощения будем пользоваться обычными символами алгебраических операций по модулю некоторого полинома. Введем сначала (понятие вычета полинома и сформулируем китайскую теорему об остатках. 2.2.3. ВЫЧЕТЫ ПОЛИНОМОВ Теория полиномиальных сравнений во многом аналогична теории целочисленных сравнений, она. также основана на понятии делимости поли- номов. Предположим, что все коэффициенты полиномов берутся из фиксиро- ванного поля, что обеспечивает выполнимость всех необходимых условий для арифметических операций над коэффициентами. Начнем с основных определе- ний. Полином P(z) делит полином H(z), если существует поливом D(z), такой, что //(z) =P(z)£)(z). Полином /Z (z) называется неприводимым, если он не имеет нетривиальных делителей (степень которых либо нуль, либо равна сте- пени самого полинома). Если P(z) не является делителем H(z), то в резуль- тате деления H(z) на P(z) получается остаток R(z): H(z).= P(z)D(z)+R(z), (2.82) где степень R(z) меньше степени P(z). Такое представление единственно. Все полиномы, дающие при делении на. P(z) один и тот же остаток, называются сравнимыми по модулю P(z). Это отношение записывается в виде Р (z) = Н (z) mod Р (z). (2.83) При работе с полиномами нас в основном 'интересуют их коэффициенты. Поэтому, представляя множество из N элементов ао, ai..... ан-t в виде поли- нома H(z) =aD+aiz+ ... +ак-1гк~1, используем очень удобный (метод для ука- зания расположения элемента щ по отношению к другим элементам этого множества. Это обстоятельство очень важно в цифровой обработке сигналов, так как каждый полиномиальный коэффициент представляет отсчет непрерыв- ного’ сигнала и тем самым определяет его положение и значение. Возвращаясь к сравнению (2.83), отметим, что два полинома- отличаю- щиеся лишь постоянным множителем, сравнимы между собой1’. Сравнение (2.83) определяет класс эквивалентности, называемый классом полиномиальных вычетов по модулю полинома P(z). Легко непосредственно установить, что множество полиномов с операциями сложения и умножения по модулю P(z) образует кольцо, которое будет полем, если P(z) — неприводимый многочлен. Если P(z) не является неприводимым, то он разлагается в произведение степеней -неприводимых полиномов. Это разложение зависит от выбранного поля коэффициентов; так, z2+l неприводим над полем рациональных чисел, но разлагается над полем комплексных чисел: z2+l=(z—j) (z+j), где j= *> Это, конечно, не так. Например, полимомы х и 2х не сравнимы по мо- дулю х2. — Прим, перев. 28
Предположим теперь, что P(z) есть произведение d полиномов без общих множителей (такие полиномы называются взаимно-простыми по аналогии со взаимно-простыми числами): Р(г) = Д Pt(z). (2.84) Так' как каждый полином Pi(z) взаимно-прост с остальными, то он имеет обратный по .модулю любого отличного от него полинома из разложения (2.84). Это означает, что .можно распространить китайскую теорему об остатках и на кольцо полиномов по модулю P(z). Следовательно, каждый полином H(z) из этого кольца однозначно определяется своими .вычетами Я; (г) по модулям Pt(z). Китайская теорема об остатках для полиномов дает d H(z)*s 2 Sj (z) Ht (z) mod P (z), i=i где __ [ 0 .mod Pi(z), i=#u; ) I 1 mo&Pu(z) d Sv(z)=Tu(z) П Pt(z), i=l - ij^u где Tu(z) определяется нз формулы d Tu(z) П Pi(z)= 1 mod Pu(z). i=l ij^u (2.85) (2.86) (2.87) (2.88) Заметим, что из (2.88) вытекает Tu(z) ^feOmod Pu(z) В силу этого вычеты Su(z) по модулям Pi(z), i=l, .... d, определяются согласно (2.86). Следова- тельно, вычет H(z) по модулю Pi{z), получаемый .по (2.85), будет равен Прн вычислении Н (г) по вычетам Hi (z),. согласно китайской теореме об остатках, необходимо вычислить полиномы Si(z), i—1, .... d. Для заданного полинома' P(z) эти полиномы могут быть вычислены раз и навсегда по (2.87). Наиболее трудная часть в вычислении S,-(z) состоит в нахождении обратного полинома Tt(z), определенного ,в (2.88). Это может быть сделано с помощью алгоритма Евклида, описанного в разд. 2.1, если вместо чисел употреблять многочлены. Многочлены S,(z) могут .быть вычислены очень просто с помощью специальных программ, оперирующих с математическими объектами [2.9, 2.10]. 2.2.4. СВЕРТКИ И АЛГОРИТМЫ УМНОЖЕНИЯ ПОЛИНОМОВ В ПОЛИНОМИАЛЬНОЙ АЛГЕБРЕ Китайская теорема об остатках играет центральную роль при вы- числении сверток, так как она позволяет заменять вычисление длинной свертки на серию вычислений коротких сверток. Покажем, как китайская теорема об остатках позволяет установить нижнюю границу для числа умножений, необ- ходимых при вычеслении свертки и произведений полиномов. В случае аперио- дической свертки эта граница достигается с помощью алгоритма Тоома Кука [2.1 Ц. Теорема 2.20. Апериодическая свертка двух последовательностей с длинами Li и Ь2 вычисляется с L1+L2—1 .умножениями. 29
В .полиномиальных обозначениях апериодическая свертка yi двух после- довательностей Ли и хт определяется формулами H(z) = 2 Лиа« (2.89) п='О Ьг—1 Х(г) = 2 xmz™, (2.90) т=0 i.i4-£*2—2 Y(z)=H(z)X(z) = 2 У‘г‘- (2.91) 1=0 Так как У(г) имеет степень Li+Lz—2, то он совпадает оо своим вычетом по модулю полинома P(z) степени Li+iLz—1: Y(z)=H(z)X(z) mod Р (z). (2.92) Предположим, что P(z) разлагается на взаимночпростые линейные множи- тели над полем коэффициентов F: Z.1+I.2 1 P(z)= П (z-ai), (2.93) i=l где at есть Li+i-г—1 различных корней P(z) в поле F. Поскольку P(z) раз- лагается в произведение взаимно-простых полиномов, можем применять китай- скую теорему об остатках для вычисления произведения (2.92). Для этого сначала нужно найти вычеты Ut(z) и Xt(z) по модулю (z—а,); затем, вы- числив Li + Z.2—1 произведений Hi(z)Xi(z), восстановить Y(z) по полученным вычетам. Заметим, что нахождение этих вычетов по модулю z—а, равносильно подстановке щ вместо z в H(z) и X(z). Таким образом, вычеты ЯДг) и Xt (z) суть просто скаляры H(ai) и Х(сц) из поля F. Поэтому произведение полино- мов свелось к Lt+Lz—1 скалярным умножениям. Это доказывает сформули- рованную теорему. Теорема 2.20 дает не только нижнюю границу для числа умножений, но и указывает практический алгоритм для ее достижения *>. Однако эта граница касается лишь общих умножений, т. е. тех, в которых множители зависят толь- ко от исходных данных. Граница не включает умножения на постоянные мно- жители, встречающиеся в приведении полиномов по модулю z—а, и в восста- новлении произведения по китайской теореме об остатках. Для коротких сверток i-i+iz—1 различных элементов а, могут быть выбраны небольшими целыми, например, 0, +1, —1, так что эти умножения либо тривиальны, либо сводятся к нескольким сложениям. Для длинных сверток щ должны выбираться среди большого множества различных значений. В этом случае некоторые Щ уже *> Теорема 2.20 дает оценку (весьма приблизительную) для числа умно- жений, требуемых прн вычислении полиномиального произведения по модулю многочлена Р(х), разлагающегося на линейные множители в поле коэффи- циентов. Автор все время говорит о нижней оценке, хотя и формулировка, и доказательство теоремы определенно говорят о том, что устанавливаемая оцен- ка именно верхняя. Теорема 2.20 утверждает, что есть способ вычисления полиномиального произведения с Li+L2—1 умножением, тогда как для доказа- тельства того, что эта оценка нижняя, требуется показать, что любой способ вычисления полиномиального произведения требует не менее i-i+Lz—1 умно- жений. Нахождение нижних оценок поэтому обычно представляет собой очень трудную математическую проблему и требует использования весьма сильных алгебраических средств. — Прим, перев. 30
не будут малыми, так что умножения в приведении по модулю и обратном восстановления не могут игнорироваться. Это означает, что алгоритм Тоома — Кука имеет практическую ценность лишь для коротких сверток. Для длинных сверток лучшие алгоритмы получаются, если попользовать преобразование, тес- но связанное, как будет показано, с алгоритмом Тоома — Кука и интерполяцией Лагранжа. Полином У (г) восстанавливается, согласно китайской теореме об остатках, по Li+.L2—1 скалярам У(а,), получающимся подстановкой at в У(г) вместо г. Поэтому алгоритм Тоома — Кука представляет собой интерполяционный процесс [2.9]. Так как поле коэффициентов F и интерполяционные узлы могут выби- раться произвольно, то в качестве а, выберем набор из £.1 + £,2—1 последова- тельных степеней числа W, считая их попарно различными в поле F. В этом случае ai = Wi и приведение по модулю (г—а,) выражается следующим об- разом: Li—1 Я(1Р) = 2 hiWin, 1=0, .... L1+Z.Z—2. (2.94) п=0 Аналогичные выражения получаются и для X (№'•). Таким образом, в ре- зультате специального выбора алгоритм Тоома — Кука сводится к вычислению периодических сверток с помощью преобразований, имеющих структуру ДПФ В частности, если 1Г=2 и F — поле вычетов по модулю числа Мерсенна Мр (Мр='2’>—1, р — простое) или числа Ферма Ft (Ft=2v+], v=2‘), то алго- ритм Тоома—Кука определяет преобразование Мерсенна или Ферма (см. гл. 8). Если №=ехр[—j 2n/(L1+Z.z—1)], то алгоритм Тоома — Кука может рассмат- риваться как вычисление апериодической свертки с помощью ДПФ. В этом случае P(z) имеет вид Lt+L2-1 Р(г) = П (z—W'<)=zM+4-«—1. (2.95) i=0 Следовательно, если узлы интерполяции выбираются комплексными корнями из 1, то алгоритм Тоома — Кука эквивалентен вычислению с помощью ДПФ кру- говой свертки двух входных последовательностей длиной Li+L2—1, получаю- щихся добавлением £.2—1 нулей к hn и Lt—-1 нулей к хт. Этот метод вычис- ления будет подробно рассмотрен в гл. 3 под названием перекрытие с сумми- рованием. Оценка сложности вычисления сверток была распространена Виноградом [2.12] иа произведение полиномов по полиномиальному модулю P(z). Теорема 2.21. Произведение полиномов Y(z)=H(z)X(z) вычисляется с ис- пользованием (2D—d) общих умножений, где D — степень P(z), ad — число неприводимых множителей Pi (г) полинома Р(г) над полем F. Теорема доказывается с помощью китайской теоремы об остатках. Y (г) вычисляется последовательно: сначала вычисляются вычеты Xt(z) и Hi(z) по неприводимым множителям Pi (г) полинома Р(г), затем находятся d произве- дений Yi(z)=Hi(z)Xi(z) и, наконец, по цолученным произведениям Yt(z) вос- станавливается полное произведение Y(z). Как и выше, при вычислении выче тов и восстановлении не учитываются умножения на постоянные множители (скаляры). Таким образом, учитываются лишь d общих умножений, дающих полиномы Yi (z) mod Pi (г) степени D,. Так как Р(г) задается разложением 31
d P(z)= П Pi(z), (2.96) i=l TO d D= S Di. (2.97) i=l Каждое произведение Y,(z) получается как апериодическая свертка двух последовательностей из £>; членов с последующим приведением по модулю P.-(z): Yi (г) If, (г) Xi (г) mod Pi(z). (2.98) Так как по теореме 2.20 УДг) вычисляется с 2Di—1 умножениями, то d общее число умножений будет равно £ (2£>j—1)—2£>—d. Теорема доказана. i=l Известно, что ЛАточечная циклическая свертка может рассматриваться как полиномиальное произведение по модую zN—1. Если F — поле комплексных чисел, то zN—1 .разлагается в произведение .N линейных полиномов г—W’, где V7=exp(—j.2n/A'), j= J/—1. В этом случае метод вычисления, даваемый тео- ремой 2.21, эквивалентен ДПФ и требует всего N умножений. К сожалению, W‘ — комплексные иррациональные числа, поэтому умножения на скаляры при вычислении ДПФ также должны учитываться. Если F — поле рациональных чисел, то zN—1 разлагается на неприводи- мые полиномы с рациональными коэффициентами. Эти полиномы называются циклогомическими или полиномами деления круга [2.1]. Число d различных циклотомичеоких полиномов, делящих гк-—1, равно числу делителей N. Таким образом, имеется циклотомический полином степени Dt для любого делителя Nt числа N и Di, i= l, ..., как это показано в [2.1], равно Di = q(Ni), (2.99) где <p(A\) — функция Эйлера (см. подразд. 2.1,3). Следовательно, для циклической свертки с рациональными коэффициентами теорема 2.21 принимает вид: Теорема 2.22. ААточечная циклическая свертка вычисляется с 2N—d умно- жениями, где d — число делителей N. Теоремы 2.21 и 2.22 дают эффективный способ вычисления циклических сверток, так как коэффициенты циклотомичеоких полиномов — целые числа, равные, как иравило, 0, 1, —1, за исключением очень больших циклотомичеоких полиномов. Если N — простое, то, например, zN—l = (z—il) (2л'~*+гл'“2+... ... +z+l). Поэтому при -приведении по модулю и обратном восстановлении можно обойтись небольшим числом сложений и обычно без умножений. Для иллюстрации этой вычислительной процедуры обратимся к 3-точечной свертке. Так как 3 — простое, то г3—4=^(г—1) (z2+z+1). Приведение Х(г) по мо- дулю z—1 может быть выполнено за два сложения простой подстановкой 1 в Х(г) вместо г. Для приведения Х(г) по модулю z2+z+l заметим, что г2=—z—1. Поэтому приведение также выполняется за два сложения вычи- танием коэффициента при г2 из коэффициентов при г° и г*. Если полином И (г) фиксирован, то восстановление может рассматриваться как обращение операции приведения и может быть выполнено за 4 сложения. Более того, умножение по модулю г—1 есть просто умножение па скаляр, а полиномиаль- 32
ное умножение по модулю z2+z+l выполняется за 3 умножения и 3 сложе- ния, как будет показано в подразд. 3.7..2. Таким образом, при фиксированном Н(г) 3-точечная циклическая свертка вычисляется за 4 умножения и 11 сло- жений вместо 9 и 6 соответственно при прямом вычислении. В гл. 3 будет показано, что систематическое применение методов, основанных на теоремах 2.20—2.22, позволяет создавать весьма эффективные алгоритмы вычисления сверток. Глава 3 АЛГОРИТМЫ БЫСТРОЙ СВЕРТКИ Основная цель главы — изучить быстрые алгоритмы суммиро- вания смещенных (лаговых) произведений. Такие задачи часто встречаются в физике и обычно связаны с вычислениями в цифро- вой фильтрации сигналов, свертками и корреляциями. Корреляции отличаются от сверток лишь направлением одной из входных по- следовательностей. Поэтому, хотя результаты этой главы относят- ся к сверткам, они тем не менее приложимы и к корреляциям. Прямое вычисление свертки двух Af-членных последовательно- стей требует порядка № арифметических операций. Для больших сверток число таких операций становится очень большим и возникает необходимость в разработке более быстрых, эффективных методов вычислений. Один из наиболее часто упот- ребляемых способов ускорения вычислений сверток основан на быстром преобразовании Фурье (БПФ) и будет рассмотрен в гл. 4. При этом способе число необходимых операций становится поряд- ка N log N, где N — степень 2. Скорость вычислений, основанных на БПФ-алгоритме, весьма высока и этот метод — один из самых распространенных для быстрого вычисления сверток. Однако БПФ имеет ряд недостатков, связанных в основном с использованием трансцендентных функций (синуса и косинуса) и комплексной арифметики даже в случаях, когда свертка вещественная. Для того чтобы избавиться от этих недостатков, были предло- жены другие быстрые алгоритмы. Число таких алгоритмов очень велико, и рассмотреть их более или менее подробно здесь нет воз- можности. Однако многие алгоритмы, на вид отличающиеся друг от друга, по существу идентичны и различаются лишь принятым способом описания. В этой главе мы стремимся изложить эти методы с единых ал- гебраических позиций. Показано, что большинство алгебраических методов сводится к различным формам вложений и приводит вы- числительные затраты к таким же или меньшим, чем при исполь- зовании БПФ, но без недостатков последнего. Затем рассматрива- ются некоторые арифметические методы, применяемые изолиро- ванно или в комбинации с алгебраическими и позволяющие по- лучить значительный выигрыш в эффективности при реализации их на специальных устройствах. 2 Зак. 529 33
3.1. ЦИФРОВАЯ ФИЛЬТРАЦИЯ, ИСПОЛЬЗУЮЩАЯ ЦИКЛИЧЕСКУЮ СВЕРТКУ Большинство быстрых алгоритмов свертки, например ос- нованных на БПФ, применяется только к периодическим функци- ям, и поэтому вычисляют лишь циклические свертки. Однако на практике при цифровой фильтрации приходится чаще иметь дело с непериодической сверткой- yt ограниченной последовательности hn длиной Ni с квазибесконечной последовательностью данных Хт' N,—l yi= 2j hnxi—n. (3-1) n=0 Для того чтобы реализовать преимущества быстрых алгорит- мов циклической свертки при цифровой фильтрации, нужно уметь преобразовывать непериодическую свертку yi в серию циклических сверток. Это можно сделать двумя методами. Первый называется методом перекрытия с суммированием [3.1], второй — перекрытия с накоплением [3.2] (очень похож на первый и дает сравнимые по сложности вычислений результаты). 3.1.1. АЛГОРИТМ ПЕРЕКРЫТИЯ С СУММИРОВАНИЕМ Алгоритм перекрытия с суммированием на первом шаге разбивает входную последовательность хт на v смежных блоков xu+cn2 длиной N2, m = u + vN2, и=0, N2—1 и t» = 0, 1, 2, ... для последовательных блоков. Непериодическая свертка каждого из этих блоков хи+г>1у2 с последовательностью hn дает выходную по- следовательность yvj. из A^i+A/g—1 членов. В полиномиальных обозначениях вычисление этой свертки равносильно нахождению коэффициентов полинома Ув(а), определенного формулой УДг)=/7(г)Х„(а), (3.2) где /Л-1 Д(г)= 2 hnzn, (3.3) п=0 /Л-1 Xv(z) = £ Xu+vN2Zu, (3.4) и=0 2 УДг)= 2 yv,,z‘. (3.5) г=о Так как Yv(z) — полином степени Nj + N2—2, то он может быть представлен вычетом по модулю полинома степени N^N\+N2—1 и, в частности, по модулю zN—1. В этом случае последовательные непериодические свертки yv,i вычисляются как Af-точечные цикли- ческие, N^Ni+N2—1, в которой входные блоки получаются до- бавлением N—Ni нулей в конце ,последовательности hn и N—N2 нулей в конце последовательности xu+vn2 34
Метод перекрытия с суммированием получил свое название благодаря тому обстоятельству, что выход каждого блока пере- крывается со своим смежным блоком в N—N2 отсчетах. Эти пере- крытия выходных отсчетов должны суммироваться, чтобы дать в результате yi. Таким образом, если Л/=М1+М2—1, то при цифровой фильтра- ции вычисляется одна циклическая М-точечная свертка на каждые ^2 выходные отсчета плюс (Afi—1)/(М—М + 1) сложений на каж- дый отсчет. 3.1.2. АЛГОРИТМ ПЕРЕКРЫТИЯ С НАКОПЛЕНИЕМ Алгоритм перекрытия с накоплением разбивает входную после- довательность на v (Перекрывающихся 'блоков хи+«к2 длиной N при m — u-\-vN, u=0,...,N—l, у = 0, 1,2,... для последовательных бло- ков. При этом каждый входной блок имеет длину N, а не N2, как для перекрытия с суммированием, и перекрывается с предшест- вующим блоком в N—N2 отсчетах. Выход цифрового фильтра представляет собой последовательные циклические М-точечные свертки блоков хи+юЛ-2 с блоками длиной N, получающихся в ре- зультате добавления N—Ni нулей к hn. Следовательно, выход каждой циклической свертки можно записать: N— 1 У 1,+h N, , n=0 /, = 0, ..., N—1, /2=0, 1, ...; (3.6) /=/1 + l2N2, (3.7) где </]—n) берется по модулю N. Это означает, что для Ц^п </i—п)=Ц—п, а для ZiCn —n)=N + lt—п. Предположим, что M=W]+N2—1. Для 1 Q}—n) всегда равен li—n, так как все отсчеты hn нулевые при л>М—1. Следовательно, последние N—7Vi1 выходные члены каждой циклической свертки являются действительными выходными значениями фильтра, тогда как пер- вые N\—1 выходные члены циклической свертки должны игнори- роваться, поскольку они соответствуют перекрывающимся интер- валам. Можно показать, что алгоритм перекрытия с накоплением по- рождает N—М1 + 1 выходных отсчетов цифрового фильтра без до- бавочного суммирования. Таким образом, этот алгоритм предпоч- тительнее алгоритма перекрытия с суммированием, так как его программная реализация значительно проще при использовании стандартных программных средств. 3.2. ВЫЧИСЛЕНИЕ КОРОТКИХ СВЕРТОК И ПРОИЗВЕДЕНИЙ ПОЛИНОМОВ Во многих быстрых алгоритмах вычисление больших сверток заменяется на последовательность вычислений коротких сверток и произведений полиномов. Это приводит к тому, что тру-
доемкость такого процесса сильно зависит от эффективности алго- ритмов для вычисления коротких сверток и произведений полино- мов. В этом разделе опишем ряд приемов, которые позволяют ус- пешно разрабатывать такие алгоритмы. 3.2.1. ВЫЧИСЛЕНИЕ КОРОТКИХ СВЕРТОК С ПОМОЩЬЮ КИТАЙСКОЙ ТЕОРЕМЫ ОБ ОСТАТКАХ Известно (см. гл. 2), что число умножений, требуемых для вы- числения циклической свертки, уменьшается при сведении вычис- ления свертки к умножению полиномов по взаимно простым мо- дулям. Циклическая свертка yi из N членов yi= 2 hnxi-n, 1=0, 1, ..., N—1, (3.8) n=0 где hn и хт — входные последовательности длиной N, может рас- сматриваться как произведение по модулю полинома zjV—1. В по- линомиальных обозначениях имеем Н (z) = ^ hnzn, (3.9) n=0 X(z) = ?W", (3.10) У(2) Я(z)X(z) mod (z^—l), (3.11) Л'—i Y(z)= % y^. (3.12) 1=0 Над полем рациональных чисел zN—1 разлагается в произве- дение d неприводимых циклотомических полиномов Pi(z), где d—. число делителей N: d zN~ 1= П Pi(z). (3.13) i=l Y(z) вычисляется в три этапа: сначала H(z) и X(z) приводят- ся по модулю Pi(z), i=l,...,d: Hi(z)=H(z) mod Pi(z), (3.14) X{(z)=X(z) modPj(z), (3.15) затем вычисляются d произведений Xi(z)Ht(z) и, наконец, исполь- зуя китайскую теорему об остатках, как показано на рис. 3.1, для N — простого восстанавливают Y(z) по полученным произведени- ям: У(г) = 2 Si(z)Hi(z)Xi(z) mod (zN— 1), (3.16) i—l где Su(z) = 0 mod Pi(z), v=/=ir, Su(z) = 1 mod P,. i : (3.17) 36
Su(z)^Tu(z)/Ru(z)^ = ([ П Pi(z)]/{[ П Pi(z)] mod Pu(z)}) mod (z*—1). 1=1 1=1 (3.18) Для малых значений N циклотомические полиномы Pi(z) до- вольно просты, так как их коэффициенты равны 0 или ±1. Это означает, что приведение по модулю P<(z) и восстановление поли- нома по китайской теореме об остатках может быть выполнено без умножений и с ограниченным числом сложений. Например, если N простое, то d=2 и zN—1 разлагается в произведение двух непри- водимых полиномов: P\(z)=z— 1 и P2(z) = zN~' + ... +z+l. Тогда Xi(z) и X2(z) вычисляются за N—1 сложений так: N—1 Xi(z)= 2 хт, т=0 N—2 X2(z) = 2 (Xm—XlV-l)z™. m=0 (3.19) (3.20) Согласно китайской теореме об остатках, Su(z) =Tu(z)/Ru(z), где l/Ru(z) определен по модулю Pu(z). Поэтому умножение на l/Ru(z) может быть скомбинировано с умножением Hu(z)Xu(z) по модулю Pu(z). Более того, во многих практических случаях од- на из входных последовательно- стей hn фиксирована. В этом слу- чае полином Hu(z)IRu(z) может быть вычислен заранее и единст- венной операцией, необходимой для восстановления по китайской теореме об остатках, является ум- ножение на Tu(z). Для N просто- го HjXi/Rj есть скаляр уи», тог- да как H2{z)X2(z),/R2(z) по моду- лю P2(z) есть полином с коэффи- циентом y2,i при z*. Следователь- _____EZ2 Приведение по модулю (z”-l)/(z-1) Умножение полиномов по модулю Рис. 3.1. Вычисление /V-точечной цик- лической свертки с помощью китай- ской теоремы об остатках 1^777 Упорядочение Л (г) | Полином степени N-1 I Приведение по модулю нг(г)/в2(г) Умножение на скаляр Н1/П, У1,1 У2,1 ♦ г Восстановление по китайской теореме об остатках | Y(z) Переупорядочение но, восстановление Y(z) по вычетам выполняется с 2(N—1) сло- жениями следующим образом: У(2) ~ +1/2, n-z}zn^+уi,i—1/2,0+ N—2 + S (l/i,1—yz,i+y2,i~i)zl. (3.21) 1=1 37
Можно показать, что сложений, требуемых при использовании китайской теоремы об остатках, столько же, сколько их требуется для приведения по модулю циклотомических полиномов. Это вер- но для любой циклической свертки с одной фиксированной после- довательностью. Следовательно, приведения по модулю и обрат- ные восстановления реализуются очень просто и главной пробле- мой при вычислении сверток является вычисление произведений полиномов по модулю циклотомических полиномов 3.2.2. УМНОЖЕНИЯ ПО МОДУЛЮ ЦИКЛОТОМИЧЕСКИХ полиномов Поскольку полиномы P.i(z) неприводимы, их можно вычислить методом интерполяции за 2D—1 общих умножений, где D — сте- пень P.i(z) (см. теорему 2.21). Используя этот метод для умноже- ний по модулям z2+ 1 и (z3—l)/(z—1), получим алгоритм с тремя умножениями и тремя сложениями, как будет показано в подразд. 3.7.2. Для длинных полиномиальных произведений этот метод не- практичен, так как требует 2D—1 различных полиномов. Четыре простейших интерполяционных полинома — это z, 1/z, z—1, z+1, поэтому, если степень D полинома P.i(z) больше 2, приходится ис- пользовать целые йг, отличные от 0 и ±1. Это ведет к тому, что приведение по модулю z—а, и восстановление по китайской теоре- ме об остатках использует умножение на степени ait реализуемые либо умножениями на скаляры, либо большим числом последова- тельных сложений. Следовательно, для получения алгоритмов с разумным балансом между числом сложений и умножений нужно нечто отличное от метода вещественной интерполяции. Один из таких приемов состоит в применении комплексных ин- терполяционных полиномов, например z2+l, которые вычисляются с большим числом умножений, чем полиномы с вещественными корнями, но для которых приведение и восстановление по вычетам значительно проще. Другой подход состоит в преобразовании одномерного полино- миального произведения в многомерное. Допустим, что мы хотим вычислить апериодическую свертку yi двух JV-точечных последо- вательностей hn и хт- Это соответствует обычному произведению У(г) полиномов H(z) и X(z): У(г)=Я(г)Х(г), (3.22) 2N—2 У(г)=2^, (3.23) 1=0 H(z)>= ^hnzn, (3.24) n=0 X(z)=Wf1xmz- (3.25) m=0 Полиномы H(z) и X(z) имеют степень N—1 и состоят из N членов. Если N составное, т. е. N = NiN2, то H(z) и X'(z) могут по
быть преобразованы в двумерные полиномы двух переменных) с помощью (т. e. зависящие от n = Nln2+nl, т2, п2=0, ..., N2—1, (3.26) m = N\tn2+m\, т\, щ = 0, ..., Nx—1, (3.27) ZjV' = Zi, (3.28) H(z)=H(z, z,)=7Vf’Hni(zi)zn', (3.29) X(z)=X(z, zi)= £ Xmt (Zi)z™', m,=0 (3.30) где JVE—I Hn2 (^i) — У, ^Л', n2=0 (3.31) N2-l Xml (Zi) = ^N1m2-}-m1 Z™2. (3.32) tn2=O Таким образом, У(а) вычисляется как двумерное произведение ¥ (г, Zi) и ¥ (г) восстанавливается по ¥(z, Zi) подстановкой Zi = = zA'i: JVt—1 Л\—1 У(г, ?,)=£ £ (3.33) m1=0 n,=0 Эта операция эквивалентна вычислению апериодической сверт- ки для входных последовательностей длиной Nl} в которых ска- лярное значения отсчетов заменены полиномами с N2 членами, а каждое умножение — апериодической сверткой двух последова- тельностей длиной N2. Таким образом, если Л1) и ТИ2— число ум- ножений, требуемых для вычисления Nr и ЛТг-точечных сверток со- ответственно, то апериодическая свертка двух последовательностей длиной N вычисляется с М умножениями, где М=МГМ2. (3.34) Этот подход может быть использован рекурсивно для случая большей размерности и тем самым позволяет разложить вычисле- ние больших полиномиальных произведений на серию вычислений малых произведений. Следовательно, произведение полиномов по модулю циклотомического полинома P(z) степени N может быть вычислено с помощью многомерной апериодической свертки с по- следующим приведением по модулю P(z). Во многих случаях P(z) легко преобразуется в полином от большего числа переменных подстановкой P(z) = P2(zi), z, = zNi. Например, циклотомический полином P(z) = (z9—l)/(z3—l)=z6 + Tz3+1 может быть представлен в виде полинома Pzfzi) =z2i + + Z1 + 1, где Zi = z3. Тогда произведение полиномов по модулю P(z) представляется как двумерное произведение полиномов по двойному модулю: zjVi—zb P2(zi)- С помощью этого метода вычис- 39
ляется произведение полиномов по модулю z4-Ь 1 за 9 умножений и 15 сложений (см. подразд. 3.7.2) посредством умножения по мо- дулю z2—z\ полиномов, определенных по модулю z2i4-l. Получаем значительное улучшение по сравнению с прямым вычислением ме- тодом интерполяции произведения по модулю z4-|-1, требующим 7 умножений и 41 сложения. Главное преимущество такого подхода обусловливается тем, что умножения по модулю zjVi—Z\ могут вычисляться методом ин- терполяции по степеням zx более точно. Так как (zNi—zt) —не- приводимый полином степени JVi, то произведение полиномов по модулю zjVi—Z] может быть вычислено за 2Ni—1 умножение мето- дом интерполяции по 2N—1 точкам (см. теорему 2.21). Простей- шими узлами интерполяции являются z — О и l/z=0. Для осталь- ных 2Nf—3 интерполяционных узлов заметим, что если степень N2 полинома P2(zi) больше Ni, то 2Ni точек ±1,..., ±zjV2-1 раз- личны. Поэтому при Nt^N 2Ni—3 интерполяционных узла могут быть выбраны в виде степеней zb При этих условиях интерполя- ция описывается соотношениями wx-i Ak(z}) = 2 XnI(z1)m-ft mod P2(zt), mt=0 k = 0, ..., 2N[—2; k^Ni—1, Ni—2; (3.35) (z1)=X0(z1), (3.36) ДЛ1_1(г1)=Хл,1_.1(г1) (3.37) при аналогичных соотношениях для Bft(zi), соответствующих N(z). Итак, У(г) получается сначала вычислением Tlfc(zi), Bfe(zi), затем вычислением 21\Ц—1 произведений 71it(Zi)Bft(zi) modP2(zi) и восстановлением У (z) по китайской теореме об остатках. В (3.35) умножения на степень Zi соответствуют сдвигам входного полинома с последующим приведением по модулю P2(zi)- Если Pz(Zi) —z2t“ 4-1, то эти операции сводятся к циклическому сдвигу на (m\k mod 2'2) входного слова с последующим изменением зна- ка. Поэтому (3.35) вычисляется без умножений и, если Ni состав- ное, число сложений может быть уменьшено с помощью алгорит- мов типа БПФ. В частности, если — степень 2 и P2(zi) =zw’+1/ A'r2=2(i, то приведения, соответствующие вычислению zN<—zb ре- ализуются лишь с N2(2NilogNi—5) сложениями. Теперь видно, что при одной фиксированной входной последовательности вос- становление полинома по вычетам согласно китайской теореме об остатках может быть выполнено примерно за такое же число сло- жений. 3.2.3. АЛГОРИТМ ПРЕОБРАЗОВАНИЯ МАТРИЦЫ Если рассматриваем умножение по модулю полинома Р(?) степени N с М умножениями на скаляры, то соответствующий ал- горитм по существу вычисляет некоторое матричное преобразова- ние: 40
H = Eh, X=Fx, Y = H®X, y=GY, (3.38) (3.39) (3.40) (3.41) где h и x — вектор-столбцы входных последовательностей hm и хт\ Е и F — входные матрицы размера A1XN; знак ® обозначает поэлементное произведение; G — выходная матрица размера NX Х/И, у — вектор-столбец выходной последовательности yi. Если алгоритм основан на интерполяционном методе, то матрицы Е и F соответствуют переходу к вычетам по модулям z—а,, а матрица G — операции восстановления у по совокупности вычетов Y. Таким образом, Eh, Fx и GY вычисляются без умножений, тогда как (вы- числение Н®Х требует М умножений. Так как операция восста- новления может рассматриваться как обратная операциям приве- дения по модулю, то по сложности ее можно считать эквивалент- ной двум операциям приведения входных последовательностей по заданным модулям. Следовательно, сложность матрицы G пример- но вдвое превышает сложность матриц Е и F. В большинстве практических приложений фильтрации одна из входных последо- вательностей — hn — фиксирована, так что Н может быть вычис- лена заранее и запомнена. Следовательно, число сложений в ал- горитме зависит от сложности матриц F и G, но не зависит от сложности матрицы Е. В этой ситуации желательно так преобра- зовать Е и G, чтобы число сложений уменьшилось. Для этого’ на первом шаге перепишем выражения (3.38) — (3.41) в виде N—1 N—1 М—1 У1~ S hnXm 2 &п, k fm, k (3-42) n—0 m=0 k—0 гДе en,k, fm,k и gk,i — элементы матрицы E, F и G соответственно. Для алгоритма циклической свертки по модулю P(z)=zN—1 дол- жно выполняться условие М—1 S = 2 &т, k fn, h gk, l~ k=0 1, если m+n—/=0modN, 0, если m+n—/^OmodN. (3.43) Аналогично для алгоритма полиномиального произведения по модулю zN4-1 или zN—Z\ соответствующее условие имеет вид ( S — | —1 или Zi, I 0, если т+п—1=0, если т + п—l=N, если т+п—/^OmodN. (3.44) Заменим теперь матрицы Е и G матрицами Е1 и G1 с элемен- тами gk,N-m и eN^i,h соответственно. Тогда S преобразуется в S1 и из (3.43) вытекает выражение м-1 । 1, Sl = 2 Sn-I, k fn, k gk, N-m= I „ *=0 (0, если m + n—l=0modN, если m + n—l^OmodN. (3.45) 41
Таким образом, как указано в [3.3], сверточное условие сохра- няется при преобразовании матриц Е и G с помощью транспози- ции и переупорядочения строк и столбцов. Этот же способ может быть использован для полиномиальных произведений по модулю z^+1 или zN—Z\. Однако в этих случаях условия S=1 и S = — 1 или Zi в (3.44) меняются при т или Z=0. Элементы матриц Е1 и G1 должны быть равными соответственно: gk,N-m для т=И=0, —gk,N-m ИЛИ (l/zfigk,N-m ДЛЯ Щ = 0 И eN-l,k ДЛЯ Z#=0, — eN-l, h ИЛИ Z^jy-Z.fe для Z = 0. Этот метод применительно к умножению полиномов по модулю (z9—IJ/fz3—1) приведен в подразд. 3.7.2. В случае ис- Таблица 3.1 Число умножений и сложений для алгоритмов коротких и циклических сверток Длина Число умноже- Число сложе- Длина Число умноже- Число сложе- последова - ний М ний А последова- ний М ний А тельности N тельности N 2 2 4 8 14 46 3 4 11 8 12 72 4 5 15 9 19 74 5 10 31 16 35 155 6 8 62 16 33 181 7 16 70 Т а б л и ц а 3.2 Число арифметических операций для полиномиальных произведений по модулю P(z) Кольцо P(z) Степень Число умно- жений M Число сложе- ний А z2+l 2 3 3 (23_ 1)/(Z—>1) 2 3 3 z4+l 4 9 15 Z4+1 4 7 41 (z5— 1)/(Z— 1) 4 9 16 (Z8-1)/(Z-1) 4 7 46 (z7—l)/(z—1) 6 15 53 (z’-l)/(z3—1) 6 15 39 z8+'l 8 21 77 (zZi+Zi + HfzSz—1)/(Z2—1) 8 21 83 (z4l + l) (z22 + z2+l) 8 21 76 (Z21+1)(Z52-J1)/(Z2-1) 8 21 76 Z16+l 16 63 205 )/(ZS—,1) 18 75 267 Z32+1 32 147 739 Z64+1 64 315 1899 пользования этого метода для умножения полиномов по модулю z2 * Н- 1, преобразованному в два полинома zNi—Zi и z^+l, где У1=2‘‘^У2=2*7, требуется (М—6-|-2Ni log2Ni)N2 сложений для операции восстановления. Следовательно, число сложений при вы- числении произведения полиномов по модулю zjV'—Zi равно (Nt— — U+4^1log2ZV1)ZV2.
В подразд. 3.7.1 и 3.7.2 приводится детальное описание некото- рых наиболее часто используемых алгоритмов вычисления свертки и произведения полиномов. В табл. 3.1 и 3.2 указывается необхо- димое число арифметических операций для этих и некоторых дру- гих алгоритмов. Оптимизация таких алгоритмов заключалась в уменьшении числа умножений. Таким образом, эти алгоритмы до- пускают эффективную реализацию на ЭВМ, в которых время вы- полнения умножения превышает время выполнения сложения и вычитания. Если время, затрачиваемое на сложения и умножения, примерно одинаково, то предпочтительнее использовать другие алгоритмы. 3.3. ВЫЧИСЛЕНИЕ БОЛЬШИХ СВЕРТОК С ПОМОЩЬЮ ВЛОЖЕНИЯ1’ КОРОТКИХ СВЕРТОК Для больших сверток алгоритмы, основанные на интер- поляционных методах, становятся сложными и малоэффективны- ми. Покажем, что вычисление больших сверток сильно упрощает- ся, если использовать преобразование размерности, предложенное Гудом [3.4], и вложение по методу Агарвала — Кули [3.5]. 3.3.1! АЛГОРИТМ АГАРВАЛА — КУЛИ В методе Агарвала — Кули длина А циклической свертки yi — составное число, разлагающееся в произведение взаимно-простых множителей. Будем считать A=AiA2, где Ni и N2 взаимно-прос- тые, т. е. (Аь N2) = 1. Свертка yi задается стандартным выраже- нием N—1 У1= 2 hnXl-n, 1=0, .... А—1. (3.46) п=0 ' Так как А( и N2 взаимно-простые и индексы I и п определены , по модулю N]N2, то на основании китайской теоремы об остатках (см. теорему 2.1) I и п могут быть представлены парами индексов 1\, 12 и «1, п2. /=А|/2+А2/, mod A^s, 12, п2=0, ..., А2—1, (3.47) п=М\П2+М2П] mod N\N2, Zb «1 = 0, ..., Ai—1. Следовательно, одномерная свертка yi представляется двумер- ной массива AiXA2 *) В оригинале термин «by nesting» — дословно переводится гнездованием. В нашем переводе термин гнездование (иногда употребляющийся) заменен терми- ном вложение, более точно соответствующим современному математическому языку. Однако алгоритм, использующий процедуру вложения,— nesting algorithm— называется в нашем переводе гнездовым алгоритмом, так как термин вложен- ный алгоритм двусмыслен. Другим, более длинным, был бы термин алгоритм, использующий вложение. Мы предпочли, однако, более короткий термин. Прим, перев. 43
Л\—1 ,M2-1 yNll1+N2l1= 2 2 hNtn^.N!tfli XW1 (3.48) nt=0 n2=0 В полиномиальных обозначениях эта свертка может рассмат- риваться как одномерная Ni-точечная полиномиальная А^-1 ^«1 (^) = 2 п2=0 (3.49) 7Va-l Хт1 (?) = У Zmzt (3.50) N2—l *\(Z) = 2 yN,l'+N2l, Z'2< l2=0 (3.51)’ N2-l Y,2 (z) = 2 Hni (z) XZ1_ni (z) mod (zw* -1). пг=0 (3;52) Каждое полиномиальное произведение (z)Xir^,lt (z) соот- ветствует ^-точечной свертке, вычисляемой с М2 умножениями на скаляры и Д2 скалярными сложениями. Поэтому Л^Л/г-точечная свертка вычисляется по (3.52) как Л^гточечная свертка, в кото- рой все скаляры заменены полиномами степени N2—1, а каждое умножение заменено Л^-точечной сверткой. При этих условиях, если Mi и А] — число умножений и сложений, требуемых для вычисления Xj-точечной свертки, то числю умножений М и сло- жений А, требуемых для вычисления ХцЛ/г-точечной свертки, дается выражениями М=М,М2, (3.53) A=AiN2+MiA2. (3.54) Меняя ролями Ni и N2, получаем, что эта же свертка вычисля- ется как полиномиальная ^-точечная с элементами, представлен- ными полиномами степени Ni—1. В этом случае число умножений будет тем же самым, а число сложений равным Д2Х1+Л42Д1. Та- ким образом,, число сложений в гнездовом алгоритме зависит от способа представления свертки. Если первый способ требует мень- шего числа сложений, то Л1Лг2+Л41Д2<Д2М1-|-Л12Д1 (3.55) или (Mi-Ni) /Д1 < (M2-N2) /А2. (3.56) Таким образом, предпочтение следует отдать тому способу, для которого число (Mi—Ni)/A,i меньше. Если N разлагается в произведение более чем двух взаимно- простых множителей: Ni, N2,..., Nd, то та же самая процедура мо- жет быть применена рекурсивно для представления ^-точечной свертки в виде d-мерной свертки массивов NiXN2X ... XNd и вы- 44
числения многомерной свертки как ^-точечной массивов А2Х Х^зХ ... ХМк При этом все умножения заменяются свертками мас- сива М>ХА3Х ... X.Nd. Затем последние свертки .вновь рекурсивно сводятся к сверткам меньшей размерности и так до тех пор, пока все свертки не сведутся к М[М2 — Md ^-точечным сверткам, где Mi — число умножений, требуемых для М-точечной свертки. Если через обозначить число сложений, требуемых для .вычисления Л^-точечной свертки, то общее число операций, необходимых для гнездового алгоритма вычисления свертки массива N}XN2X ... ... XNd, будет задаваться выражениями M=MiM2...Md, (3.57) A =A[N2... Nd+.MiA2N3... Nd-t-MiM2A3N4... Nd+ ... ...+MiM2... Md-iAd. (3.58) Следует помнить, что число операций, вычисляемых по этим формулам, зависит в основном от числа умножений Mit тогда как число сложений А, дает незначительный вклад в общее выраже- ние для А. Поэтому для больших сверток наиболее выгодны алго- ритмы, вычисляющие короткие свертки с малым числом умноже- ний, даже если это уменьшение достигается за счет относительно- го увеличения числа сложений. Это можно проиллюстрировать на примере 8-точечной свертки. Такая свертка может быть вычислена двумя алгоритмами: одним, использующим 14 умножений и 46 сло- жений; другим, использующим 12 умножений и 72 сложения. Для вычисления простой 8-точечной свертки второй алгоритм менее предпочтителен, так как он экономит 2 умножения за счет допол- нительных 26 сложений. Однако, когда при вычислении 63-точеч- ной свертки с помощью гнездового алгоритма приходится исполь- зовать 8-точечные свертки для вычисления 504 членов, ситуация меняется коренным образом. Применение первого 8-точечного ал- горитма требует 4256 умножений и 28 240 сложений, тогда как второй алгоритм — 3648 умножений и 26 304 сложений. В табл. 3.3 приводится число арифметических операций для различных одномерных сверток, вычисляемых алгоритмом Агар- вала — Кули с помощью вложения коротких сверток, указанных в табл. 3.1. Сравнивая табл. 3.3 и 4.6, можно увидеть, что гнездовой метод требует меньшего числа операций, чем обычный метод, ос- нованный на БПФ для коротких и средних сверток с верхней гра- ницей около 200 точек. Существенное преимущество гнездового метода состоит в том, что он не использует тригонометрических функций и что вещественные свертки используют вещественную, а не комплексную арифметику. Многомерные свертки также могут вычисляться гнездовым ме- .тодом. Например, свертка массива NiN2XN\N2 может быть вычис- лена как свертка массива NiXNi, в которой каждый скаляр заме- нен на массив размерами N2xN2, а каждое умножение — на сверт- ку массива N2XN<i- Число арифметических операций, требуемых 45
для вычисления различных сверток по этому методу и с помощью алгоритмов из подразд. 3.7.1, дано в табл. 3.4. В гл. 5 будет показано, что метод вложения играет главную роль при вычислении ДПФ по алгоритму Винограда. Если много- Таблица 3.3 Число арифметических операций дЛя сверток, вычисляемых по гнездовому алгоритму Агарвала—Кули Длина последо- вательности N Число умноже- ний М Число сложе- ний А Число умноже- ний на отсчет M]N Число сложений на отсчет AfN 18 38 184 2,11 10,22 20 50 230 2,50 11,50 24 56 272 2,33 11,33 30 80 418 2,67 13,93 36 95 505 2,64 14,03 60 200 1120 3,33 18,67 72 266 1450 3,69 20,14 84 320 2100 3,81 25,00 120 560 3096 4,67 25,80 180 950 5470 5,28 30,39 210 1280 7958 6,10 37,90 360 2280 14748 6,33 40,97 420 3200 20420 7,62 48,62 504 3648 26304 7,24 52,19 840 7680 52788 9,14 62,84 1008 10032 71265 9,95 70,70 1260 12160 95744 9,65 75,99 2520 29184 241680 11,58 95,90 Таблица 3.4 Чигло арифметических операций для двумерных сверток, вычисляемых по алгоритму Агарвала—Кули Размеры масси- ва NXN Число умноже- ний М Число сложе- ний А Число умноже- ний на отсчет MfN Число сложений на отсчет AfN 3X3 16 77 1,78 8,56 4X4 25 135 1,56 8,44 5X5 100 465 4,00 18,60 7X7 256 1610 5,22 32,86 8X8 196 1012 3,06 15,81 9X9 361 2072 4,46 25,58 12X12 400 3140 2,78 21,81 16X16 1225 7905 4,79 30,88 20X20 2500 15000 6,25 37,50 30X30 6400 41060 7,И 45,62 36X36 9025 62735 6,96 48,41 40X40 19600 116440 12,25 72,77 60X60 40000 264500 11,11 73,47 72X72 70756 488084 13,65 94,15 80X80 122500 767250 19,14 119,88 120X120 313600 1986240 27,78 137,93 46
мерные свертки имеют общие члены в нескольких размерностях, то многомерное кольцо полиномов, соответствующее этим сверт- кам, обладает свойствами, позволяющими упростить вычисления. Тогда гнездовой метод, не учитывающий эти свойства, становится неэффективным и должен быть заменен методом, основанным на полиномиальных преобразованиях, которые описываются в гл. 6. 3.3.2. ПОСЛОЙНО-ГНЕЗДОВОЙ АЛГОРИТМ1) Как было показано в предыдущих разделах, метод вложения обладает рядом преимуществ при вычислении коротких и средних по длине сверток. Недостатками этого метода являются: исполь- зование нескольких взаимно-простых модулей для индексирова- ния данных, относительно большое число сложений для больших сверток и необходимость иметь большой объем памяти для запо- минания алгоритмов вычисления коротких сверток. Первое обстоя- тельство неустранимо, так как одномерная свертка преобразует- ся в многомерную лишь в случае составного N, разлагающегося на произведение нескольких взаимно-простых делителей. В про- тивном случае преобразование размерности может быть выполне- но лишь за счет увеличения длины входных последовательностей, что ведет к увеличению числа необходимых арифметических опе- раций, как показано в разд. 3.4. Однако влияние остальных факторов, связанных с объемом па- мяти и числом сложений, может быть уменьшено, если заменить вложение сверток на вложение полиномиальных произведений. Этот метод, получивший название послойного вложения [3.6], со- стоит в вычислении коротких сверток из алгоритма Агарвала — Кули как полиномиальных произведений. Ограничимся обсужде- нием метода для Л'|й/2-точечных сверток, где Ni, N2 — различные не- четные простые числа, поскольку все остальные случаи легко сво- дятся к этому. Так как Nt простое, то zN<—1 разлагается в произведение цик- лотомических полиномов z—1 и P2(z) =zN'~} + г^1-2+ ... -1-1. Цик- лическая свертка t/z двух Арточечных последовательностей hn и хт вычисляется в виде полиномиального произведения по модулю zN<— 1: 11 В оригинале — split nesting algorithm. Учитывая сказанное в примечании на с. 43, этот термин можно .перевести как алгоритм, использующий расщеплен- ное вложение. Мы выбрали перевод послойно-гнездовой алгоритм по следующим причинам. Во-первых, этот алгоритм представляет собой модификацию описан- ного выше гнездового алгоритма и отличается от него вложением полиномиаль- ных произведений, а не сверток. В этом смысле метод можно было бы назвать полиномиальным вложением, а обычный гнездовой метод — сверточным вложе- нием. Однако замена сверток иа полиномиальные произведения дает возмож- ность использовать китайскую теорему об остатках, позволяющих расщепить (отсюда split) 1полиномиальиое произведение на серию независимых произве- дений отдельных модулей (слоев). Поэтому определение послойно-гнездовой бо- лее точно характеризует этот метод Другим вариантом может быть термин модульно-гнездовой алгоритм (метод) —Прим, перев. 47
Л^-1 Я(г) = 2 hnzn, (3.59) JVj-1 X(z) = s xmzm, (3.60) /71=0 A\-l Y(z) = poyizl=H(z)X(z) mod(zw'—1). (3.61) Используя китайскую теорему об остатках, Y(z) можно вычис- лить так, как показано на рис. 3.1. Для этого сначала Н (z) и X(z) приводятся по модулю P2(z) и z—1 к вычетам H2(z), Hi и X2(z), Xi соответственно. Затем вычисляются произведения H2(z)X2(z) по модулю P2(z) и HiX\ по модулю z—1. Наконец, Y(z) восстанавливается следующим образом: Y(z) =Si (z) HiXi + S2 (z) H2(z)X2 (z)mod (z^—1), (3.62) S2(z) = l, SJzJ^OmodPzCz); S2(z)==0, Si(z)h= 1 mod(z—1). Приведение по модулю и восстановление по вычетам имеют одинаковую структуру, за исключением численного значения N\. Поэтому эти процедуры при реализации на .ЭВМ не запоминаются в виде отдельных процедур для различных значений N\, N2,... и могут быть представлены одной программой. В частности, приведение по модулю P2{z) и z—1 выполняются с N\—1 сложе- ниями: К,—2 Я2(г)= 2 (hn—hN_i)z\ (3.64) n=0 Wj—1 Hi= 2 hn. (3.65) Таким образом, отдельно запоминается только часть каждого сверточного алгоритма, в котором вычисляется полиномиальное произведение. При этом методе выигрыш в памяти может быть весьма значителен. Так, для простой 15-точечной свертки гнездо- вой алгоритм сводит ее вычисление к вычислению 3-членной сверт- ки, длина каждого члена которой равна 5. Поскольку 3- и 5-точеч- ная свертки вычисляются соответственно с числом сложений 11 и 31, то типичная программа для соответствующего гнездового ме- тода должна содержать около 42 инструкций в алгоритмах вычис- ления коротких сверток. Если же 3- и 5-точечная свертки вычис- ляются в виде полиномиального произведения, то вычисление раз- бивается на умножения полиномов по модулям (z3—l)/(z—1), (z5—l)/(z—1) и умножения на скаляры. Так как такие полиноми- альные произведения вычисляются за 3 и 6 сложений соответст- венно, то послойно-гнездовой метод использует одну общую про-
грамму для приведений и восстановления по вычетам и, кроме того, около 19 инструкций для выполнения умножений полиномов. Послойно-гнездовой метод вычисления Л^Л^-точечной свертки удобно описывать в полиномиальных обозначениях. На первом шаге Л^1 ^-точечная свертка yi преобразуется в свертку yN^+NJt массива N}XN2 преобразованием индексов, как показано в (3.48). Эту двумерную свертку можно рассматривать как произведение по составному модулю ztN‘—1, z2N*—1 полиномов H(zi, z2) и X(z}, z2): H(Z1,Z2)=^I J] (3.66) 0 0 1 N2—1 X (Z19 Z2) — 2 ^Nlm2-\-N2m1 Z™1 Z™2f (3.67) mt—0 mz=0 TV,—1 N2~ 1 Y(zlt z2)= 2 S yN.i.+N^z^z1^ = H(Z}> Z2)X(Zi, 22)mod(2i7v'—1), (Z2n‘— 1). (3.68) Поскольку Nt и N2 — простые числа,’ z{N'—1 и z2N?—1 разла- гаются в произведение полиномов Z\—1, P2(zi) =ZiJV'-1+ziN>_2+ ... ... +1 и z2—1, P2(z2)=z^-) + z2^-2+ ... +1. K(zi, z2) теперь можно получить, согласно китайской теореме об остатках, по произведениям вычетов, определенных по модулю этих циклотомических полиномов: 2 2 У(гь z2)= 2 2 Si,h(zi, Zz)Hi,h(z}, z2)Xi,ft(zi, z2) i=l *=! mod(zi^—1), (z2^—1), (3.69) S212(Z1, Z2) = l, S2,1 (Z1, Z2), S1,2(Z1, Z2), S1,1(Z1, z2) = see 0 mod P2 (Zi) P2 (z2); Si,2(zi, z2) = l, Si,i(zi, z2), S2,p(zi, z2), S2,2(Zj, z2)s= = Omod(zi—1), P2(z2); S2,i(zi, z2)^l, Si,i(zi, z2), Si,2(zi, z2), S212(zi, z2)= =OmodP2(zi), (z2—1); Si,i(zb z2) = l, S2,i(zi, z2), Si,2(zi, z2), S2,2(zi, z2) = s=mod(zi—1), (z2—1), (3.70) где X2,2(zi, z2)=X(zh z2)modP2(zi), ₽2(z2), Xli2(z2)=X(zi, z2)modP2(z2), (zi—1), X2,i(z1)=X(z1, z2)mod P2(zi), (z2— 1), Xi,]=X(zi, z2)mod(z!—1), (z2—1). (3.71) 49
Аналогичные выражения получены и для Hi,k(zit zz). Деталь- ное описание метода вычисления Л^Л^-точечной свертки послойно- гнездовым методом представлено на рис. 3.2. Эта процедура включает последовательные приведения по модулю z(—1, zz—1, Pz(zz), затем одно умножение на скаляр, два полиноми- альных умножения по модулю Pz(Zi) и по модулю Pz(zz) и одно Рис. 3.2. Вычисление Лт.Уг-точечной свертки (A^i, N?—-нечетные простые числа) методом послойного вложения двумерное полиномиальное умножение по составному модулю Р2(Zi), Pz(zz). Наконец, результирующее значение свертки вос- станавливается по этим полиномиальным произведениям согласно китайской теореме об остатках. При этом способе полиномиаль- ное произведение по модулю P2(zz) вычисляется по ме- тоду вложения, аналогичному методу вычисления обычной двумер- ной свертки с полиномиальным умножением по модулю Pz(zi), в котором все скаляры заменены полиномами степени Nz—2, а
умножения скаляров — умножениями полиномов по модулю Рг (2г). Покажем теперь, что при использовании послойно-гнездового метода уменьшается число сложений. Предполагая, что короткие Ni- и Мг-точечные свертки вычисляются соответственно с Ai и Дг сложениями и Mi и М2 умножениями, получаем, что произведение ПОЛИНОМОВ ПО модулю 7*2 (Zl) И Pz(Z2) вычисляется С Mt—1 и М2—1 умножениями, тогда как число сложений дается выражениями Д1= Д и+Дг,1> Дг=Д 1,2+Дг,2> (3.72) где Д2.1 и Д2.2 — сложения, соответствующие полиномиальным про- изведениям, а Д1.1 и Д1,2 — сложения, соответствующие приведени- ям по взаимно-простым модулям и обратному восстановлению по китайской теореме об остатках. Так как число умножений, тре- буемых при вычислении произведения полиномов по модулю Pi(^i) и P2(z2) гнездовым методом, равно соответственно Mi—1 и М2—1, то общее число умножений, требуемых для вычисления У1М2-точечной свертки, составляет M=MtM2. (3.73) Вычисление произведения полиномов по модулю P2(zi) и P2(z2) выполняется за (У2—l)^2,i+(Ali—1)Дг,2 сложений. Следователь- но, общее число сложений Д, необходимых для вычисления всей Лг1Л^-точечной свертки послойно-гнездовым методом, таково: Д = N2Ai +Л^1Д1,2+Л^1Д2,2- (3-74) Поскольку Mi>Ni и NiAi2-(-MiA2i2<Z.Mi(ДьгЧ-Дг.г) = MiA2t то по сравнению с (3.54) этот метод экономит (Mi—М)Д1,2 сложе- ний при том же числе умножений. Метод послойного вложения может применяться рекурсивно к большим Л^У2... Мг-точечным сверткам. В табл. 3.5 приводится число арифметических операций для одномерных сверток, вычис- ляемых послойным вложением алгоритмов произведения полино- мов из табл. 3.2. Как видно, по сравнению с обычным гнездовым методом послойно-гнездовой позволяет уменьшить число сложе- ний примерно на 25% для больших сверток. При послойно-гнездовом методе вычисления разбиваются на отдельные вычисления одномерных и многомерных полиномиаль- ных произведений, причем последние вычисляются гнездовым ме- тодом. Как было показано в подразд. 3.2.2, такие многомерные полиномиальные произведения вычисляются посредством много- мерной интерполяции более эффективно по сравнению с гнездо- вым методом. Таким образом, возможно дальнейшее уменьшение числа операций за счет увеличения необходимой памяти, если по- слойно-гнездовой метод вычисления многомерного полиномиаль- ного произведения скомбинировать с методом интерполяции. Например, вычисление 120-точечной свертки включает вычис- ление произведений полиномов по модулю (z4i+l), (zs2— —l)/(z2—1), £2з+£з+1. Это произведение может быть вычислено 51
Таблица 3.5 Число арифметических операций, требуемых для вычисления циклической свертки послойно-гнездовым методом Длина последо- вательности N Число умноже- ний М Число сложе- ний А Число умноже- ний на отсчет M/N Число сложений на отсчет A/N 18 38 184 2,11 10,22 20 50 218 2,50 10,90 24 56 244 2,33 10,17 30 80 392 2,67 13,07 36 95 461 2,64 12,81 60 200 964 3,33 16,07 72 266 1186 3,69 16,47 84 320 1784 3,81 21,24 120 560 2468 4,67 20,57 180 950 4382 5,28 24,34 210 1280 6458 6,10 30,75 360 2280 11840 6,33 32,89 420 3200 15256 7,62 36,32 504 3648 21844 7,24 43,34 840 7680 39884 9,14 47,48 1008 10032 56360 9,95 55,91 1260 12160 72268 9,65 57,36 2520 29184 190148 11,58 75,46 . за 189 умножений и 640 сложений вместо 243 умножений и 641 сложения, если вложение полиномиального произведения по модулю (z52—1)/(2г2—1) на произведение по модулю z4i+l, z^-b Ч-23+1 использует интерполяцию (см. табл. 3.2). При таком под- ходе свертка из 120 членов вычисляется лишь за 506 умножений и 2467 сложений вместо 560 и 2468 соответственно для обычного послойно-гнездового метода. Чтобы получить такую экономию, необходимо иметь дополнительную память для запоминания алго- ритма полиномиального произведения по модулю zS+1, z23-|- +2з+ 1. 3.3.3. КОМПЛЕКСНЫЕ СВЕРТКИ Комплексные свертки могут вычисляться с помощью методов вложения простой заменой вещественной арифметики на комп- лексную. В этом случае, если М и А —числа вещественных умно- жений и сложений для вещественной У-точечной свертки, то для комплексной свертки этого же размера числа вещественных умно- жений и сложений будут соответственно 4Л1 и 2A-}-2M. Если комплексное умножение реализуется алгоритмом, использующим 3 умножения и 3 сложения, как показано в подразд. 3.7.2, то число операций становится равным ЗЛ1 для умножений и 2А-|-ЗЛ4 для сложений. Однако эффективность методов можно повысить, если учесть то обстоятельство, что для некоторых колец элемент j = V—1 принадлежит этому кольцу, т. е. в таких кольцах j2=—1 [3.7]. Рассмотрим, например, кольцо полиномов по модулю z®-|-l, где 52
q — четное. Тогда z^=—1 и, следовательно, j=z«/2. Таким обра- зом, для комплексной У-точечной свертки, N=NiN2, где Ni— не- четное, а Уг=2е, используя преобразование индексов, задаваемое выражениями (3.47) — (3.52), можно представить одномерную комплексную полиномиальную свертку в виде Nt—1 Yit (z) + j Y/t (z) = 2 [/7П1 (zJXz,-^ (z)—/7П1 (z) Хг,_П1(2)] + П,=0 + j [Я„я (г) Х^П1 (г) + НП1 (z) Xt^ (z)] mod (z"» — 1), (3.75) где НП1(г), ХП1 (z) и Yt(z)— полиномы, соответствующие вещест- венным частям входных и выходной последовательностей, а ЯП1(г), Xmi(z) и Рг, (z)—полиномы, соответствующие мнимым частям входных и выходной посдедовательностей, при этом ns—i ~ НП1 (z) = 2 hNl n!+N, (3.76) п2=0 ЛГ2—1 л ХтДг) = 2 (3.77) тг—О Н2—1 л Kz,(z)== 2 yNll2+Nltlz^. (3.78) /2=0 Так как ДГ2 —2‘, zN*— 1 = (z— 1) П (z2" +1), то Уг, (z)+j PZ1 (z) ii=0 может быть вычислено, согласно китайской теореме об остатках, по набору вычетов YVii1(z)-\-jYVti1 (z), определенных выраже- ниями Yv, z. (z) + j Yv. z, (z) Yz, (z) + j Yh (z) mod (z2* + 1), (3.79) У„, z, + j K„, Z1 = Ytl (z) + jKZ1 (z) mod (z-1), (3.80) в которых члены Уи^ЧЧ^М, и Уо,г, + j Уо,г, соответствуют 2=1 и z=—1 соответственно и представляют собой скалярные N1-то- чечные свертки, вычисляемые с Mi комплексными умножениями. Каждая из этих сверток вычисляется с ЗЛЬ вещественными умно- жениями, использованием комплексной арифметики, в которой одно комплексное умножение выполняется с тремя вещественны- ми умножениями. При v=/=0 j=z2" 1 и каждая комплексная по- линомиальная свертка YViit (z) -НЬи, (z) вычисляется лишь с дву- мя вещественными свертками: N,—1 , . » Qv, h (z) 2 ". W + z Hv- (г)] X X [X,. tl-ni (z) + z2°-’ Xv, tl_ni (z)J mod (z2* + 1), (3.81) Wi-l „ , - Qa, Zj (z) 2 Iя”.". (z) ~z Hv’ <z)] X 53
X[X„.Z1_ni (z)-г2И-‘ Xv. lt_ni (z)] mod (z2“+ 1), (3.82) где Yv, ti (z) = [QB, Z1 (z) + Qv, Z1 (z)]/2, (3.83) Yv, Z1 (г) [Qo G (z)-QB, Z1 (z)]/2 mod (zaV + 1). (3.84) Умножения на z2V~1 по модулю z2°+I в этих выражениях со- ответствуют простым циклическим сдвигам на 2й-1 слов полино- мов из 2” слов с последующим изменением знака. Таким обра- зом, для о=/=0 комплексное умножение выполняется только за 2 вещественных умножения и общее число вещественных умно- жений для Л^1Л^2-точечных сверток становится равным 2Л41(Л12+1) вместо ЗЛ11Л12 или 4Л11Л12 при методах, использующих 3 или 4 ве- щественных умножения на одно комплексное. Такая экономия числа умножений достигается без увеличения числа сложений. Это вытекает из того, что рассматриваемый ме- тод эквивалентен методу, при котором вычисляются две вещест- венные JV-точечные свертки, выполняются 6M4 сложений, соответ- ствующих комплексным умножениям при вычислении Yu,it +jf\i,Z1 и To,Z1+j^o,Z1 , и 4Ni(N2—2) сложений при вычислении вспомога- тельных полиномов. Следовательно, если А — число сложений, требуемых для вычисления вещественной ^-точечной свертки, то число вещественных сложений, которое потребуется при вычисле- нии комплексной свертки, будет равно 2Д+4У+6Л41—8М, если последовательность /in+j/zn фиксирована. Такая же комплексная У-точечная свертка требует 2^+27Wi7W2 или 2A-t-3MiM2 'вещест- венных сложений, если используются алгоритмы комплексного умножения с четырьмя умножениями и двумя сложениями или тремя умножениями и тремя сложениями. Это показывает, кай в большинстве случаев вычисление комплексных сверток, осно- ванных на существовании в кольце полиномов элемента j, j2=—1, экономит число арифметических операций по сравнению с обыч- ными методами. Так, 72-точечная комплексная свертка вычисля- ется за 570 вещественных умножений и 3230 вещественных сло- жений вместо 1064 и 3432 соответственно для той же свертки, вычисляемой алгоритмом, требующим 4 вещественных умножения на одно комплексное, и 798 умножений, 3698 сложений в случае использования алгоритма, требующего 3 вещественных умножения на одно комплексное. Мы описали вычисление комплексной свертки в кольце поли- номов по модулю z’+l, q — четное. С некоторыми потерями в эффективности этот способ может быть перенесен и на другие кольца. Например, в поле .вычетов по модулю полинома P(z) = = (z3—l)/(z— 1) =z2 + z+ 1 имеем [(2z+1)/КЗ]2=—1 modP(z). Тогда j=(2z+l)/]/3 modP(z). Однако этот подход менее при- влекателен, чем описанный выше, т. е. для j, определенного по модулю z«-|-l, q четное, так как умножения на j = (2z+1) IVIT не могут быть вычислены простыми сдвигами и сложениями. 54
3.3.4. ОПТИМАЛЬНАЯ ДЛИНА БЛОКА ДЛЯ ЦИФРОВОГО ФИЛЬТРА Bq многих приложениях цифровой фильтрации одна из по- следовательностей hn имеет ограниченную длину и представ- ляет собой импульсную характеристику фильтра. Другая после- довательность обычно входная, и ее длина может считаться бес- конечной. Нециклическую свертку этих последовательностей мож- но получить путем серии вычислений циклических TV-точечных сверток и восстановления выходной последовательности цифрово- го фильтра с помощью методов перекрытия со сложением или перекрытия с накоплением, описанных в разд. 3.1. В случае перекрытия со сложением входная последовательность хт разбивается на блоки длиной N2 и непериодическая свертка каждого блока с последовательностью hn вычисляется с исполь- зованием циклической TV-точечной свертки, N=Ni-\-N2—1. В этой циклической свертке входные блоки длиной N получаются добав- лением TV2—1 нулей к последовательности hn и TV4—1 нулей — к блоку входной последовательности хт. Если Alt (TV) и ТИ2(ДТ, TVt) — соответственно число умножений на отсчет для циклической TV-то- чечной свертки и цифрового фильтра с ЛДточечной импульсной характеристикой, то M2(N, задается выражением М2(М, М1)=М1(М)М/(М—М, + 1). (3.85) Аналогично A2(TV, Nt) — число сложений для цифрового филь- тра— выражается через число A (TV) сложений на один выходной отсчет циклической TV-точечной свертки следующим образом: A2(TV, TV1)=.[A1(A)A+Mi—1]/(TV—TV, + 1). (3.86) Так как Mt(N) —возрастающая по TV функция, a TV/(TV—TVi+ + 1)—убывающая по N, то существует некоторая оптимальная длина блока TV, минимизирующая число умножений. Оптимальные длины блоков и соответствующее число операций для цифрового фильтра при различных значениях М приведены в табл. 3.6. Мож- но заметить, что N, как правило, незначительно больше Nt. Это Таблица 3.6 Оптимальная длина блока и число операций для цифровых фильтров, реализуемых с помощью циклических сверток и послойно-гнездового метода Длина импульсной ха- рактеристики фильтра Число умножений на отсчет Ms(N, Ni) Число сложений на отсчет A2(N, Ni) Оптимальная длина блока N 2 2,33 10,88 18 4 2,53 12,46 18 8 3,29 14,77 24 16 4,44 21,76 60 32 6,04 34,25 84 64 8,12 37,98 180 128 9,78 51,36 360 256 12,10 72,17 1260 512 14,53 94,91 2520 55
объясняется тем фактом, что Mi(N)—быстро растущая по N функция. Сравнение с фильтрацией, основанной на БПФ, показывает, что при длине импульсной характеристики около 256 послойно- гнездовой метод предпочтительнее, чем методы, основанные на БПФ. Последние требуют большей длины блоков при реализации фильтров, так как Ah (ТУ) возрастает намного медленнее при ис- пользовании БПФ-метода, чем при послойно-гнездовом. 3.4. ЦИФРОВАЯ ФИЛЬТРАЦИЯ, ИСПОЛЬЗУЮЩАЯ МНОГОМЕРНОЕ ПРЕОБРАЗОВАНИЕ В предыдущих разделах показано, что процесс фильтрации можно реализовать последовательным вычислением циклических сверток с помощью гнездового метода. При этом одномерные цию лические A-точечные свертки преобразуются в многомерные цик> лические свертки массива NiXN2X ... XNd, где Ah, N2,..., Nd — взаимно-простые множители числа N. Теперь опишем метод, принадлежащий Агарвалу и Бэррусу [3.8], который позволяет непосредственно преобразовать одномер- ную нециклическую свертку двух последовательностей длиной N в многомерную нециклическую свертку массивов размерами NiX ... XNd, где Ah,..., Nd — делители числа N, не обязательно взаимно-простые. Нециклическая свертка двух последовательно- стей hn и хт длиной N задается выражением N-1 yi= 2 hnxi-n, 1=0, ..., 2N—2, (3.87) п=0 в котором выходная последовательность yi имеет длину 2N—1 и последовательности hn, хт и yt дополнены нулями вне их обла- сти определения. В полиномиальных обозначениях эта свертка может рассматриваться как произведение двух полиномов степе- ни N—1: Y(z)=tf(z)X(2), (3.88) w-i fl(z) = 2 hnzn, (3.89) п=0 N—l X(z)= 2 xmz™, (3.90) m=O 2N—2 Y(z)=Zyizh (3.91) /=o Предположим, что N— составное число, N=NiN2. Тогда од- номерные полиномы H(z), X(z) преобразуются в двумерные H(z, zt), X(z, Zi) за счет переопределения индексов и введения новой переменной z4, такой, что zNl n = Nin2+ni, п2, т2=О, ..., N2— 1, (3.92)
m = Nxm2+mi, th, mi = O, M—1, (3.93) H(z> *i) = 2 гН 3 hN1n2+niz^\= 2 HnAz)z?s, (3.94) n2=0 \n1=0 / n2—0 N2—l ,'Nt—l \ N2—1 x(z’ Z1)= S zr S xA’im2+mi2m> )= 2 Xm2(z)zm* . (3.95) m2=0 \m1=0 / m2=0 Умножая H(z, на X(z, Zi), получаем новый двумерный по- лином T(z, Zi): Y(z, Z1)=H(z, Zi)X(z, Zl), (3.96) ~ 2Nz—2 i2N2—1^ \ 2N2—2 Y(Z,Z1)= 2 ZH X ^+S1zS1)= s (3.97) s2—0 \ s,=0 / s2=0 Выходные отсчеты получаются теперь как коэффициенты при z в Y(z, Zi), если положить Zi—zNt. Следовательно, нециклическая свертка может рассматриваться как двумерная свертка мас- сивов размерами Л^Х-Уг- Более точно, эта двумерная свертка есть одномерная последовательность длиной 2N%—1, в которой N2 входных отсчетов представлены N2 полиномами степени Ni—1, а все умножения заменены нециклическими свертками двух после- довательностей длиной Nt. n2~ 1 ys2 (z) = 2 (z) (*)• (3-98) n2=0 В этой ситуации ty вычисляется по методу, напоминающему гнездовой, используемый при вычислении циклических сверток, но в котором алгоритмы вычисления коротких циклических сверток заменены алгоритмами вычисления нециклических сверток. Таким образом, если и Л42 — числа умножений, требуемых при вы- числении нециклических сверток последовательности длиной 2Ni—1 и 2N2—1, то М — общее число умножений для нецикличе- ской свертки yi — задается выражением Af=AfiAf2. (3.99) Число сложений в этом случае вычисляется несколько труд- нее, чем при обычном гнездовом методе, так как рассматривае- мые свертки нециклические. Входные сложения, соответствующие алгоритму вычисления последовательности длиной 2N2—1, выпол- няются над полиномами из М членов, а входные сложения — над полиномами из 2Nj—1 членов. Более того, каждый полином YS2 (z) степени 2Nt—1 умножается на zts*—zN^‘ , так что различные по- линомы УЯ2 (z) перекрываются по М—1 отсчетам. Пусть Ali2 и Л2,2 — числа входных и выходных сложений, требуемых для не- циклической свертки последовательности длиной 2Ni—1, и Ai — общее число сложений, соответствующих нециклической свертке последовательности длиной 2N1—1. Тогда А — общее число сло- жений для нециклической свертки yt — дается выражением Л=М2Л1+Л1>2^+Л2,2(2М—1) + (М—1) (2ЛГ2—2). (3.100) 57
В случае, когда N разлагается в произведение более чем двух делителей, аналогичная процедура может применяться рекурсив- но. Поскольку делители N не обязательно взаимно-простые, то N может быть степенью простого числа, обычно 2 или 3. В этом случае при М=2( или N=3* нециклическая свертка вычисляется ^-кратной итерацией вычисления нециклической 3- или 5-точечной свертки. Запоминается только один алгоритм для вычисления ко- ротких сверток, и программная реализация сильно упрощается при использовании стандартного алгоритма для гнездового мето- да по основанию 2 или 3. В подразд. 3.7.3 приводятся алгоритмы, вычисляющие свертки последовательностей длиной 2 и 3. Первый алгоритм нецикличе- скую 2-точечную свертку вычисляет с тремя умножениями, когда одна из последовательностей фиксирована. Применяя этот алго- ритм, нециклическую свертку двух последовательностей длиной N=2l можно вычислить за М умножений: М=У. (3.101) Число умножений на отсчет в этом случае равно (l,5)f. Если аналогичная свертка вычисляется БПФ-методом с двумя вещест- венными последовательностями на каждое 2£+1-точечное БПФ (см. разд. 4.6), то число вещественных умножений на один входной отсчет равно 3(2+0- Поскольку 3(2 + 0 возрастает по t значи- тельно медленнее, чем (l,5)f, то БПФ-метод предпочтительнее для длинных последовательностей. Однако для малых значений t (£^С8) (*l,5)f меньше 3(2+0 и многомерный нециклический гнез- довой метод требует меньшего числа умножений, чем БПФ-метод по основанию 2. Это показывает, что длины нециклических свер- ток, для которых предпочтительнее описанный выше метод, ле- жат в интервале 0—256. Гнездовой метод по основанию 2 может быть преобразован в гнездовой метод по основанию 3, использующий алгоритм вы- числения коротких сверток из подразд. 3.7.3. В этом случае не- циклическая свертка двух последовательностей длиной 3 вычис- ляется с пятью умножениями и нециклическая Л^-точечная сверт- ка, N=3ti, вычисляется Л-кратной итерацией с общим числом умножений 5*1. Следовательно, число умножений на один вход- ной отсчет равно (5/3) fi. Этот результат может быть сопоставлен с приведенным выше для сверток той же длины при условии 3£1=2‘, что дает £i = Hog3 2. Следовательно, число умножений на входной отсчет уменьшается до (5/3)fIog32= (l,38)f для нециклических сверток, вычисляемых методом вложения по основанию 3, по сравнению с (l,5)f умножениями в случае метода вложения по основанию 2. Таким образом, число умножений растет медленнее с ростом свертки при использовании алгоритма по основанию 3, чем алгоритма по основанию 2. В табл. 3.7 приведено число опе- раций, требуемое при вычислении сверток с помощью алгоритмов по основаниям 3 и 2. Из таблицы видно, что вычисление свертки последовательностей из 256 членов алгоритмом по основанию 3 58
требует примерно в два раза меньше умножений по сравнению с алгоритмом по основанию 2. К сожалению, такая экономия достигается за счет увеличения числа сложений, так что преиму- щество первого алгоритма перед вторым проблематично. Таблица 3.7 Число арифметических операций для нециклических сверток, вычисляемых алгоритмами по основаниям 2 и 3 Д л и иа входной последователь- ности Число умноже- ний М Число сложе- ний А Число умноже- ний иа отсчет M/N Число сложений на отсчет A/N 2 3 3 1,50 1,50 3 5 20 1,67 6,67 4 9 19 2,25 4,75 8 27 81 3,37 10,12 9 25 194 2,78 21,56 16 81 295 5,06 18,44 27 125 1286 4,63 47,63 32 243 993 7,59 31,03 64 729 3199 11,39 49,98 81 625 7412 7,72 91,51 128 2187 10041 17,09 78,45 243 3125 40040 12,86 164,77 256 6561 31015 25,63 121,15 При сравнении методов вложения для нециклических и цик- лических сверток необходимо учитывать, что выход А-точечного цифрового фильтра может быть вычислен разбиением входной по- следовательности на блоки из N отсчетов с последующей сверт- кой блоков с заданной импульсной характеристикой и, наконец, суммированием перекрывающихся выходных отсчетов этих свер- ток. При методе вложения для циклических сверток число умно- жений на один выходной отсчет цифрового фильтра такое Же, что и для случая вычисления нециклических сверток, тогда как числа сложений на отсчет различаются лишь на величину (N—1)/N. Следовательно, реализация фильтрации по нецикличе- скому методу вложения требует большего числа операций, чем по циклическим методам. Это различие становится, особенно су- щественным для больших сверток. Таким образом, хотя гнездо- вой метод для нециклических сверток, использующий итерацион- ную процедуру, реализуется значительно проще, чем метод, ис- пользующий смешанные основания, но это преимущество ослаб- ляется вследствие увеличения числа арифметических операций для больших сверток. Рассмотренный нециклический гнездовой метод представляет собой обобщение алгоритма перекрытия с суммированием. Ана- логичная многомерная трактовка возможна и для алгоритма пе- рекрытия с накоплением [3.8]. Такая трактовка дает нецикличе- 59
ские гнездовые алгоритмы, похожие на те, что получаются на основании алгоритма перекрытия с суммированием и требующие такое же число арифметических операций. 3.5. ВЫЧИСЛЕНИЕ СВЕРТОК РЕКУРСИВНЫМ ВЛОЖЕНИЕМ ПОЛИНОМОВ1» Метод вложения для вычисления циклических и нецик- лических сверток с помощью коротких сверток обладает рядом достоинств. Он требует меньшего числа арифметических опера- ций, чем метод, основанный на БПФ, для сверток длины, меньшей 200; не использует тригонометрических функций. Однако исполь- зование метода вложения для больших сверток ограничено, так как в случае его применения число операций растет экспоненци- ально, тогда как при БПФ-методе — линейно. В этом разделе опи- шем метод, основанный на вложении неприводимых полиномов [3.9]. Он имеет сходные черты с нециклическим методом вложе- ния, но при этом обеспечивает линейный рост числа операций относительно- числа итерационных циклов. Рассмотрим сначала циклическую свертку длиной N N—1 У1= S hnXi-n, 1=0, ..., N—1. (3.102) п=0 В полиномиальных обозначениях каждый выходной отсчет yi соответствует коэффициенту при zl в произведении двух полино- мов H(z) и X(z) по модулю zN—1: У (z) е= Н (z) X (z) mod (zN — 1), (3.103) N— 1 //(z) = S hnzn, n=0 (3.104) N—1 X(z)= 2 Хт2™, (3.105) m=0 JV-l Y(z) = 2 У#1- (3.106) z=o Полином zN—1 разлагается над полем рациональных чисел в произведение f-J-l неприводимых полиномов: 1 = (2_1) n’(z2“ + l). (3.107) Таким образом, Y(z) можно вычислить с помощью китайской теоремы об остатках. При этом главная часть вычислений состоит в нахождении £+1 полиномиальных произведений по модулям 22*-1 4-1,..., z-|-l, z—1. Полиномиальные произведения по моду- 11 В оригинале — recursive nesting of polinomials. Этот термин был переве- ден как рекурсивное вложение полиномов-, алгоритм, использующий такую про- цедуру, назван рекурсивно-гнездовым (см. примечание к с. '417). — Прим, перев. ВП
лю z-f-1 и z—1 представляют собой произведения скаляров, так как в этом случае z=±l и вычеты по этим модулям представля- ют собой результаты подстановки этого значения z в перемно- жаемые полиномы. Покажем теперь, что для полиномов высокого порядка вычис- ления сильно упрощаются, если использовать рекурсивно-гнездо- вой метод. В подразд. 3.2.2 показано, что если N=NtN2, то про- изведение полиномов по модулю можно вычислить как про- изведение полиномов по модулю zK< —Zi, в котором скаляры за- менены полиномами степени N2—1, вычисленными по модулю ZiN2 +1. Если N — 2* и Ni^N2, то произведение полиномов вычис- ляется интерполяцией за 2Nt—1 умножений и Ni—11 + +4Afilog2Afi сложений. Это означает, что если и Ai— число умножений и число сложений, соответствующих полиномиально- му произведению по модулю zN‘ + l, то при M = 2fi и ^2 = 2'г чис- ла М и А, требуемые для вычисления полиномиального произве- дения по модулю zw+l, равны Л1=(2'-+1—l)Af,, (3.108) А = (2*.—11+/,- 2'-+2) 2'*+ (2*-+»— 1) Ai. (3.109) Аналогичный метод может быть применен для вычисления по- линомиального произведения по модулю z'v’^ + l с помощью вложения полиномиального произведения по модулю zN< —zt в полиномиальные произведения по модулю zNsNi +1, вычисляемы- ми, как уже было показано. Таким образом, произведение поли- номов по модулю zJV+'l, где N=NdiN2 и N2<ZNt, вычисляется ре- курсивно с помощью d одинаковых шагов, причем на каждом ша- ге вычисляется полиномиальное произведение по модулю zN1 —Zi, в котором на первом шаге скаляры заменены полинома- ми с A^id-W2 членами, на следующем — полиномами с Nid~~zN2 членами и, наконец, на последнем — полиномами с N2 членами. В этом случае общее число умножений М, используемое в ал- горитме умножения полиномов с N=2'= NdiN2 членами, составит Л4=(2«.+1— l)dM, (3.110) или, если dti + t2=t, M=Mi (2»-+‘—l)(<-w/‘-. (3.111) Так как (2'1+1—1)1Z'> >2, то число умножений М растет экс- поненциально по /. Если взять, например, /4 = /2=1 и Afi = 3, то М=3* и (M/N) = (1,5)'. Этот результат очень похож на тот, что был получен для нециклических сверток. Изложенный рекурсивный метод может быть значительно улучшен, если применить смешанные экспоненциально растущие основания. Рассмотрим, например, вычисление произведения по- линомов по модулю zJV-|-1, где N=2*, t=2d. Сначала вычислим это произведение по модулю zJV+l с помощью трех умножений, как показано в подразд. 3.7.2. Затем вычислим это произведение по модулю z4+l с помощью умножения по составному модулю 61
zz—Zt, z2i+l, требующего 9 умножений. Далее, вместо умноже- ния по модулю z8-f-l по схеме с фиксированным основанием вы- числим полиномиальное произведение по модулю z16+l, как про- изведение по модулю z4—Zi полиномов, определенных по модулю z44-l. Применяя эту процедуру рекурсивно, будем на каждом ша- ге работать с основанием, являющимся квадратом основания из предыдущего шага. Наконец, на шаге v произведение полиномов по модулю z2 + 1 вычисляется по составному модулю z2 —Zi, 2V 2°+1 x2 4-1 c (2 —l)Afi умножениями, где Afi — число умноже- ний, требуемых для вычисления произведения полиномов по мо- дулю z2 4-1. Следовательно, общее число умножений для поли- номиального произведения по модулю 2^4-1 есть Л4 = 3?П (22°+1—1). (3.112) ц—О Отсюда ЛК9-2й~3-22</, (3.113) а так как N=2zd, то число умножений-на отсчет M)N удовлетво- ряет неравенству Л1/У< (9/8l log2TV. (3.114) Итак, при таком подходе число умножений растет по N зна- чительно медленнее, чем при подходах, использующих постоян- ное основание, и при гнездовых методах. Заметим, что за исклю- чением константы (9/8), аналогичное (3.114) выражение имеет место и для вычислений сверток БПФ-методом. Применения гнездового метода по смешанным основаниям не ограничиваются случаем N=2*, t=2d. Для длин N, t=/=2d метод Таблица 38 Число арифметических операций для произведений по модулю zw-|-l, N=2*, вычисляемых методом вложения по смешанным основаниям Кольцо Основания Число умноже- ний м Число сложе- ний А z2+l 2 3 3 Z4 + 1 2, 2 9 15 z8 + l 2, 2, 2 27 57 z18 + l 2, 2, 4 63 205 z^+l 2, 2, 2, 4 189 599 z84 + l 2, 2, 2, 8 405 1599 Z12e+] 2, 2, 4, 8 945 4563 Z256+l 2, 2, 4, 16 1953 10531 z512+l 2, 2, 2, 4, 16 5859 26921 г1024+1 2, 2, 2, 4, 32 11907 58889 Z2048+l 2, 2, 2, 8, 32 25515 143041 Z4C9e+l 2, 2, 2, 8, 64 51435 304769 62
может применяться с незначительной потерей эффективности, ес- ли в. качестве начального взять полином, отличный от z2+l, и выбирать последовательность оснований, возрастающих экспонен- циально. В табл. 3.8 приводится число арифметических операций для различных полиномиальных произведений, вычисляемых с помощью этого метода. Число операций для циклической /V-точечной свертки, N=2*, можно определить по данным табл. 3.8.- При этом нужно учесть, что циклическую 2У-точечную свертку можно вычислить по сле- дующей схеме: сначала входные последовательности приводятся по модулю zN—1 и zw+l, затем вычисляются У-точечная цикли- ческая свертка и произведение полиномов по модулю zJV-|-l и, наконец, находятся выходные отсчеты по китайской теореме об остатках. Если одна из входных последовательностей фиксиро- ван'а, то восстановление по китайской теореме об остатках может рассматриваться как обратная для операции приведения и, следо- вательно, общее число Сложений для приведений и восстановле- ния составит 4N. Таким образом, все циклические 2*-точечные свертки вычисляются рекурсивно с помощью только двух алго- ритмов, соответствующих двухчленной свертке и полиномиальному произведению по модулю z2-f-l и приведенных в подразд. 3.7.1 и 3.7.2. С помощью этого метода циклическую 1024-точечную свертку можно вычислить за 9455 умножений и 48585 сложений. В табл. 3.9 приводится число операций на один выходной от- Таблица 3.9 Оптимальная длина блока и число операций для цифрового фильтра, реализуемого TV-точечными циклическими свертками и методом вложения по смешанным основаниям Ширина импульсной ха- рактеристики Ni Число умножений на отсчет A42(N, Ni) Число сложений на отсчет A?(N, Ni) Оптимальная длина блока N 2 2,00 4,43 8 4 2,80 9,80 8 8 4,16 16,43 32 16 5,98 23,39 64 32 7,19 31,11 128 64 8,00 43,83 512 128 9,34 51,28 512 256 11,91 62,37 2048 512 12,80 76,09 8192 счет для цифровых фильтров с фиксированной импульсной ха- рактеристикой, реализуемых методом перекрытия с суммирова- нием, в котором циклические свертки вычисляются рекурсивно- гнездовым методом по смешанным основаниям. По сравнению с данными табл. 3.6 этот метод требует меньшего числа операций, чем послойно-гнездовой, для фильтров с У 1^64. Такая экономия достигается одновременно с упрощением структуры алгоритмов, 63
поскольку все они применяют основание, являющееся степенью 2, в то время как при послойно-гнездовом методе основания взаим- но-простые. Другим преимуществом рекурсивно-гнездового мёто- да по смешанным основаниям является возможность хранить всего два очень коротких алгоритма, тогда как все остальные вспомогательные алгоритмы реализуются по единой программе типа программы для БПФ. 3.6. РАСПРЕДЕЛЕННАЯ АРИФМЕТИКА До сих пор при рассмотрении быстрых алгоритмов свертки мы ограничивались обсуждением алгебраических методов. Алгоритмы, разработанные с помощью этих методов, могут ис- пользовать любой тип арифметики, реализованный на ЭВМ, и в частности, они легко программируются для ЭВМ с обычной двоичной арифметикой. Покажем теперь, какая дополнительная экономия вычислений может быть достигнута, если использовать представление данных на самом низком, битовом, уровне. На этом уровне некоторые алгоритмы допускают эффективную пере- формулировку. В таком случае В-битовое слово представляется полиномом с двоичными компонентами, а арифметика учитывает структуру сверточных алгоритмов [3.10, 3.11]. При этом методе, называемом методом распределенной ариф- метики, нециклическая числовая свертка преобразуется в двумер- ную. Рассмотрим сначала свертку yt двух последовательностей Хтп и hn длиной N: N-1 yi— 2 hnxi-n, 1=0, ..., 27V—2. (3.115) п=0 Предположим, что каждое слово входной последовательности кодируется В-битовым словом: hn=^ hn, bl-2^, hn, 61б={0, 1}, (3.116) bt=0 B-l xm=2 xm,b2-2^, xrn,b2(={0, 1}, (3.117) b2=0 Подставляя (3.116) и (3.117) в (3:115), получаем N—1 В—1 В—1 ^ = 2 2 2 hn, blXt-n, bl-2b,+b* • (3.118) п—0 bi~0 b2—0 Далее, заменив 63 = 61 + ^2, имеем 2В—2 IN—IB—1 \ S 3 (3.119) 63—О \п—0 bi~0 / Последнее соотношение показывает, что yi действительно может рассматриваться как двумерная нециклическая свертка двух дво- ичных массивов из N~X,B членов hn,bl и хт,ъ2 В этой формули-
ровке каждая цифра уць, свертки yi не является двоично-кодиро- ванной и, следовательно, результат, полученный по (3.119), дол- жен быть преобразован к тому же формату, что hn и хт- При вычислении yi по (3.119) используется хорошо известный факт, что умножение чисел можно представить как свертку дво- ичных последовательностей [3.12]. Изменяя порядок операций в (3.118), получим В—1 ГЛ'—1 . в—1 Уг = 2 2 ( 2 х1—">ь2^Ьг 0 _я=0 \Ь2=0 24 (3.120) Это показывает, что yi получается суммированием В сверток yi.bi > определенных следующим образом: JV-1 В-1 X yi, ь,= 2 bi ( 2 х‘~п- )• (3.121) п=0 \й2—0 / Каждое слово есть свертка /V-битовой последоцательно- в—1 ста hn,bt с последовательностью из N слов Xi-n,b2 2Ь 2 =?хг_п. Та- bs=0 ким образом, каждое слово получается умножением х^п на hn,bt и суммированием по п. Поскольку йп.ь, может быть только 0 или 1, то вычисление гд.ь, может рассматриваться как сложение N чисел, из которых некоторые равны 0. Если хп — фиксированная последовательность, то значительное уменьшение числа операций может быть достигнуто предваритель- ным вычислением и запоминанием всех возможных комбинаций yi,bi- Так как есть 0 или 1, то число таких комбинаций равно 2JV. Поэтому, запомнив все 2N возможных значений Уць,, можно затем отыскать их в полученной таблице по адресу, пред- ставленному W битами йп.ь,. Зная уц,,, свертку yi легко вычислить с помощью сдвигов и сложений S-битовых слов. Эта процедура эквивалентна обычной схемной реализации умножения двоичных чисел и отличается только необходимостью в дополнительной па- мяти для запоминания 2N значений уь,ъ2 Таким образом, аппаратурная реализация коротких сверток в распределенной арифметике не более сложная, чем реализация обычного умножения чисел. На практике объем памяти, требуе- мый для хранения предварительно вычисленных произведений , можно сократить вдвое, кодируя слова hn битами со значе- ниями, эквивалентными ±1 вместо 0,1. В этом случае 2N частных произведений гд.ь, разбивается на 2W-1 различных по абсолютной величине, которые могут быть противоположными по знаку. Не- обходимо хранить лишь 2ЛГ_) абсолютных величин, тогда как из- менение знака реализуется аппаратурно. При использовании этого метода нужно хранить лишь 4 или 8 коэффициентов для нецик- лической свертки последовательностей длиной 3 или 4 соответст- венно. Большие свертки реализуются разбиением входных после- довательностей на группы по 3 или 4 отсчета для того, чтобы избежать чрезмерного расхода памяти. Следовательно, замена 3 Зак. 522 65
прямого вычисления свертки методом распределенной арифмети- ки дает повышение эффективности в 3—4 раза при том же при- мерно расходе памяти. Различные гнездовые алгоритмы вычис- ления больших сверток могут быть также реализованы на осно- ве распределенной арифметики с тем же выигрышем в эффек- тивности. Таким образом, используя одновременно методы вложения и распределенную арифметику, можно получать весьма эффектив- ные комбинированные алгоритмы для реализации цифровых фильтров на специальных устройствах. На практике концепция распределения арифметических операций для сверток на бито- вом уровне может быть применена различным образом. В гл. 8 показано, что особый интерес представляет использование моду- лярной арифметики для вычисления циклических сверток. В этом случае двумерное представление числовой свертки в распределен- ной арифметике приводит к появлению теоретико-числовых пре- образований, значительно упрощающих процедуру вычислений. 3.7. АЛГОРИТМЫ ВЫЧИСЛЕНИЯ КОРОТКИХ СВЕРТОК И ПРОИЗВЕДЕНИЙ ПОЛИНОМОВ В разделе детально излагаются алгоритмы вычисления коротких сверток и алгоритмы вычисления полиномиальных про- изведений. Такие алгоритмы минимизируют число умножений, из- бегая при этом чрезмерного числа сложений. Входные последова- тельности обозначаются хт и hn. Так как hn предполагается фик- сированной, то выражения, содержащие hn, считаются предвари- тельно вычисленными и запомненными. Выходной последователь- ностью является последовательность yi. Выражения в скобках со- ответствуют группе операций сложения. Входные и. выходные сложения выполняются в порядке возрастания индексов. 3.7,1. АЛГОРИТМЫ КОРОТКОЙ ЦИКЛИЧЕСКОЙ СВЕРТКИ 2-точечная свертка 2 умножения, 4 сложения Xq-— tnk—O'kbk, < y0=m0+mi, 3-точечная свертка 4 умножения, 11 сложений UO = Xo~hXi +%2> П1 = Х0-Х2, = а3=а!+а2, 66 Ьо= (йо + йО/2, Ь1=(й0—й1)/2, й=0, 1, , yi = Ьо = (йо+ /ii+ йг)/3, = —h2, Ьг—hi—h2, Ьз= (Й1 + Ьг)/3,
mh=ahbk, k=0, 3 UQ=mi—m3, Т/о= 777о + «о, У 2 — Шд + Hi, Ui = m2—т3. 4-точечная 5 умножений, Ив ~ Хд + Х2, G1 = Х| + Х3, О2 = <1о + 01, а3=ад—cti, U4 — Хд Х2, а5=х1—х3, Об = 04 + mk=dk+2bk+2, u0=m0 + mi, Ui = m0—ть yi = mo—uo—ui, свертка 15 сложений b0=h0+h2, bi =ht + h3, b2= (b0+bi)/4, b3= (bo—bl)/4, Ь4='[(й0-й2)-(й1-й3)]/2, b5='[(h0—h2) + (hi—h3) ] /2, b6= (й0—й2)/2, й=О, ..., 4, u2=m4—m3, u3=m4—т2, Уа=и0+и2, yi'=Ui +и3, y2 = Ug—U2, Уз=И1—Из- 5-точечная свертка 10 умножений, 31 сложение tZo = Xq—X4, d\=X\—X4, G2 = <7o + H1, d3 = X2—X4, a4=x3—x4, 05 = 03+04, a6=a0—a3, (I7—CI1—04, o8=a2—a5, bo=йо—й2+й3—Й4, bi =й(—й2+й3—Й4, b2= (—2йо—2й1+3й2—2й3+ЗЙ4)/5, Ь3 = —йо + hi—h2 + й3, &4 = —йо + hi—h2+Й4, Ь3= (Зйо—2й1 + 3й2—2й3—2Й4)/5, Ьб='—й2+й3, Ь?=й1—й2, Ь3= (—йо—й1+4й2—й3—hi)/5, Од—х0++ х2+х3+х$, bg — (йо+hi + h2 + й3+/14) /5, mh = a.hbk, k=0, ..., 9 ид=т0+п12, ur=mi + m2, и2=т3+т5, «5=7714 + 7775, U4=7776 + 7778, 05 = 777z +7778, У О = Чо—Ч4 + /719, Уз — «2 + Hi + 7779, У\ = — Uo—щ—и2—и3+т<), У4=и1—и5+тд. У2~Ч3~\-и3-\- Шд, 7-точечная свертка 10 умножений, 70 сложений Oq=Xi—Хв, Oi = x2—х6, 3*
02 = Х4-Xg, аз=%5—Хб> 04 = CLq + О,, а5=—а0+а,, а6=а2+а3, о?=—O2+G3, а8=х0—хе, as=a8+a4, Oio=o8 + o5, 0,1 = 09+04+04+05, 012 = 0,, «13 = *3—*6, Я14 = Я1з + Яб, О15 = О,з + О7, 016 = 014 + Об + Об + О7, О,7 = Оз, 0,8=013—а8, 019 = 0,4—ад, 020 = 0,5—Одо, 021=016—Оц, 022 = 017—0,2, 023 =019+ (Х2 + Х1+Х0) + + (Х2 + Л4+Х0) + Хб, Ьд — (—h8—2he+З/14—h8—2h8+ /ti +2/io) /2, b 1 = (1 ОЛб+З/25— 11 h4 + 1O/13+ЗЛ2—11 ht— — 4h0)ll4, bi= (—2/^6+ 3/z 5—h4—2h8-}-3hi—/ii)/6, b8~ (—he + h4—h8 + hx)/6, b4=2he—h8—2h4-]- 3h8—hi—2/ii + /io, be = (—2/t6 + he + 2/14—h8—2h3+3/t,—hg) /2, be= (3/i6—11/15—4/14+ Ю/13+З/12—11/ti + + 10/io)/14, &7= (3/i6—he—2Л3+З/12—hi—2/to)/6, b8= (he—/13 + /11—/i0)/6, bg=—h8—2/15 + /14+2/13—/12—2/ii +3/i0, bio= (2/14—h8—2/12+/11) /2, Ьц = (—2/ie—2/15—2/14+ 12/1з+5/12—О/li— — 2/i0)/14, 612= (—2/13+З/12—/ii)/6, /ii3 = (—h8+hi)/6, Ьц~ 2/1з—h3—2hi + hg, bie= (/1б+/15+'/14+/1з+/12 + /11 + /1о)/7, 15, mk=ak+8bk, k=0, .... 012= Оо + Оц, О,з = Ою + Оз, 0,4= 0,3-Ог, 015= (О13 + О3 + О3 + О4) +Ог, 016= —012—О,з— (О,з + О3 + О3 + О4) , О17* = Об + О8, 018 = 017 + 07, O19=Os + O18, 020=017 + 08, 021 = 020—О7, 022 = : (О20 + Os + U8 + О9) + О7, O23 = 019—О20 (О20 + 08 + Ов + О9) , 1/4=019 + 0115, 1/5 = 015 + 0115, //6 = 014 + 01,5. ug=mo + mio, 01 = 011 + 0111, O2 = !Ol2+.Oli2, 03 = «3+ 0113, 04=014 + 0114, 05 = 015—01,0, O6 = O16—Olli, O7 = O17-0112,. O8 = .018—0113, O9 = O19—0114, 0101=01 + O3, 011 = 0io + 02, 1/0 = 012 + 0115, 1/1 = 016 + O23 + 0115, 1/2=1122 + 01,5, //3 = 1121 + 0115, 8-точечная свертка 14 умножений, 46 сложений Яо = Хо+Х4, 6o = /lo + /14, fli=Xi+x5, bi = hi + he,
О2 = Хд + Хв, Из = Хз + Х7, О4 ~ Oq 4” 02, 05 = 411 4-Оз, 44б = Х0—Xit a7=xi—хд, 41g — Хд—Хд, ад^ Х3—Х7, 0)0 = Oq—а2. 4111=411—Из, 4112=414 + 415, 4113 = 414—4l5, 4114 = 417 + 419, 4^15 = 41б + 418, 016 = 015—014, О17 = Ов—Од, 018= О6—О7, 019 = Ою+Оц, ftik=ak+B^k+e, и0=т8 + т10, ui = m9—гпю, и2=тз+тц, из=тп—т2, Ui=tn.\+m\2, из = ^тд—Шх2, ив=гП1з—т5, и7=т 1з+т4, и8 = т7 + тБ, Уа=Ию+иц, У\ =012 + 013, 4/2 = 014 + 015, 4/3 = 016+ 017, Ьг = h2 + hg, Ьз=hs+hj, 64=69+62, 65=61 + 63, 6б = {[— (hg—hi) + (hg—hg) ] — [ (ht—65) — - (63-67) ]}/2, 67— { [— (60—64) + (62—hg) ] + [ (61—65) + + (63—67) ] }/2, 6e= {[ (60—64) + (62—hg) ] + [ (61—hg) + + (63—67) ] } /2, 69= { [ (60—64) + (hg—hg) ] + [ (61—65) — -(63-67)]}/2, ' [—(60—62) + (61—63)]/4, [(60-62)+ (61-63)]/4, 64 + 65)78, 64—65) /8, (60-64)-(63-67)]/2, [(60-64) +(61-65)]/2, (60-64)/2, [ (60—64) + (62—66) ]/2, . — (hg-hi) + (hg—hg) ]/2, 619= (60—62)/4, 6=0, ..., 13 610 = 6ц = 612= 613'= 614 = 615 = 616 = 617 = 618 = 448=046—m7, 010 = Oo—O2, 44ц = 44б + О8, 012 = О] + O3, 013 = 07 + 09, 4414 = 44o + 04, 015 = —Об + Os, 016 = 01 + 05, 017 = —O7 + O9, 4/4 = Ою + Оц, У 5 = —012+ 0.13, 4/6 = Oh + 4415, У7 = -—4416 + 017- 9-точечная свертка 19 умножений, 74 сложения 44q Хд Хд, 441= Xi—Х7, ад=Х2—Хд, а3 = Х3—Хд, О4 = %4—Х7, а5=х5—х8, ад = Хд+Хз~ЬХд, а7=Xi+Xi+х7, = Хд+Хд+Xg, 601= —hg—h8+266, 61 = —61—64 + 267, Ьд= —hg-hg + 26s, 63 = 60—263 + hg, bi—hi—264+67, 65 = 62—2 65+63, 6б = 6о+6з + 6б, 67 = 61 + 64 + 67, bg = hg + hg + h8,
ад — cig+Й2, О,0 = Оз + О5, ai 1 = Че + о? + аъ, U12=Glo + a4, 013 = 09 + 01, 014 = 013—012, 015 = 0)0—О4, 016 = Og—Oj, 017 = 016—Oi5, 018 = Оз, 019= Оо—О3, О20 — Go, O21 = O5, 022 = 02—O5, a23 = 02, O24 = —O22 + Ofl-—O4, О25 = Ою + О5—Oi, 026'= —O25 + O24, 027 = Об—Og, 028 = 07—Og, 029 = 027 + 028, bg = (be+ ^7 +&e)/9, bio= (bo+3b, +2f>2—2b3—3&4—fos)/18, Ьц = (bo—Ьг+Ьз+3&4+2b5)/18, Ь12=Ью+Ьц, Ь13= (--Ьо + bl-1>4 г b5)/6, b\4= (bo—b^—bs + bi) /6, Ь|5 = Ь[з + Ь14, bi6= (2fc>0 + bi—f>2—2йз + Ьб)/3, bn= (2b0—Ьг+&4)/3, bi8=bi7-—bie, bi9= (bo—bi—2b2 + b4)/3, Ьго= (—bi + b3—2£>s)/3, b%i = Ьго—big, ba= (bo—b2—2b3+2b5)/9, Ь?з= (—Ьо+Ьг—Ьз + bs) /9, Ь24=Ьгз—b22, Ьг5= (Ь6—Ь8)/3, b26=(b7-b8)/3, bn— (bz^-Vbzo)!^, mk=ak+ubk+9, k — 0, 18 Oo=mi + m2, 01=^4 + 015, 02=0114+01,5, Оз = «о + 01, 04 = 701 + /О3, u5=mt+m6, Об=/и,з + m,5, O7 =—W3 + OI7, 1/8=04+05, 09 = 7010—Об, Oio = 70g+ 7/2 + 07, Оц‘=О8 + ТОц +Og, O12 = O4—O5 + O2, O13 = O7 + Og + 7O9 + Og, 014= O3 + 7012 + O9 + O2, Oi5 = Oo—Oi + Об, O|6=/Oi6—7016, 017= 7017—m!g, Oi8 = TOo + Oi6, 019= TOq—016—017, //20'= Olfl + 0,7, У0 = О13—O|o + Oig, 7/1 = 014—O11 + O19, 1/2 = 015—O12 + O20, УЗ — —O13 + O18, У4 — —U14 + O]9, У 5 — —O15 + O20, l/6 = Oio + 018, 7/7 = 011 + 019, //8=O12 + O20- 3.7.2. АЛГОРИТМЫ ПРОИЗВЕДЕНИЯ КОРОТКИХ ПОЛИНОМОВ v Произведение полиномов по модулю z2 + l 3 умножения, 3 сложения Оо=Хо+л:1, bo=ho, O]=Xi, bi = ft0+bi, о2=Хо> bi = bi—ho, mh=akbk, k=Q, 1, 2 7/0=77/0—oil, yi — m0 + m2.
Произведение полиномов по модулю (z3—l)(z—1) 3 умножения, 3 сложения а0=хь b0=hQ—hi, a.i=Xp—хь bi = h0, a2=x0, b2=ht, mk—akbk, fe = 0, 1, 2, y0=m0 + mi, yi = m0 + m2. Произведение полиномов по модулю z4 + l 9 умножений, 15 сложений <?o=(xi+X3), b0=h0—h2, Oi=(xo+x2)— (xj+хз), bi = /io, а2= (хо+х2), аз=х3, П4 = Х2—Х'з, а5 = Х2, аб=хь а?=х0—хь а8=х0, b2=ho + hi, Ьз=h0+h2+hi—hz, bi=ho-}- h2, b5 — ho+h2 + hi + hz, bz=—-ho+h2+hi + hz, b7=—ho~]-h2, be=—h0+h2—hi+hz, mK=akbk, fe=0, ..., 8 у0= (т0+т() —(m3+m4), у2= (m0+mi) + (m6+m7), У i = (т2—mi) + (m4—m5), ул = (m2—mx) + (m8—m7). Произведение полиномов по модулю (z5—1 )/(z—1) 9 умножений, 16 сложений a0=^x0, aY~ xh a2=x0—xi, a3=x2, a4=x3, a5=x2—x3, £Zg Xq x2, a7—Xt—x3, <?8 = —<7б + а7, bo = ho, bi = hi, b2~—ho-}-hi, bz~h2, Ьц=Ьз, bz~ —h2+h2, be=h2—h0, b7=h2—hi, Ьв=Ьб—b7, mk=akbh, k=0, u0= m0—m7, y0=u0—mi + mz, yi = Ui—mz—m7, ..., 8 Ui — m2 4- mo, yi=Uo—mi+m&, ys=Ui + m.$+mo + mg. Произведение полиномов по модулю (z9—l)/(z3—1) 15 умножений, 39 сложений G(j=Xo + X2, Qi=Хз+хз, O2=ai+x4, аз = ао+х1( b2— (/io+3/ii+ 2/i2—2/13—3/i4 ho)/6, b2— (ho—h2-i7ho~i-3hi-l-2hB) /&,
щ=а3—а2, U3~d\—Xi, ae=a0—Xi, dT = a6—a5, a3=x3, a9=x0—x3, Oiq = Xq, du=x3, aiz=x2—x3, Ol3 = X2> au=— 012+x0—Xi, O|5 = Og + Xs—Xt, 016 =-Oi5 + O]4, b4 = 'b2 + ^3> b3— (—ho-}-hi—hi+h3) /2, b3= (hg—h2—/13+ /14)1/2, bi=b3-\- b3, b3=2/io + h\—h2—2/13+/15, b9=2/t0—h2 + hi, bio—b9—b3, Ьц — ho—hi—2h2+hi, bi2——/11+/13—2/15, bi3—bi2—Ьц, Ьц= (ho—h2—2/13+2/15)/3, bis = (—/10+/12—/13+/15) /3, bi6= bi3—Ьц, mh = ak+2bk+2, k = 0, ..., 14, Uo=mo+mi, Oi = 013+014, tl2 = О1|з + ГПц, 0з = 0о + 01, Hi — Olg + 012, Уо~ Ш7 + U2 + O7, У1 = 0з + 011о + ид, 1/2 = O4—U5 + U2, U5=m3+m3, 0112+mu, u7^—u3+tno, 118 = O4 + 05, tig = Olg—Об, //з = О7 + О8 + О18 + О6, 1/4 = Оз + О1ц +Од + Ог, Уъ — Од—О, + Об. Произведение полиномов по модулю (z7—1 )/(z—1) 15 умножений, 53 сложения dO=Xo~}-X2, О1 = Оо + ^1, 02 = 01 +%2, 03= Х3 + Х5, ai=a3+Xi, О5 = О4 + Х6, Об = Х0, 07 = 01, 08 = 00—Хь Од = О2.+ О2 Х0, Ою = Х2, О11 = Хз, 012 = 04, 013=Оз—Xi, 014 = О5 + О5—Х3, 015 = Х5, 016 = Оц—О6, 017 = 012-О7, 018 = 013—08, Oig = Oi4-йд, О20>=О15—Ию, Ьо= (—2/15 +'3/t4—/13—2/12 + hi + 2/io) /2, bl = (З/15—11 hi +10/13+З/12— 11/ti—4/i0)/14, b2= (3h3—hi—2/13+З/12—hi} /G, b3 — (hi—/1з+/11)/6, bi=—h3—2/14+ЗЙ3—h2—2hi + /to, b3= (/15+2/14—h3—2/12+З/11—ho) /2, /?б= (—11/15—4/14+ IO/13+З/12— 11/ti + 10/ig) /14, b7= (—h3—2/13+З/12—hi—2/to)/6, b3— (/15—/13+/11—ho) /6, b3==—2/15+714+ 2h3—h2—2hi~}~3ho, bio— (2hi—h3—2h2-}-hi) /2, Ьц = (—2/15—2/14+12/13+5/12—9/ti—2/io) /14, bi2= (—2/13+З/12—7ii)/6, &1э= (—h3+hi)/6, . bu~2h3—h^—2hi +/to, mfe=afe+6Z>fe, fe=Q, ..., 14,
Ui2=Uo + Un, Wl3 = Wlo + W3» Ul4 = Ul3—U3, Ul5=U13 + ZZ3 + U3 + U4 + U2, Ul6~'~Ui2—u15—U[4, U17=U7---Us, щ8=и3-\-ип-\-и7, U\9 = U\7—U8—U8, U2O= (ZZ7 + ZZ8) + (zZy + ZZg) +ZZ9, ZZ21 =IZ19 + ZZ19, ZZ22 = ZZ2i—ZZ(8, ZZ23=Z/2i—U20, Уё—Иц-\-и2\, У 4 = U12 + U22, Уё = ^20- Uo^me+mo, Ui=me + rrii, U2=m7 + m2, u3=m8 + m8, Ui = me + trii, u8 = tn to+ tn0, ue=mu + mi, ZZ7 = Z7li2 4"Z7l2, u8 = mi3+m8, Ug = Z7Zi44- Zn4, Gio = Gi 4-Мз, zzn = zzi04- u%, Уо = Uts, У1 = Uje4-zzj9, У 2— G|6 4" U23, Произведение полиномов по модулю z84-1 21 умножение, 77 сложений Оо—Хо4-х2, а1=х14-х3, Й2 = Х0—Х2, а3=х7—х5; а4=х4+Хб, a5=xs4-x7, ае=х4— хб, a7=xi—х3, а8 = ао+аь zz9=zz44-O5, aio = a8 + a9, аи = а0—zzi, ai2=a4—a5, ^13 = all +a12, ZZ14 = ZZ2 + ZZ3, О15 = аб + а7, ai6 = ZZl4 + ZZ15, al7 = a2—a3, al8=a6—a7, ai9=at7+aI8, ^•2O = Xo 4~X4, «21 = X0, Й22 = Х4, Й23 = -^з + л:7, ZZ24 = X3, G25 = X7, G26 = Ct 15—Gg + Xq —ZZ23i 027 = ct8—a 14 + X3 + x4—x7, 0.26 =Й26 + O27, bo— (^0 + + h-2—h3+hi+h3 + ft64- h7) /4, b{ = (— ho—hi—h,2—h8 + h4+h5+h8—h7) /4, b2= (h3—h4—h5—he) /4, b3 = (5h0—5й( + 5Л2—7/z34-5h4—5he~f- +5he—h7) /20, bi= (—5ho + 5hi—5/12+h3+5/i4—5/is + +5he—7/i7)/20, b8~ (З/13—5/i4+5/i6—5/i6+4/i7)/20, be= (h8+h i —/12—h8 + hi—h8—he+3/z7) /4, b7= (—/zo + ^1 + ^2—3/гз+/14+/15—he— -h7)/4, b8= (—/11+2/13—hi+he—h7)/4, bg— (5/io—5/ij—5/^2 h8 -f- 5hi 4- 5h8— —5he—3h7) /20, &io,=:i(—5/zo—5/z 14-5/i2+3/z3 4-5/i4—5/15— —5h6+h7)/20, bii=(5ht—2/13-—5/i44- 5he-}~h7) /20, •b 12=ho—h8 4- hi, bi3=—2ho+h8—h7, Ьц'= he—2hi 4~ h7, bie=—he+he—2h7, bte = 2h8—2he-^-2h7, bi7—2h2—2/13+2h7, bi8= (—h8+h7) /5, Ью= (—h3—h7)/5, ^20= /1з/5, 73
20, 4414 = Ui—44з, U15—U4 + U0, 4416 = 444—U8, lll7 — ll3-\-ll7, ZZi8 = ZZg—ZZ7, zz19=m18—mls, ZZ2O = ZZg + mi4, ZZ2r= Z4ig 4" 44jg, u22=mi3—u2i, 4/23 = 44224“ ZH16, ZZ24 =--Z422-tn 17, ZZ25=ZZg + ZZ8, ZZ26 = U25 + Z425, ZZ27=ZZ1g + ZZ25, У 4= 11ц +ZZi5-]-Z/K) + ZZ1g, У 5 = —W[4—ZZ16 + ZZ24 + W26, УО — —ZZi3 + ZZi7 + ZZ2( + Н25> y7 =---Z/u + ZZie-f-ZZig. mk = ak+sbk, k=G, Ug= tn3-}-tn2, tii = mi + m2, u2=m3 + m5, и3=т.4 + m3, U4 = m6 + m8, u5=m7 + m8, и6=т9 + тц, u7=mi0+mil, u8 = m2o-{- Шю, u9=mi2+u8, ZZig = ZZg4-ZTli3, 11ц =ZZg + ZZ2, ZZi2= ZZg—U2, Щ3 = И1 + u3, Уо = W[3 + ZZ17 + U20, УI = W12—W[8 + ZZ23, У2—ЧЦ—Ui5 + Z/25, Уз = и12 + ll 18 + 4427, 3.7.3. АЛГОРИТМЫ КОРОТКИХ НЕЦИКЛИЧЕСКИХ СВЕРТОК Нециклическая свертка двух последовательностей длиной 3 умножения, 3 сложения (1 входное сложение, 2 выходных жения) ао=Хо, 441 =Хо + Х1, a2=xi, mk = akbk, Уо=та, yi = mi~ т0—т2, Нециклическая свертка двух последовательностей длиной сложений (7 входных сложений, 13 выходных k=0. Ьо—ho, bi = h0 + hi, b2=hi, I, ..., 2, № = 47l2- 2 СЛО- 5 умножений, 20 сложений) a(f=Xl +x2, ZZ[ = X2—Xi, a2=x0, a3—Xo+ao, ZZ4 — Xg 4- ZZj, a5=a0+a0 + ai + a3, a6’=x2, mk=ak+2bk, tio—tn^ 1П4, Ui — mi + mi, u2=m0 + m0, Уо>= u2, У1 — И1—-ZZ3 + U4, 4/2 — '—U2 + U3 + W5—Z7Z4, fe = O, 4, bo—йд/2, b\ — (/io+ht + h2) /2, b2= (ho—hi + h2) /6, b3= (/i0 + 2/i1+4/z2)/6, b4='h2, «3=m2+m2, щ—и0—m0—m3, u5 = mi +m2, y3——U4—u5, У4=ГП4. 3 74
Глава 4 БЫСТРОЕ ПРЕОБРАЗОВАНИЕ ФУРЬЕ Цель главы — дать краткое описание основных свойств дискретных преобразований Фурье и изложить различные методы их быстрых вычислений, известные под общим названием быст- рых преобразований Фурье. ДПФ играют важную роль в физике, так как они устанавливают связь между временными и частот- ными представлениями дискретных сигналов. Использование ДПФ-методов получило особенно широкое распространение с 1965 г„ когда были открыты БПФ-алгоритмы, на несколько по- рядков снижающие число арифметических операций, необходимых для вычисления ДПФ. Это позволило решить большое число не- доступных до этого практических задач. 4.1. ДИСКРЕТНОЕ ПРЕОБРАЗОВАНИЕ ФУРЬЕ ДПФ Xk последовательности хт из N членов опреде- ляется выражением Xh^N^xmWmh, 6=0, ..., А—1; U^=exp(—j 2л/А), ) = (4.1) /п~0 Последовательность хт представляет обычно А последователь- ных отсчетов х(тТ) непрерывного сигнала x(t), тогда как после- довательность Xk можно рассматривать как представляющую А последовательных отсчетов X(kf) в частотной области. Таким об- разом, ДПФ является аппроксимацией непрерывного преобразо- вания Фурье. Связь между непрерывным и дискретным преобра- зованиями Фурье хорошо известна [4.1—4.4]. Ряд свойств ДПФ, которые в дальнейшем будем использовать, изложены в этом раз- деле. Важнейшее свойство ДПФ — его обратимость, так что хт и Xk взаимно однозначно определяют друг друга. Обратное для (4.4) преобразование имеет вид j N—1 z/t=— У XkW~lk, /=0, ..., А—1. (4.2) N k=o Взаимная обратпость этих преобразований легко проверяется подстановкой Xk из (4.1) в (4.2), что дает Л'—1 , М—1 У1= У xm-- S (4.3) т—О N k—0 Так как ^=1, то т—1 определено по модулю А. Для т—1= N—1 =0 mod А, 5 = 2 W7(m-Z)fe=A- Для m—h£0 mod А имеем 5 = *=о =1[1У'(т-ом—1 ]/(Wm~l—1), и так как Wm~l=/=\, то 5 = 0. Таким об- 75
разом, ненулевые значения S получаются лишь при 1 = т, что да- ет yi=xm. С помощью ДПФ можно вычислять циклические УУ-точечные свертки N—1 yi= s hnXi-n, 1=0, ..., N— 1. (4.4) n=0 Для этого вычисляются ДПФ Hh и Xh последовательностей hn и хт, затем произведения НьХ^ и, наконец, находится обратное ДПФ Ci последовательности HkXk. Тогда N— 1 N—1 , N~ 1 Ci= s s hnxm-^~ S (4.5) n=0 m=0 N k=0 Используя процедуру, аналогичную описанной, получим, что Л’—1 S = 2U7(m+n^,)fe^0 для т-\-п—1^0 mod N и S=N для m-f-n—/=0 л=о mod N. Таким образом, т=1—п и yi = ci. Следовательно, цикли- ческая свертка вычисляется тремя ДПФ и N умножениями. При прямом вычислении ДПФ этот подход малоприемлем, так как каждое ДПФ вычисляется 'за N2 умножений, тогда как прямое вычисление свертки также требует /V2 умножений. Однако, если используются быстрые алгоритмы вычисления ДПФ, то этот ме- тод становится весьма эффективным. 4.1.1. СВОЙСТВА ДПФ Для того чтобы как можно более сжато изложить свойства ДПФ, будем применять следующее обозначение для соответствия последовательности хт и ее фурье-образа Xh: ДПФ {Хт} <=> {-Xfe}, (^-6) Вводя одну последовательность hn и ее фурье-образ ГН,, выпишем основные свойства ДПФ. Линейность: дпф {xm} + {ftn} ФФ {%Д + {Hk}, (4.7) дпф {pXm} {pxk}. (4.8) Эти свойства следуют непосредственно из определения (4.1). Симметрия: ДПФ {х_т} фф {Х-л}. (4.9) Это свойство доказывается прямым вычислением TV—1 N— 1 Ak= Ц x_mIP»fe = (4.10) т—0 m—Q Таким образом, Ak=X-k-
Инвариантность относительно сдвига по времени: ДПФ {хт+г} <=> (4.11) Действительно, N-l N-1 Ak = S xm+iWmk = S xm+lW^-i*. (4.12) m—0 m—О Следовательно, Ah=W~MXk. (4.13) Инвариантность относительно сдвига по частоте: ДПФ {Wlmxm} ФФ {Xfe+Z}. (4.14) Доказательство этого свойства получается из предыдущего до- казательства путем замены ДПФ на обратное преобразование. ДПФ перестановки последовательности: ДПФ (4.15) Предположим, что элементы хт переставлены в результате за- мены т на рт по модулю N, где р — целое число, взаимно-про- стое с N. Тогда ДПФ Аь последовательности xprn вычисляется следующим образом: N—1 Ак = 2 xpmWmh. (4.16) m=0 Так как (р, TV) —1, то найдется такое q, что qp=l mod ЛА Выражение (4.16) не изменится при замене т на qm mod N. По- этому получаем N— 1 Ац= S pPqmW™<ib=xqk. (4.17) т—О Корреляция вещественных последовательностей: N—1 ДПФ { s hnXi+n} ФФ {/7*fcXfc}, (4.18) п=0 Так как корреляция получается из свертки обращением од- ной из входных последовательностей, по свойству ДПФ свертки последовательностей вытекает, что корреляция двух последова- тельностей получается с помощью ДПФ свертки h-n и хт‘. N—1 ДПФ _ _ { s hnXt+n} ФФ , (4.19) п=0 где H_h= 2 hn exp (j 2nnklN). (4.20) n=o Поскольку hn — вещественная последовательность, то из (4.20) следует = где H*h— комплексно-сопряженное к Hk. 77
Равенство Парсеваля: Равенство Парсеваля является прямым следствием свойств W—I корреляции, так как ^х2т представляет собой первый член авто- т~0 корреляции хт. Таким образом; N—1 N—1 . М—I . Л-'—1 S Х2т = S хтхт= S X\Xk= 4- S |Xfe|2, (4.22) 0 т~ О N k-^0 N k=0 где |Xft| —абсолютная величина Х& 4.1.2. ДПФ ВЕЩЕСТВЕННЫХ ПОСЛЕДОВАТЕЛЬНОСТЕЙ Во многих практических приложениях входная последователь- ность хт вещественная. В этом случае ДПФ Xk последовательно- сти хт обладает специальными свойствами, вытекающими из сле- дующего представления ДПФ вещественных последовательностей: N—1 /V—1 Xk= 2 xmcos{2ntnklN)—j 2 хт sin(2nmklN)_. (4.23) т—0 m=0 Поскольку хт—вещественное число, то из (4.23) следует, что Re{JVfe} — четная, a 1т{Хь} — нечетная по k функции: Re{Afe} = Re{X_fe}, (4.24) Im{Xfe}=— Im{X-fe}, (4.25) |Xfe| = |X_ft|. (4.26) Аналогично в случае, когда хт — чисто мнимая последователь- ность, получаем Re{Xfe}=-Re{X_fe}, (4.27) Im{Xfe} = Im{^fe}, (4.28) |Xft| = |X_h|. (4.29) Эти свойства позволяют вычислять одновременно преобразо- вания Хь и Xlk двух вещественных последовательностей хт и х1т с помощью одного ДПФ. Для этого вычислим ДПФ последова- тельности Xm+jx1™: П = V(xm + j х'т) Wmk, (4.30) Pw=Xh+jXift. - (4.31) Следовательно, R{Fh} =Re{X,t}-Im{XM, (4.32) Im{Fh} = Im{^fe}+Re{^h}- (4.33) 78
Используя свойства симметрии, получим Re{X«} = (Re{Ffe} +Re{y_ft})/2, (4.34) Im{X/t} = (Im{Fft}—Im{y_fe})/2, (4.35) Re{X*h}~ (Im{yft} + Im{y_ft})/2, (4.36) Im{X‘ft} = (Re{y_fe}-Re{yh})/2. (4.37) 4.1.3. ДПФ ЧЕТНЫХ И НЕЧЕТНЫХ ПОСЛЕДОВАТЕЛЬНОСТЕЙ Если хт — вещественная четная последовательность, то хт— =Х-т. В этом случае N—1 М/2—1 2 xmsin(2nmk/N) — 5 (хт—x.m)sin(2nmk/N) =0. (4.38) т—0 Отсюда вытекает, что ДПФ Xk последовательности хт — четная и вещественная последовательность, так как N—1 Xk= S xmcos(2nmk/N). (4.39) m=0 Аналогично, если хт — нечетная вещественная последователь- ность, т. е. хт=—Х-т, то ДПФ Xk есть нечетная чисто мнимая последовательность. Немедленным следствием из этих свойств является веществен- ность ДПФ Xk сопряженно-симметричной последовательности хт, такой, что хт=х*-т. Аналогично, если хт — кососопряженная по- следовательность, т. е. хт=—х*-т, то ДПФ Хк этой последова- тельности — чисто мнимая последовательность. Эти свойства мо- гут быть использованы для вычисления ДПФ двух сопряженно- симметричных последовательностей с помощью одного ДПФ [4.5]. Для этого образуем вспомогательную последовательность ут из двух сопряженно-симметричных последовательностей хт и х1™ следующим образом: ym = XmWm-\-Xim. (4.40) По свойству инвариантности относительно сдвига ДПФ Уь по- следовательности ут имеет вид yfe = Xfe+1+X\. (4.41) Так как хт и х1т—сопряженно-симметричные последователь- ности, то их ДПФ Xk и Х1к такие, что Xk+i=X-k-i и Xik = Xi-k. Отсюда следует, что F-h-^Xfe+^fc+i, (4-42) а Хо и Х1!) вычисляются непосредственно: N—1 S хт, (4.43) т=0 N— 1 Х‘о= S х‘т. (4-44) 79
Тогда все остальные значения Xh и Xlh получаются последова- тельно из соотношений Xk+l=Yk—X\, (4.45) ЛЧ+1 = У-fe-i— Xh. (4.46) Аналогичный способ может быть применен для вычисления ДПФ двух сопряженно-антисимметричных последовательностей или четырех четных (или нечетных) последовательностей с по- мощью одного ДПФ. 4.2. АЛГОРИТМ БЫСТРОГО ПРЕОБРАЗОВАНИЯ ФУРЬЕ Рассмотрим Af-точечное ДПФ Xh, где N — составное число: М-1 Xh = S xmWmh, k = 0, .... N— 1; ^=exp(—j2n/W). (4.47) m=0 Если М=Л\М2, to индексы m и k можно преобразовать сле- дующим образом: m=A^im2+mi, ть &i = 0, ..., А/)—1, (4.48) fe — A'^fej +/^2, т2, &2 = 0, Л^2—1- (4.49) Подставляя (4.48) и (4.49) в (4.47), получаем ^N2kt+k2 Nt-i = у W г т2=0 £ lXNtm2+miW^m2k2 m2—0 (4.50) ИЛИ, = ехр(- полагая -j2jr/A72), = WN‘ — exp(—j2n/M) и 1F2 = WN' = Xn2 k2+k2 А,—1 .= s w? . k2N^ XNim2+miW^k\ (4.51) тх—0 т2=0 откуда следует, что Л\Лг2-точечнре ДПФ можно рассматривать как ДПФ массива NiXNz, за исключением фазовых множителей Таким образом, вычисление Хь выполняется в три этапа: сначала вычисляются Ач преобразований Ymt.k2, соответствующих Ni различным значениям тс Ут2.ь2 = £ xNim2+mi (4.52) тг~ О Затем ymi,fe2 умножаются на фазовые множители Wm'ki и, на- конец, Xh получаются вычислением N2 А^-точечных преобразо- ваний: — Wi-J— t . = 2 ymi.^mi lWTlkl. (4.53) АП1=О Эти вычисления могут выполняться и в обратном порядке, при этом сначала выполняются умножения на фазовые множи-
тели, затем — два последовательных преобразования Фурье. В этом случае __ n2—1 n±—1 XN2kl+kl= 3 2 (xNim2+miW^k>) (4.54) m2=0 mi=C Таким образом, оба типа БПФ-алгоритма эквивалентны по вычислительной сложности. В обоих случаях порядок индексов входного и выходного столбцов меняется. Так, если входная по- следовательность представлена N2 полиномами с JV4 членами, то выходная последовательность представляется JVi полиномами с N2 членами. Следовательно, процедура перестановки должна быть добавлена к трем основным шагам БПФ-алгоритма. Эффективность БПФ-алгоритма обусловливается заменой од- ного большого ДПФ на несколько малых. Так как число опера- ций, требуемое для прямого вычисления JV-точечного ДПФ, про- порционально N2, то число операций резко уменьшается при за- мене прямого вычисления на серию вычислений малоточечных ДПФ. В простейшем случае прямое вычисление JV-точечного ДПФ, N=N}N2, требует N2jN22 умножений. Если вычислить это ДПФ с помощью БПФ-алгоритма, соответствующего (4.52) и (4.53), то вычисления разбиваются на JV] ^-точечных ДПФ, N2 JVi-точечных ДПФ и NtN2 умножений на фазовые множители. Таким образом, число умножений, необходимое для вычисления Л^2-точечных ДПФ с помощью описанного алгоритма, уменьшится до 7И=JVjJV22+NaN^ +N1N2=NlN2(Ni+N2+l), (4.55) что, очевидно, меньше JV2iJV22. На практике БПФ-алгоритм значи- тельно более эффективен, так как если JV-точечное преобразова- ние содержит большее число множителей, то алгоритм БПФ мо- жет применяться рекурсивно. В таких случаях для описанной двухфакторной процедуры каждый множитель Ni и N2 сам пред- ставляет составное число и, следовательно, JV4- и JV2-TO4e4Hbie ДПФ снова вычисляются с помощью БПФ-алгоритма. При та- ком подходе каждый шаг рекурсивного применения БПФ умень- шает число операций, в результате чего эффективность алго- ритма возрастает, если JV обладает большим числом множителей. Это обстоятельство и желание иметь достаточно регулярную структуру БПФ-алгоритма обусловливают особое внимание к ис- пользованию его к входным последовательностям, длина кото- рых — степень целого числа. Как правило, выбирается степень 2 (именно для этого случая описан первоначальный БПФ-алгоритм [4-6]). 4.2.1. БПФ-АЛГОРИТМ ПО ОСНОВАНИЮ 2 Рассмотрим ДПФ Хк последовательности хт длиной JV=2f. В этом случае первый шаг БПФ выполняется при JVi = 2 и JV2 = 2* *, что эквивалентно разбиению JV-точечнои последовательности х-т на 81
две (JV/2)-точечные последовательности х2т и Хгт+i, соответствую- щие четным и нечетным отсчетам хт. При этом N/2—I -N/2—1 Xh= 2 x2mW^k + W^ 2 x2m+}WZmh (4.56) m=0 m=D и, так как WNI2= — 1, то N/2—1 N/2—1 Xh+N/2= 2 x2mW'2mh— 2 x^+yW*^, A?=0, N/2-1. (4.57) m=0 m=0 При таком способе, называемом прореживанием по времени, JV-точечное ДПФ сводится к двум JV/2-точечным ДПФ, JV сложе- ниям и JV/2 умножениям на Wk. Эта же процедура применяется теперь для замены двух JV/2-точечных ДПФ на четыре JV/4-точеч- ных ДПФ, N сложений и N/2 умножений. Последовательное приме- нение метода вычисления JV-точечных ДПФ, JV=2f, приводит к f=log2JV шагам, на каждом из которых 2’ 2г-;-точечных ДПФ сводятся к 2i+1 2‘-*-1-точечным ДПФ за N сложений и N/2 умно- жений. Следовательно, число комплексных умножений М и число комплексных сложений А, требуемых для вычисления JV-точечного ДПФ по основанию 2, таковы: JW=(JV/2)log2JV, (4.58) A = N log2JV. (4.59) Метод прореживания по времени для 8-точечного ДПФ пред- ставлен на рис. 4.1. Во взвешенном ориентированном графе каж- дая вершина соответствует переменной, а каждая дуга (стрелка), оканчивающаяся в данной вершине, соответствует аддитивному слагаемому с весом, указанным при данной дуге. Результирую- щее значение переменной, соответствующей этой вершине, вычис- ляется как сумма значений переменных, соответствующих началь- ным вершинам всех дуг, входящих в данную вершину, умножен- ных на веса соответствующих дуг. Другая форма БПФ-алгоритма получается разбиением вход- ной последовательности хт на две части — хт и xm+N/2 — из N/2 членов, соответствующих JV/2 первым и JV/2 последним отсчетам хт. Этот метод называется прореживанием по частоте. При этом N/2—l Xh= 2 (xm+W^xm+n/2)Wmh. (4.60) m=0 Вычислим теперь четные и нечетные отсчеты Xk- Для k четно- го, заменяя k на 2k, получаем М/2—1 X2h= 2 {xm+xm+N/2)W2mk, k=0........ N/2— 1. (4.61) m=0 Заменяя k на 2k-j-'l для нечетных k, получаем N/2-l X2h+x = 2 {xm-xm+N/2)W^Zmk, k=0, ..., JV/2—1. (4.62) m=0 82
Таким образом, Xk вычисляется по (4.62) и (4.61) за два A/i/2- точечных ДПФ с предварительными умножениями на элемен- тов входной последовательности в (4.62). Следовательно, вычисле- ние AZ-точечного ДПФ сводится к вычислению двух Л//2-точечных ДПФ за N комплексных сложений и N\/2 комплексных умножений. Рис. 4.1. Направленный граф БПФ с прореживанием по времени (N=S) Рис. 4.2. Направленный граф БПФ с прореживанием по частоте (N=8) Как и в случае прореживания по времени, этот метод может ис- пользоваться рекурсивно для вычисления ЛЛточечного ДПФ за logsjV шагов, на каждом из которых 2’ 2' ~,'-точечных ДПФ сводят- ся к 2;+1 2'г~|-точечным ДПФ за N сложений и N/2 умно- жений. Следовательно, метод прореживания по частоте требует такого же числа операций, как и метод прореживания по време- ни. Структура вычислений для этого метода представлена на рис. 4.2 (М=8). Легко видеть, что графы для обоих методов изоморф- ны, но имеют различные весовые коэффициенты. Поскольку БПФ-алгоритм вычисляет ДПФ за MogM операций вместо №, то практический выигрыш в числе операций может быть очень большим. Например, для 1024-точечного ДПФ М = 210 и прямое вычисление требует 220 комплексных умножений. С дру- гой стороны, БПФ-алгоритм вычисляет это преобразование толь- ко за 5-210 умножений, что примерно в 200 раз меньше. Дополни- тельная экономия получается, если учесть, что умножения на ± 1 ±j тривиальны. 83
В случае метода прореживания по времени фазовые множите- ли на первом шаге имеют вид IFhN/2=(—l)h. Таким образом, все умножения на первом шаге тривиальны. Умножения на втором шаге также тривиальны, так как фазовые множители имеют вид ц/ьл74= (—jjh_ На следующих шагах имеем фазовые множители UZ^/8, IV'Z1A'/16, ... и числа тривиальных умножений будут соответ- ственно N\/4, N/8, .... Значит, число нетривиальных комплексных умножений будет равно (^/2) (—3+log2/V) +2. Следовательно, ес- ли комплексное умножение реализуется с четырьмя вещественны- ми умножениями и двумя вещественными вложениями, то общее число вещественных умножений М и число вещественных сложе- ний для БПФ-алгоритма по основанию 2 составляет M = 2N(—3 + log2/V)+8, (4.63) A=3N(—l + log2A/)+4. (4.64) Если комплексное умножение реализуется с тремя веществен- ными умножениями и тремя вещественными сложениями, то для М и А справедливы выражения М= (3JV/2) (—3 + log2A/) +6, (4.65) Л = (А//2) (—9 + 7 log2AZ)+6. (4.66) Поскольку WN>8 = (1 —j) / К2, то умножения на WhN/8 выпол- няются с двумя вещественными умножениями и двумя веществен- ными сложениями. Шаги 3, 4, 5, ... требуют соответственно N/4, NJ8, N/16, ... таких умножений, и, значит, всего требуется N/2—2 умножений на WkN/s, так что общее число умножений для ДПФ уменьшается до (N/2) (—4 + log2/V)+4 комплексных умножений плюс N/2—2 умножений на WhN/8. Поэтому, если комплексное умножение вычисляется с четырьмя вещественными умножениями и двумя вещественными сложениями, то числа М и А веществен- ных операций запишутся: M=N(—7+2 log2W) +12, (4.67) А = 3W (—1 + log2 N) + 4. (4.68) Если же комплексное умножение выполняется с тремя вещест- венными умножениями и тремя вещественными сложениями, то M=(N/2) (—10+3 log2/V)+8, (4.69) Л= (/V/2) (—10+7 log2AZ)+8. (4.70) Таким образом, существенная дополнительная экономия до- стигается с учетом всех упомянутых выше соображений. Так, 1024-точечное ДПФ вычисляется с помощью простого БПФ по (4.56) за 20-210 вещественных умножений, тогда в соответствии с (4.69) достаточно 10-210 умножений. 4.2.2. БПФ-АЛГОРИТМ ПО ОСНОВАНИЮ 4 Рассмотрим /V-точечные ДПФ, N=2\ где t — четное число. В этом случае первый шаг БПФ выполняется для /Vi = 4 и М2=2г^2, 84
что эквивалентно разбиению TV-точечной последовательности хт на 4 подпоследовательности: x4m, x4m+i, х4т+2 и х4т+3 для т=0, 1, ..., N/4—1. Для такого разбиения Xk получается из выражения 3 А//4—1 2 Wlk 2 x4m+iW4mh 1=0 т=О (4-71) и, поскольку WN,i =—j, то 3 N/4—1 xh+N/4= 2(—j)^ft 2 x4m+lW^h, (4.72) 1=0 т=0 3 N/4—1 Xh+N/2= 2 (-1)'Г№ 2 x4m+lw^, (4.73) 1=0 m=0 3 N/4—1 *h+32v/4= 2 ilWlh 2 x4m+lWimh, k = 0, ..., TV/4-1. 1=0 m=O (4-74) Следовательно, метод прореживания по времени при основа- нии 4 [4.7, 4.8] сводит TV-точечное ДПФ к четырем TV/4-точечным ДПФ с помощью N комплексных умножений на фазовые множи- тели Wlh и 3TV комплексных сложений. Такая процедура может применяться рекурсивно Т/2 раз, причем каждый раз длина преоб- разуемой последовательности уменьшается в четыре раза. Так, TV-точечное ДПФ с помощью алгоритма по основанию 4 вычисля- ется за (TV/2)log2TV комплексных умножений и (3ATi/2) logjTV ком- плексных сложений. Следовательно, число операций в этом слу- чае больше, чем для БПФ-алгоритма по основанию 2. Однако по- кажем, что можно получить более точную оценку, если провести более детальный анализ. Можно добиться уменьшения числа сложений на каждом ша- ге до 2TV вместо 3N, используя следующую процедуру: N/4—1 Xljh= 2 x4m+lW^\ 1=0, ..., 3, (4.75) m=0 Yi,h=W^l,h, (4.76) Xk— (To, л + Y21 h) + (Уц ь + y3, k), (4-77) Xk+N/4= (Уо, k—У2, fe)—j (У1, k—У3, k), (4.78) Xk+N/2 = (Уо, л + У2, fe) — (У1, fe + Уз, h), (4.79) Xk+3N/4= (Уо k—У2, ft) +j (У>, k—Уз, л)> (4.80) где Хц k обозначает TV /4-точечное ДПФ. Фазовые множители для последовательных шагов принимают значения: Wlh, Wilh, lFl6,ft,.... Таким образом, они имеют вид Wlh4t, где i=0, 1, ... . На шаге с номером i вычисление 4’ Л74г-точечных ДПФ сводится к вычис- лению 4i+1 Л//4’+1-точечных ДПФ. Так как общее число умноже- ний на фазовые множители на каждом шаге равно TV, то на каж- дом шаге множители разбиваются на 4г групп множителей fl7№4* где k=ot t дг/4г+1—1 и / = о, 1, 2, 3. На последнем шаге фазовые множители равны ±1, ±j и умножения на них тривиаль- 85
ны. Для остальных шагов и /=1, 3 единственные простые умноже- ния соответствуют fe = 0 и fe= (W/2)4i+1. Эта случаи соответствуют умножениям на 1 и = [(l-j)/V 2]'. При/ = 0 имеем W,h= 1. Для / = 2 умножения на Wlhil выполняются с двумя тривиальными ум- ножениями, двумя умножениями на нечетную степень U78 и —4 комплексными умножениями. На каждом шаге име- ется 4‘ групп множителей, что соответствует (ЗД/4)—8-4’ ком- плексным умножениям и 4i+1 умножениям на нечетную степень lFg на каждый шаг. Далее, W = 2f = 4t/2 и, следовательно, нужно сложить числа умножений для (//2) — 1 шагов. Таким образом, число М\ нетривиальных комплексных умножений дается выраже- нием М, = (ЗУ/8) log2 N— (17/12) N+8/3. (4.81) Аналогично число М2 умножений на нечетную степень UZ8 бу- дет M2=(N—4)/3. (4.82) Следовательно, если комплексное умножение реализуется с че- тырьмя вещественными умножениями и двумя вещественными сложениями, то общее число М вещественных умножений и число А вещественных сложений будут равны М = (SN/2} log2 N—5N+8, (4.83) А = (11Л7/4) log2 N— (13У/6) + (8/3). (4.84) Если же комплексное умножение реализуется с тремя вещест- венными умножениями и тремя сложениями, то М= (9/V/8)log27V—(43/V/12) +(16/3), (4.85) А = (25/V/8) log2 N— (43Л//12) + (16/3). (4.86) Таким образом, БПФ-алгоритм по основанию 4 значительно уменьшает число требуемых операций по сравнению с алгорит- мом по основанию 2. В табл. 4.1 приведены числа вещественных операций для БПФ-алгоритмов по основаниям 2 и 4, соответству- ющие выражениям (4.69), (4.70) и (4.85), (4.86). Комплексное Таблица 4.1 Число нетривиальных вещественных операций для БПФ-алгоритмов по основаниям 2 и 4 Длина последо- вательности А' БПФ по основанию 2 БПФ по основанию 4 число умноже- ний М число сложе- ний А число умноже- ний м число сложе- ний А 4 0 16 0 16 16 24 152 20 148 64 264 1032 208 976 256 1800 5896 1392 5488 1024 10248 30728 7856 28336 4096 53256 151560 40624 138928 86
умножение выполняется с тремя вещественными умножениями и тремя вещественными сложениями. Из табл. 4.1, видно, что алго- ритм по основанию 4 уменьшает число умножений примерно на 25% по сравнению с алгоритмом по основанию' 2, тогда как число сложений в обоих случаях примерно одинаково. Небольшими ви- доизменениями можно получить алгоритмы по основаниям 8 и 16 [4.7, 4.8]. Если М не является степенью одного числа, то можно использовать смешанные основания. Например, ДПФ, включаю- щее 32 точки, можно вычислить за два шага алгоритма по осно- ванию 4 с последующим одношаговым применением алгоритма по основанию 2. С точки зрения числа операций БПФ-алгоритмы по смешанным основаниям позволяют добиться дополнительной эко- номии, однако при этом усложняется реализация этих алгоритмов. 4.2.3. РЕАЛИЗАЦИЯ БПФ-АЛГОРИТМОВ БПФ может быть реализовано большим числом способов в за- висимости от организации и запоминания данных, а также от по- рядка выполнения умножений на фазовые множители. Для того чтобы проиллюстрировать процедуру реализации БПФ, вернемся к алгоритму прореживания по времени с основанием 2 (см. рис. 4.1). Легко видеть, что в этом алгоритме, состоящем из t шагов, каждый шаг с номером i (/= 1, ... , t) требует N\/2 операций типа «бабочки»: = 1_b^'7dxz+k/2l> (4-87) x/+a'/2£ ~xi 1 > (4.88) где xi-1z, x’z — соответственно входные и выходные отсчеты для i- го шага. Поскольку входные и выходные отсчеты в (4.87), (4.88) имеют одинаковые индексы, то указанные вычисления могут быть реализованы методом замещения так, что выходные результаты записываются непосредственно на места входных данных. Поэто- му для реализации БПФ достаточно М ячеек для комплексных значений и некоторого числа дополнительных ячеек, на которых выполняются операции «бабочки». Комплексные значения Wd как функции индекса I и шага i можно определить с помощью метода двоичной инверсии. В этом случае I записывается в виде двоичного числа длиной t, которое сдвигается вправо на t—i разрядов (т. е. умножается на 2~(/-г)) и затем переписывается в обратном порядке (инвертируется). Так, если рассматривается вершина x2s на рис. 4.1, соответствую- щая второму шагу 8-точечного ДПФ, то / = 5 и i=2. Тогда двоич- ное представление для I — это (101). Сдвиг на t—i=l разрядов вправо дает (010). Наконец, d, полученное обращением (010), есть снова (010), т. е. число 2. Отсюда получаем выражение х25~ =х15+ F4 Метод двоичной инверсии легко реализуется Посредством сче- та в поразрядно-обратном порядке. .Для 8-точечного ДПФ 3-бито- вый счетчик порождает последовательные целые: 0, 1, 2, 3, 4, 5, 6, 87
7. Если счет ведется в поразрядно-обратном порядке, то получа- ется последовательность: 0, 4, 2, 6, 1, 5, 3, 7. Тем самым устанав- ливается взаимно-однозначное соответствие между элементами этих последовательностей. Коэффициенты Wd можно вычислять на каждом шаге, исполь- зуя рекурсивное выражение U7d=rrd-‘. (4.89) Эти коэффициенты могут быть вычислены предварительно в це- лях экономии времени с применением дополнительных ячеек па- мяти. Алгоритм, представленный на рис. 4.1, задает выходные отсче- ты Xh в поразрядно-обратном порядке. Таким образом, эти отсче- ты в конце вычислений должны быть переупорядочены в обычном порядке посредством поразрядного обращения индексов k. Одна- ко, как будет показано в разд. 4.6, эта операция не обязательна в случае вычисления свертки с помощью ДПФ. Предыдущие рассуждения можно -применить также к алгорит- мам по основаниям больше 2. Программы этих алгоритмов на языке Фортран можно найти в [4.8]. На практике получили рас- пространение модификации БПФ-алгоритма, основанные на раз- личных соотношениях между скоростью вычислений и расходом памяти. Если БПФ программируется на языках высокого уровня, допускающих разнообразные операции с массивами, например на АПЛ [4.9], то реализация алгоритмов значительно упрощается. Это хорошо иллюстрируется программой для БПФ по основанию 2, написанной Маколиффом и представленной на рис. 4.3 с раз- решения автора. АПЛ-программа использует две инструкции, пер- вая из которых порождает значения коэффициентов, а вторая предназначена для вычисления самого преобразования. ЛАточеч- ное ДПФ вычисляется посредством выполнения инструкции Z+-TF33A, (4.90) в которой TF33 — имя БПФ-подпрограммы, а А — массив из двух строк и W столбцов, причем первая строка представляет собой вещественные, а вторая — мнимые части входной последователь- ности. Выходная последовательность задается массивом Z с той же структурой. Однако эта программа вычисляет, по существу, обратное, а не прямое ДПФ, заданное выражением (4.1). В табл. 4.2 приводятся оценки времени выполнения этой прог- раммы в системе IBM 370/168 для различных значений длины преобразования. Эти данные можно сравнить с оценками времени V 2-TF33 [1] 2 1 ».оо( ,«|(2,P)p(Ppl'*0),-0-l'L-0-2«iP])»P.0p0-+il,0pS+-2,M,0pW+- (М+1 )p2,0pZ+-4[ ;К+,(Ф»М)Щ (Г+М+Л+ 2вР+Ч). 5«М)р2 )р 1М~"1»рЛ ] [2] •»(0<K-+K-l)/2.0pM-+Ml;,«(2.P)piPl+0.0pZ-+Sp(-/[O] MxZ),+/[O) M«eZ+S р( (О+К),((-К)ФО,Мр1 )/iM+l)W?p( , + /СК*О] Z),,-/(K+O] Z+PpZ V Рис. 4.3. Программа на АПЛ для БПФ по основанию 2 88
прямого вычисления ДПФ на АПЛ в той же системе. При этом выигрыш в числе операций при использовании БПФ-алгоритма ведет к уменьшению времени вычисления примерно в том же масштабе. Это особенно заметно для больших ДПФ. Так 1024-то- чечное БПФ вычисляется БПФ-программой всего за 791 вместо 165335 мс при прямом вычислении. Таблица 4.2 Сравнительное время вычисления для АПЛ-программ БПФ-алгоритма и прямого вычисления в системе IBM 370/168 Длина после- довательно- сти N Время вычисления (время процессора), мс Длина после- довательно- сти N Время вычисления (время процессора), мс БПФ по ос- нованию 2 ДПФ БПФ по ос- нованию 2 ДПФ 4 17 16 64 63 776 8 24 32 128 109 2840 16 32 80 256 188 10765 32 43 234 1024 791 165335 4.2.4. ЭФФЕКТЫ КВАНТОВАНИЯ В БПФ Поскольку БПФ реализуется в конечно-разрядной арифметике, то все данные, например коэффициенты, а также результаты опе- раций округляются до заданного формата. Поэтому конечная точ- ность представления играет существенную роль при реализации БПФ. Возникающие при этом эффекты для представления чисел с фиксированной и плавающей запятой описаны в [4.10—4.12]. В этом разделе ограничимся лишь реализацией БПФ-алгоритма по основанию 2 в арифметике с фиксированной запятой. Рассмотрим сначала операцию масштабирования (сдвига). На каждом шаге вычислим операции «бабочки»: + (4.91) X(+A'/2£ = XZ+A7/2‘- (4.92) Таким образом, абсолютные величины отсчетов имеют тенден- цию к увеличению на каждом шаге. Верхняя граница модуля хг1 дается выражением Мах|х‘|<2Мах(|х'-Ч, |х‘^/2.-|). (4.93) Следовательно, величина отсчета в двоичном представлении увеличивается максимум на один разряд (бит) на каждом шаге, поэтому необходим контроль за переполнением. Наиболее эффек- тивный способ вычисления «бабочки» состоит в выполнении каж- дого шага без масштабирования с последующим сдвигом на один разряд в случае обнаружения переполнения. Другой, менее эф- фективный, способ состоит в систематическом поразрядном сдви- ге на каждом шаге. В этом случае легко найти верхнюю оценку 89
для ошибки округления. В дальнейшем будем считать, что данные сдвигаются на один разряд на каждом шаге. Хорошо известно [4.1], что произведение S-разрядных двоичных чисел, округленное до В разрядов, имеет ошибку округления с дисперсией g2=2-2b/12. (4.94) Далее, если два S-разрядных числа складываются, то сумма, вообще говоря, есть (S+1)-разрядное число. В случае переполне- ния сумма масштабируется с коэффициентом 1/2 и один разряд теряется. Дисперсия соответствующей ошибки округления о2| = 2-2в/2=6ст2. (4.95) Будем считать, что ошибки независимы и что переполнения возникают на каждом шаге. Поскольку входные данные на пер- вом шаге масштабируются с коэффициентом 1/2, то дисперсия V(хп) запишется: |/(х„)=6о2. (4.96) На первом шаге вычисляются N отсчетов посредством умно- жений на ±1 и сложений. Далее, выходные отсчеты х1п первого шага масштабируются с коэффициентом 1/2. Следовательно, V(x1n) =2V(xn)+4-6о2=36а2, (4.97) где множитель 4 получается с учетом того, что ошибка округле- ния первого шага в два раза больше ошибки на нулевом шаге. На втором шаге выполняются умножения лишь на ±1, ±j, и тог- да имеем У(х2и>=2|/(х1и)+42-6о\ (4.98) V(x2n) =22-6о2+2-4-6о2+42-6о2. (4.99) На третьем шаге половина операций «бабочки» нетривиаль- на и для них имеем Re{x3n} = Re{x2n} + Re{x2n+A7e}Re(rd}- —Im(x2n+JV/8}Im{Fd}, (4.100) что дает V(х3«) = V(x2n) + (Re2{x2„) + Im2{x2„}) V (IFd) + + (Re2{W/d} +Im2{№d}) V(x2n) +43a2+43-6o2, (4.101) где черта сверху означает операцию усреднения. Таким образом, 17(х3„) = V(x2n) + ИГ2о2+ V(x2n) +43о2+43-6о2, (4.102) где первый член соответствует дисперсии первого члена в (4.100), а следующие два члена — комплексному умножению. Слагаемое 43о2 соответствует округлению после сложения, а 43 * бег2 мас- штабированию. лл
Обозначим через X среднеквадратичное входной последова- тельности k=(ZJ2- (4.103) Поскольку X увеличивается вдвое на каждом шаге, то V(x3n) = 2V(x2n) +22Хо2+43о2 + 43-6о2. (4.104) Однако, так как второй и третий члены в (4.104) появляются лишь пр.и нетривиальных умножениях и умножения на третьем шаге тривиальны, то V(x3„) =2V(x2„) +2ko2+43o2/2+43-6o2, (4.105) V(x3n)=23-6o2+22-4-6o2+2-42-6o2+2Xo2+ +43o2/2+43-6o2. (4.106) Предполагая, что аналогичные вычисления производятся на всех шагах, на последнем шаге получим V(Xh) «22t+3o2+ (М—5/2)2г-1Хо2+2г+2о2. (4.107) Поскольку средний квадрат абсолютных значений выходной последовательности Xh равен 2г7, то отношение среднеквадратич- ного отклонения ошибки к среднеквадратичному отклонению вы- ходного сигнала для больших ДПФ соответствует: и' (ошибки) ~ Д/А-2 ~в(0,3) Д/8 ,. 1081 а (сигнала) а (входа) ' ‘ ‘ Это соотношение показывает, что отношение ошибка-сигнал для БПФ растет как ]ЛлГ Другим источником ошибок является усечение коэффициентов. Используя упрощенный статистический анализ, Вейнстейн пока- зал [4.12], что влияние этих ошибок на отношение ошибка-сигнал растет очень медленно с ростом 7V. Экспериментальные результа- ты в целом согласуются с этим выводом. 4.3. БПФ РЕЙДЕРА—БРЕННЕРА При вычислении ДПФ обычным БПФ-алгоритмом при- меняются комплексные умножения. Теперь покажем, как с помо- щью небольшой модификации БПФ-алгоритма заменить эти ком- плексные умножения на умножения комплексного числа либо на вещественное, либо на чисто мнимое число [4.13]. Рассмотрим N- точечное преобразование Фурье, где М = 2\ Хк^^ xmWmk, k=0, ...» X— 1. (4.109) m-0 Используя БПФ-алгоритм прореживания по частоте с основа- нием 2, для четных k вычислим А'/Я—1 X2li = 2 (xm-'-xm+N/2)W2ml1, 6=0, .... N/2-i, (4.110) m=0 где k заменено на 2k. 91
Для нечетных k, заменяя k на 2k + 1, получаем W/2-1 *2fe+i= 2 (хт—xm+N/2WmW2mh), £=0, N/2— 1. (4-111) m=0 На первом шаге алгоритма прореживания по частоте ^точеч- ное ДПФ разлагается на два N/2-точечных ДПФ с использовани- ем комплексных сложений и N/2 комплексных умножений. Для упрощения вычисления Л2/ж определим вспомогательную N/2-то- чечную последовательность а/Г1: ат=‘(хт—xm+N/2)f[2cos(2nm/N)], m=/=Q, N/4, (4.112) Со = о, Од/4 = 0. Теперь вычислим Wi/2-точечное ДПФ Ak последовательности $7П- 7V/2—1 Ah= 2 amW*mh, 6=0, .... N/2—I. (4.113) m=0 ^2/ы-1 можно найти no Ak следующим образом: N/2—1 Ah+Ah+i= 2 flm(l + W'2m)UZ2mA m=0 ИЛИ N/2-1 Ah+Ah+i= 2 [2amcos(2nm/N)]W^W^. m=0 Поскольку WN/i = —j, TO _ [Aft+Aft+i + tio для четных k, X2k+l = 1 _ _ (Afe+Afe+i + fi для нечетных k, где ^o = %o—Xn/2—j (xn/4—X3N/4), Vi = Xo—Xjf/2 + j (Xiv/4—XSN/4). При этих условиях вместо N/2 умножений на фазовые множи- тели Wm на первом шаге можно подставить (М/2)—2 умножений на вещественные числа l'/{2cos(2nm/Ar)]. Члены Хо—xN/2 и xN/4— —хзк/4 должны рассматриваться раздельно, так как cos(2nm/N) = = 0 при m = N/4. Аналогичный метод используется и для вы- числения М/2-точечных преобразований X2k, Ak и преобразований размеров N/4, N/8, ... до окончательного разложения преобразо- вания. Так как умножение комплексного числа на вещественное вы- полняется с помощью двух вещественных умножений, то на каж- дом шаге выполняются N—4 нетривиальных умножений. Кроме того, требуется N комплексных, сложений для вычисления хт+ (4.114) (4.115) (4.116) (4.117) (4.118)
+-^m+W2 И xm—xm+N/2 плюс N + 2 комплексных сложений для вы- числения (4.116) — (4.118). Однако при вычислении Ah два комп- лексных сложения не выполняются, так как ао = О и aw/4=0. Та- ким образом, на каждом шаге число вещественных умножений М и число вещественных сложений А составляют M = N—4, (4.119) A=4/V. (4.120) Два последних шага разложения ДПФ соответствуют 4- и 2- точечным преобразованиям, которые вычисляются с помощью обычных БПФ-методов с тривиальными умножениями на ± 1 и —j- Более того, два предшествующих шага, соответствующих 16- и 8-точечным ДПФ, выполняются более эффективно за счет ис- пользования обычных методов, таких, как БПФ по основанию 4 (см. разд. 4.2.2 или алгоритм Винограда [4.14]). В табл. 4.3 приводится число нетривиальных операций, требу- емых при вычислении ДПФ по методу Рейдера — Бреннера. Срав- нивая эти данные с данными табл. 4.1, можно заметить, что ме- тод Рейдера — Бреннера требует меньшего числа умножений, чем БПФ-алгоритмы по основаниям 2 и 4, и примерно на 10% боль- шего числа сложений. Таблица 4.3 Число нетривиальных вещественных операций для комплексного ДПФ, вычисляемого по методу Рейдера—Бреннера Длина последо- вательности IV Число вещест- венных умноже- ний М Число вещест- венных сложе- ний А Число умноже- ний на отсчет M/N Число сложений на отсчет A[N 8 4 52 0,50 6,50 16 20 148 1,25 9,25 32 68 424 2,12 13,25 64 196 1104 3,06 17,25 128 516 2720 4,03 21,25 256 1284 6464 5,02 25,25 512 3076 14976 6,01 29,25 1024 7172 34048 7,00 33,25 2048 16388 76288 8,00 37,25 Аналогичный метод может быть использован и при прорежива- нии по времени [4.13]. В этом случае предварительные умножения на l/[2cos(2nmi/A/)] заменяются последующими умножениями на эти множители. Этот способ имеет такую же трудоемкость, как и метод прореживания по частоте. Для больших преобразований значение cos(2nm/7V) становится очень малым при некоторых зна- чениях т. Поэтому умножения на l/[2cos(2nm/Af)] для таких зна- чений приводят к существенным погрешностям. Чу и Темес [4.15] предложили модификацию метода Рейдера — Бреннера, свобод- ную от этого недостатка. 93
В некоторых случаях интересуются лишь нечетными отсчета- ми ДПФ. Эти отсчеты, задаваемые (4.111), можно рассматривать как результаты модифицированного ДПФ: W/2-1 Yh = S k = 0, ..., ./V/2—1; m=0 F=exp(—j2n/A). (4.121) Модифицированное ДПФ, которое обычно выполняется на пер- вом шаге БПФ-алгоритма прореживания по частоте, называется приведенным ДПФ [4.16] или нечетным ДПФ [4.17]. Оно также используется при вычислении многомерных ДПФ с помощью по- линомиальных преобразований (см. гл. 7). Алгоритм Рейдера — Бреннера применим непосредственно для вычисления приведенно- го ДПФ. В табл. 4.4 дано число нетривиальных вещественных операций, требуемых при вычислении приведенных ДПФ этим ме- тодом. Таблица 4.4 Число нетривиальных вещественных операций для комплексного приведенного ДПФ, вычисляемого по методу Рейдера—Бреннера Длина после- довательно- сти N Число вещест- венных умно- жений М Число вещест- венных сло- жений А Длина после- довательно- сти N Число вещест- венных умно жеиий М Число вещест- венных сло- жений А 8 16 64 128 768 3232 16 48 212 256 1792 7488 32 128 552 512 4096 17024 64 320 1360 1024 9216 38144 4.4. МНОГОМЕРНЫЕ БПФ Рассмотрим сначала двумерное БПФ массива NiX.N2: __ N.—l N2—l . , = J J • lFi = exp(—j 2л/N\), IF2=exp(—j 2n//V2), kt = 0, ..., /Vi—1, 62=0, ..., N2—1. (4.122) Для того чтобы вычислить это ДПФ, перепишем (4.122) так: _ Ni—l t Ws-1 . S (4.123) m1=0 0 Вычислим Ni ДПФ Ут1,ьг последовательностей длиной N2, со- ответствующих Ai различным значениям tnp. = (4Л24) m2—0
Теперь можно найти вычисляя N2 ДПФ последователь- ностей длиной Nt от /V2 последовательностей соответствую- щих й/2 различным значениям: 1 (4.125) ^=0 Этот метод часто называют построчно-столбцовым, так как входные двумерные массивы данных организуются в виде множе- ства строк и столбцов. При этом вычисляются сначала ДПФ столбцов, а затем ДПФ строк. Тем самым двумерное ДПФ сво- дится к Nx ^-точечным ДПФ и N2 М-точечным ДПФ. Если NI и — степени 2, то одномерные и Л^-точечные ДПФ можно вы- числить с помощью БПФ-алгоритма. Если применяется БПФ по ос- нованию 2, то число умножений М будет M = MIM2[log2(M1M2)]/2 (4.126) и для ДПФ массива МХ^ Л1=2ад, (4.127) где М\ — число умножений, требуемое для Л'-точечного ДПФ. Этот метод может быть использован и для больших размерностей. Так, d-мерное ДПФ массива МХ-^Х — XV вычисляется с dNd~l М-точечными ДПФ, так что число умножений становится равным M=dNd~1Mx (4.128) и, в частности, М= (dNdlog2M)/2, (4.129) если M-точечное ДПФ вычисляется БПФ-алгоритмом по основа- нию 2. В гл. 7 покажем, что сведение многомерных БПФ к од- номерным с помощью построчно-столбцового метода дает квази- оптимальные алгоритмы. Значительно лучшие методы получают- ся при использовании полиномиальных преобразований. Таблица 4.5 Число нетривиальных вещественных операций для комплексных ДПФ массива МхМ вычисляемых построчно-столбцовым методом по алгоритму Рейдера—Бреннера Длина последо- вательности IV Число вещест- венных умноже- ний М Число вещест- венных сложе- ний А Число умноже- ний на отсчет MJN Число сложений на отсчет A/N 8 64 832 1,00 13,00 16 640 4736 2,50 18,50 32 4352 27136 4,25 26,50 64 25088 141312 6,12 34,50 128 132096 696320 8,06 42,50 256 657408 3309568 10,03 50,50 512 3149824 15335424 12,02 58,50 1024 14688256 69730304 14,01 66,50 95
В табл. 4.5 приводится число вещественных операций для раз- личных комплексных ДПФ, вычисляемых построчно-столбцовым методом с помощью алгоритма Рейдера—-Бреннера. 4.5. АЛГОРИТМ БРУНА В этом разделе рассмотрим алгоритм Бруна [4.18], име- ющий практическое и теоретическое значение. Практическое зна- чение обусловливается тем, что ДПФ вещественных последова- тельностей данных почти 'полностью реализуется в вещественной арифметике, тем самым сильно упрощая реализацию ДПФ. Из- ложение модификации оригинального алгоритма позволит дать полиномиальное представление ДПФ, которое будет использовать- ся в остальной части книги. Рассмотрим ^точечное ДПФ, где Af = 2r: N-1 г- Xh = 2 fc=0, ..., TV—1, IF=exp(—]2n/N), j = V —1. m=0 (4.130) Полиномиальное представление ДПФ задается двумя равен- ствами: А—1 X(z) = 2 mod(zw—1), (4.131) Xh=X(z) mod (z—Wk). (4.132) Равенства (4.131) и (4.132) эквивалентны (4.130), так как, по определению, вычет по модулю z—Wk представляет собой значе- ние полинома из (4.131)в точке Wk. Поэтому приведение по мо- дулю zN—1 в (4.131), вообще говоря, необязательно. Однако та- кое приведение позволяет учитывать выбор узловых точек Wk, так как в них zN= WhN= 1. Полином zN—1 имеет А/ комплексных корней Wh, k=0, ... ..., JV—1, так что N—1 zN— 1= П (z— Wh). (4.133) k=0 Более того, учитывая, что N=2l, полином zN—1 можно разло- жить в произведение двух полиномов степени 7V/2: l = (zw/2_ 1) (ZW2+1). (4.134) Полиномы zNl2—1 и zw/2+l допускают разложения: Z2v/2_1 = w/jf‘ (2—U72ft>)> (4.135) fe,=0 N/2—1 2^+1= П (z—W^+l), £r=0, .... N/2— 1. (4.136) fe1=0
Так как для четных k все Wh являются корнями zN/2—1, то (4.131) и (4.132) можно переписать так: N/2—1 Xi(z)= 2 (xm+x„l+N/2)zm=X(z)rnod(zN/2— 1), (4.137) m~Q 7 Jft(z)=Xi(z) mod (z— Wk). (4.138) Аналогично для нечетного k ^—корень zw/2+l и Xfe(z) за- дается выражениями /V/2—1 X2(z) = 2° (xm—xm+N/2)zms=X(z) mod (zN<2+ 1), (4.139) Xh{z)=X2(z) mod (z— Wk). (4.140) Выражения (4.137) — (4.140) соответствуют первому шагу БПФ-алгоритма прореживания по частоте, так как (4.139), (4.140) представляет собой A^i/2-точечное нечетное ДПФ. Перей- дем теперь к изложению собственно алгоритма Бруна. Заметим, что полином z4<? + az2i + 1, а<2, разлагается над полем вещест- венных чисел в произведение двух полиномов: z4’ + az29+1 = (z2<? + ]/2—azs-p 1) (z2^—JA2—az^-T 1). (4.141) Отсюда следует zw/2-H = (z^4 +jA2zw/8 + l) (г^4^У2г^8 + 1). (4.142) Далее, z^/4+)A2zn/8+1= n (4.143) feiSB, zw/4_-|/-2z2V/8+1= . П (Z_^2fe,+l)j (4.144) ktSB2 где Bi — множество из X/4 значений k\, таких, что IF2fti+1-—корень полинома z*v/4 + |/2zw/8+ 1; Д2— множество остальных значений k\. При этих условиях нечетное ДПФ, задаваемое выражениями (4.139), (4.140), может быть представлено в виде: X3(z)=X2(z) mod(zw'4+ yiTzW+l), (4.145) Х2й1-|-1=Хз(г) mod (z—W72^1), (4.146) X4(z)=X2(z) mod (z^4—l/Tz^+l), (4.147) X2fei+1 =X4 (z) mod (z—№2ft-+i), k^B2. (4.148) Это разложение может быть продолжено с помощью факто- ризации полинома z4«+nz2«+l на два вещественных полинома степени 2q до тех пор, пока q не станет равным 1. В этом случае дальнейшее разложение полинома невозможно и для каждого по- лученного полинома степени 2 вычисляется соответствующее ДПФ. При этом ДПФ вычисляется через значения представляющего по- линома в двух комплексных корнях соответствующего полинома второй степени. Схема вычислений по этому способу для 8-точеч- 4 Зак. 522 97
ного ДПФ приведена на рис. 4.4. Здесь каждый прямоугольный блок представляет операцию приведения по модулю полинома, ко- торым помечен этот блок. Первый шаг, соответствующий приведению по модулям zw/2—1 и zw'2+l, выполняется согласно (4.137) и (4.139) с 7V комплексны- ми сложениями. На втором шаге приведения по модулям zw/4—1 Рис. 4.4. Алгоритм Бруна для вычисления 8-точечного ДПФ и zN/4+l выполняются с N/2 комплексными сложениями. Для приведения по модулю zw4+J/r2zJv8+1 заметим, что zN/iss = —]/2zW«— 1 и _z3w/« =е= z^8 + V ~2, а для приведения по модулю zN/i—заметим, что zJV/4s]/2z!V/8—1 и == zni& _ у 2. Поскольку j/2 — вещественное число, комплексное умножение выполняется за два вещественных умножения, а два приведения — за N/2 вещественных умножений и 37*7/2 сложений. На втором шаге а = 0 в (4.141). На последую- щих шагах а принимает значения ± V2, ±V2±V2, ... и при- ведения выполняются аналогично умножениям на вещественные множители а и V 2—а (с единственным отличием, что эти умно- жения уже нетривиальны). На последнем шаге 2 приведения выполняются с тривиальны- ми умножениями +1, ±j и 2-—с умножениями на степени WNlS, требующими 2 вещественных умножения на каждое такое при- ведение; (N/2—4) остальных приведений соответствуют умноже- ниям на Wh, W~h, требующим 4 вещественных умножения и 8ве- 98
щественных сложений. Следовательно, за исключением последне- го шага, все умножения —• это умножения на вещественные мно- жители. Первоначальный алгоритм, ’предложенный Бруном, ис- пользовал нециклические свертки вместо операций приведения по модулю ’и требовал немного меньше арифметических операций, чем описанный алгоритм. Основная область применения алгоритма Бруна — вычисление ДПФ вещественных последовательностей. В этом случае коэффи- циенты в первых t—1 шагах являются вещественными и тем са- мым все арифметические операции — также вещественными. Бо- лее того, поскольку приведения на последнем шаге соответствуют умножениям вещественных отсчетов на комплексно-сопряженные и W~k, то эти операции могут быть вычислены за два веще- ственных умножения и за одно вещественное сложение. Таким об- разом, алгоритм Бруна представляет собой удобное средство вы- числения ДПФ вещественных данных, требующее только вещест- венных операций. Алгоритм Бруна тесно связан с алгоритмом Рейдера — Брен- нера в силу соотношения (z—Wh) (z—W~h) — z2—2z cos (2nk/N) + 1. (4.149) Следовательно, коэффициенты, появляющиеся ,в алгоритме Бру- на, идентичны соответствующим коэффициентам в алгоритме Рей- дера—Бреннера. Главное различие состоит в умножении на со- пряженные множители Wk и W~h на последнем шаге. 4.6. ВЫЧИСЛЕНИЕ СВЕРТОК С ПОМОЩЬЮ БПФ В разд. 4.1 показано, что ДПФ преобразует свертку по- следовательностей в произведение их образов. Это позволяет вы- числить циклическую свертку yi двух последовательностей hn и хт, используя ДПФ, по схеме ^=ДПФ-‘{{ДПФ(М] [ДПФ(хт)]}, (4.150) где W-1 yi= S 1=0, ..., W-1. (4.151) т=0 Поскольку ДПФ можно вычислять с помощью БПФ-алгорит- мсв, то этот метод требует, чтобы число операций было пропор- ционально N\ogN и, следовательно, меньше числа операций при прямом вычислении. Более точно, если используется БПФ-алго- ритм по основанию 2 с одним фиксированным входом, то цикли- ческая свертка последовательности длиной М=2* требует два БПФ и N комплексных умножений. Следовательно, число комп- лексных умножений М будет М=TV(l + log2 N). (4.152) 99 4*
Для больших N это значительно меньше, чем N2 умножений, требуемых при прямом вычислении свертки (4.151). Часто желательно иметь возможность вычислять БПФ-мето- дом и вещественные свертки. Это можно сделать 'посредством вы- числения сверток двух последовательных блоков одновременно. Считая hn фиксированной Л^-точечной последовательностью, вычис- лим свертку hn с двумя Af-точечными вещественными последова- тельностями хт и xm+w, образовав предварительно вспомогатель- ную последовательность xm+jxm+Iv. Комплексную свертку hn С xm+)Xm+N вычисляем теперь с помощью БПФ. Тог- да вещественная часть комплексной свертки представляет собой свертку hn с первым блоком, а мнимая — свертку hn со вторым блоком. Этот способ вдвое уменьшает число операций для вы- числения вещественной свертки по сравнению со случаем комп- лексной свертки. В табл. 4.6 и 4.7 приводятся данные о числе операций, необ- ходимых при вычислении вещественных одномерной и двумерной сверток БПФ-алгоритмом Рейдера—Бреннера. При этом считает- Таблица 4.6 Число вещественных операций, требуемое дйя вычисления вещественной циклической свертки по алгоритму Рейдера—Бреннера Длина последо- вательности N Число вещест- венных умноже- ний М Число вещест- венных сложе- ний А Число умноже- ний на отсчет M/N Число сложений на отсчет A/N 8 16 64 2,00 8,00 16 44 172 2,75 10,75 32 116 472 3,62 14,75 64 292 1200 4,56 18,75 128 708 2912 5,53 22,75 256 1668 6848 6,52 26,75 512 3844 15744 7,51 30,75 1024 8708 35584 8,50 34,75 2048 - 19460 79360 9,50 38,75 ся, что одна из входных последовательностей фиксированная и каждое комплексное ДПФ вычисляет две вещественные свертки. Кроме того, предполагается, что комплексное умножение выпол- няется с тремя вещественными умножениями и тремя веществен- ными сложениями. Легко видеть, что методы, основанные на БПФ, существенно уменьшают число операций. Например, вещественная циклическая 1024-точечная свертка вычисляется с помощью БПФ за 8708 умножений вместо 1048 576 в случае прямого вычисле- ния. Если вещественные свертки вычисляются на специальных уст- ройствах, желательно иметь единственный блок для вычисления как прямого, так и обратного ДПФ. Маколифф предложил спо- соб достижения этой цели [4.19], основанный на вычислении ДПФ
Таблица 4.7 Число вещественных операций, требуемое для вычисления вещественной циклической свертки массива Ny.N по алгоритму Рейдера—Бреннера Длина последо- вательности N Число вещест- венных умноже- ний М Число вещест- венных сложе- • ний А Число умноже- ний на отсчет M/N Число сложений на отсчет A/N 8 160 928 2,50 14,50 16 1024 5120 4,00 20,00 32 5888 28672 5,75 28,00 64 31232 147456 7,62 36,00 128 156672 720896 9,56 44,00 256 755712 3407872 11,53 52,00 512 3543040 15728640 13,52 60,00 1024 16261120 71303168 15,51 68,00 двух вещественных последовательностей с помощью одного комп- лексного ДПФ. В разд. 4.1 показано, что ДПФ Xh и Xyh двух TV-точечных ве- щественных последовательностей хт и х1т можно вычислить од- ним комплексным ДПФ. Для этого вычисляется ДПФ Yk вспомо- гательной последовательности Xm+jx1^ Последовательности Xk и X*k получаются из Yk следующим образом: Xh={Yk+Ylh)l2, (4.153) (4.154) где Y*-k—комплексно-сопряженное Y-k. Рис. 4.5. Вычисление вещественной свертки с одним блоком для БПФ Схема вычисления свертки yi двух вещественных последова- тельностей согласно описанной процедуре представлена на рис. 4.5. Преобразование Xk последовательности хт получается _из Yk со- гласно (4.153). Затем Xh умножается на HhIN, где /Д —ДПФ последовательности hn. Последовательность хД определяется вы- ражением , д/_1 N—1 X'k = — 2 2 /lnXm'[ №<m+n>fe + W-(m+n)k_j W(m+n)k + j ^-(m+n)fe] . 2W n=0 m=0 .. 1rrx (4.155) 101
Последовательность используется как мнимая часть вход- ной последовательности для БПФ Fft, и преобразование Л1/ после- довательности x'k получается по (4.154). Следовательно, W—1 N-i Л;—1 х11= --- X 2 hnXm 2 Г U7(m+n+l)h-|_ ^- {m+n-l)h—j ^(m+n+l)h 2.¥n=0 m=0 ft=0 -Lj «/-(m+n-Oh], (4.156) Сумма степеней W отлична от нуля лишь при т+п+1= = 0 mod А и m + n + l=0 mod N. Поэтому N- 4 Х*?— 2 (hnX—п—1hnxi-п j hnX—n—i-|-j hnXi—n)/^- (4.157) n=0 Суммирование вещественной и мнимой частей этого выраже- ния дает, очевидно, свертку уг. Таким образом, вещественная \ -точечная свертка вычисляется с помощью единственного блока БПФ. При вычислении сверток возможны некоторые упрощения БПФ. В частности, когда ДПФ вычисляется с помощью БПФ-ал- горитма, то отсчеты либо входной, либо выходной последователь- ности задаются в порядке, отличном от исходного. В этом случае необходимы дополнительные операции для востановления исход- ного порядка. Однако, если БПФ используется для вычисления сверток, то эти операции необязательны, поскольку всегда можно организовать процесс так, чтобы два прямых БПФ порождали по- следовательности в согласованном обратном порядке, так что об- ратное БПФ порождает выходную последовательность уже в есте- ственном порядке. Глава 5 ВЫЧИСЛЕНИЕ ДИСКРЕТНОГО ПРЕОБРАЗОВАНИЯ ФУРЬЕ НА ОСНОВЕ ЛИНЕЙНОЙ ФИЛЬТРАЦИИ БПФ алгоритмы значительно сокращают число арифме- тических операций, необходимых для вычисления дискретного пре- образования Фурье, и могут быть достаточно просто реализованы на большинстве современных вычислительных машин. Следова- тельно, задачи линейной фильтрации целесообразно решать, ис- пользуя БПФ-алгоритм на основе свойства ДПФ о цикличности свертки. В такой ситуации могут показаться неожиданными по- пытки разработать алгоритмы линейной фильтрации, предназна- ченные для вычисления ДПФ. Вот почему алгоритмы, разрабо- танные в 1968 г. Блюстейном [5.1, 5.2] и Рейдером [5.3], долгое время считались курьезными. Однако ряд недавних достижений в микроэлектронике проде- монстрировал возросшую важность использования этих алгорит- мов для выполнения ДПФ. Так, для работы в реальном масштабе 102
времени были созданы приборы с зарядовой связью (ПЗС) и уст- ройства на 'поверхностных акустических волнах (ПАВ), с помощью которых можно достаточно сложные фильтры реализовать на од- ном кристалле и применять их для вычисления ДПФ. Одновремен- но новые результаты в теории сложности вычислений показали, что некоторые типы сверток могут быть более эффективно вычис- лены посредством методов линейной фильтрации. Это было убе- дительно продемонстрировано в работе Винограда [5.4], разрабо- тавшего алгоритм быстрого ДПФ, основанный на вложении корот- ких ДПФ, вычисляемых как свертки. Алгоритм Винограда сущест- венно отличается от БПФ-алгоритма и для множества значений длин обрабатываемых последовательностей более эффективен, чем БПФ. В данной главе сначала будут рассмотрены основные алго- ритмы, которые позволяют преобразовать ДПФ в свертку, а имен- но, алгоритм z-преобразования с использованием ЛЧМ-фильтра- ции (ЛЧЖ гдтреобразование)1) и алгоритм Рейдера. Затем будет показано, как ДПФ длинных последовательностей можно вычис- лять из набора 'коротких ДПФ с помощью метода простых мно- жителей Гуда и алгоритма Винограда преобразования Фурье (АВПФ). 5.1. АЛГОРИТМ ЛЧМ z-ПРЕОБРАЗОВАНИЯ Рассмотрим ДПФ последовательности хп k = 0, N—V, Г=ехр(—]2л/Ю, /=К—I. /2=0 (5-1) Преобразуем выражение (5.1) с учетом того, что п/г = — (—k—n)2l2+n2/2 + k2l2. (5.2) Тогда Л'—1 Xk = w^2 2 xnWn2/2W~(k-n^2, (5.3) n=0 откуда видно, что Xh может быть вычислено в результате сверт- ки последовательностей xnWn!/2 и W~n!/2 с последующим умноже- нием на Wk2/2 (рис. 5.1). В приведенном методе вычисление ДПФ включает вычислительные операции, связанные с получением сиг- нала на выходе комплексного фильтра с конечной импульсной ха- рактеристикой (КИХ-фильтр), и по А комплексных умножений до и после фильтрации. Импульсная характеристика КИХ-фильтра такая же, как у ЛЧМ-фильтра, хорошо известного в обработке радиолокационных сигналов; поэтому описанному методу вычис- ления ДПФ дано название «ЛЧМ z-преобразование». *> z-преобразование с ЛЧМ-фильтрацией (ЛЧМ — линейная частотная мо- дуляция) было предложено Блюстейном для колебательных процессов как дис- кретный аналог ЛЧМ [52]. — Прим. ред. 103
Поскольку вычисляется ЛЕточечное ДПФ, необходимо получить только W отсчетов на выходе ЛЧМ-фильтра. Кроме того, значенйя п и k определяются по модулю N и для четных N 1Р'-<п+^)2/# = = Ц7-п2/2 Следовательно, для четных N задача ЛЧМ-фильтрации может рассматриваться как /V-точечная циклическая свертка ком- плексных последовательностей. Для нечетных N W~<n+Ny,f2= =—W~n2/2, так что ЛЧМ.-фильтрации соответствует циклическая 27У-точечная свертка, где TV-точечная входная последовательность xnWn2/'2 дополняется N нулями, и вычисляются только А первых отсчетов свевтки. Рис. 5.1. Вычисление ДПФ с использовани- ем ЛЧМ z-фильтра- ции Одна из важных особенностей алгоритма ЛЧМ z-преобразова- ния заключается в том, что число операций для вычисления ДПФ всегда пропорционально TV log А, даже если А не раскладывается на большое число множителей. Пусть, например, N четное. Тогда TV-точечную циклическую свертку можно вычислить, как ^-мерную циклическую свертку, </^2А—1, используя метод перекрытия с суммированием. Если d выбрано как степень 2, то удлиненная цик- лическая свертка может быть получена посредством БПФ с числом операций, (пропорциональным TV log TV. 5.1.1. ВЫЧИСЛЕНИЕ СВЕРТОК И ДПФ В РЕАЛЬНОМ МАСШТАБЕ ВРЕМЕНИ НА ОСНОВЕ ЛЧМ z-ПРЕОБРАЗОВАНИЯ Сравнительно сложные КИХ-фильтры очень эффективно мож- но выполнить на одном кристалле с ПЗС- или ПАВ-устройствами. Значения коэффициентов этих фильтров определяются геометрией электродов, изготовленных на кристалле методом фотогравировки. Следовательно, эти устройства, обрабатывающие дискретизованные аналоговые сигналы с очень высокой скоростью, хорошо приспособ- лены для реализации фильтров с фиксированной импульсной ха- рактеристикой. При использовании ПЗС- или ПАВ-устройств для вычисления ДПФ в основном применяется структура ЛЧМ-фильт- ра с комплексными умножениями и комплексными свертками (рис. 5.1)*), которые обычным способом вычисляются с помощью вещественных умножений и вещественных сверток. Фильтры объ- единяются на одном или нескольких кристаллах, причем умножи- тели для входных и выходных умножений выполняются на отдель- ных .кристаллах. Для прикладных задач фильтрации непосредственное выполне- ние фильтров на основе ПЗС- или ПАВ-устройств не всегда целе- сообразно, поскольку при проектировании каждого фильтра необ- ’> Такая структура иосит название «умножитель — свертыватель— умножи- тель» (У—С—У). Возможна дуальная структура С—У—С, которая может быть выполнена на ПАВ и ПЗС.— Прим. ред.
ходимо разрабатывать новый кристалл, что составляет определен- ные трудности в применении этих устройств для время-инвариант- ных фильтров. Следовательно, в основном с помощью ПЗС- и ПАВ- устройств предпочтительно конструировать цифровые фильтры, предназначенные для вычисления преобразования Фурье. В этом случае некоторые цепи предварительных и выходных умножений могут быть исключены в результате объединения выходных умно- жений в прямом преобразовании с предварительными умножения- ми в обратном преобразовании. Это можно увидеть из следующих рассуждений. Пусть необходимо вычислить .циклическую свертку yi двух по- следовательностей хп и hm: . Л7-1 yi— 2 xnhi^n. (5.4) п~0 Это выполняется посредством ЛЧМ z-преобразований Хь и Нь последовательностей соответственно хп и йт: Hk = Wh2/2^2' (5.5) т=0 Свертка yt получается в результате вычисления Yk = HkXh и об- ратного ЛЧМ z-преобразования от Yk: yt= (l/N) W~l2'z V YhW-h2'zW<l-Wz. (5.6) k=0 В (5.6) Yk умножается на W~h2/Z, в то время как выходное умно- жение Хк в (5.3) эквивалентно умножению Yk на Wh2/Z. Тем са- мым выходное умножение в Хь и предварительное умножение в (5.6) исключаются и могут быть опущены. 5.1.2. РЕКУРСИВНОЕ ВЫЧИСЛЕНИЕ ЛЧМ z-ПРЕОБРАЗОВАНИЯ При вычислении ДПФ методом ЛЧМ z-преобразований боль- шая часть вычислений приходится на задачу ЛЧМ-фильтрации. z-преобразование H(z) импульсной характеристики ЛЧМ-фильтра выражается соотношением 2N—1 H(z) = 2 W~n2/Zz~n. (5.7) п =0 Допустим, что N равно квадрату целого числа, N = Nzt, и пред- ставим индекс п как п=А1П2+«ь «2=0, —, 2А]—1, П] = 0, ..., /V]—1. (5.8) Следовательно, М,—1 2А\—1 Z7(z)= 2 W-n2'/zz~n' 2 W-N^n*(—l)n*z~N'n*, (5.9) что в свою очередь дает Nt—1 #(z)= 2 W~n2'/Zz~n' [(1— z~ZN)l(l + W-^z~^)]. .(5.10) я.=0 105
Таким образом, H(z) можно представить гребенкой из фильт- ров, соответствующих Ni различным значениям пь причем в каж- дый фильтр входит предварительное умножение на W-"”1^2, задерж- ка на ni отсчетов и рекурсивный фильтр с ^-преобразованием (1——z2—") / (1 + W~N-n-z~^). 5.1.3. ФАКТОРИЗАЦИЯ ЛЧМ-ФИЛЬТРА Обратимся к 'представлению ЛЧМ z-преобразования (см. рис. 5.1) в форме трансверсального фильтра. Коэффициенты фильт- ра равны W~n2/2, п=0, N—1. Все величины N не могут быть различными, поскольку —п2/2 определено по модулю N, и сравне- ние —п212=а modTV для определенных значений а не имеет ре- шения. Следовательно, ЛЧМ-фильтр можно выполнить с помощью умножителей, число которых меньше N, если отсчеты данных, со- ответствующие одинаковым значениям коэффициентов фильтра, суммировать до операции умножения. Число неодинаковых коэф- фициентов фильтра равно числу неодинаковых квадратичных выче- тов по модулю IV [5.2, 5.7]. Следовательно, используя результаты подразд. 2.1.4, можно определить число различных умножителей, требуемых для реализации ЛЧМ-фильтра. Рассмотрим сначала случай, когда N — нечетное простое чис- ло, N—p. Тогда в соответствии с теоремой 2.9 число неодинаковых квадратичных вычетов Q(p) = 1 + (р—1)/2. (5.11) Если исключить тривиальное нулевое решение, соответствующее умножению на 1, то число М нетривиальных умножителей умень- шится до М=(р—1)12. (5.12) Чтобы .найти число неодинаковых квадратичных вычетов для со- ставных N, можно .воспользоваться двумя теоремами. Теорема 5.1. Если N — составное число, N = NtN2 ... Nk, Ni= =PiCi, рг — различные простые числа, то число Q(N) квадратичных вычетов по модулю N Q(N) = Q(Ni)Q(N2) ...Q(Nk). (5.13) Данная теорема доказывается с использованием китайской тео- ремы об остатках. Если а — квадратичный вычет по модулю N, то а должно быть квадратичным вычетом по модулю взаимно-про- стых множителей числа N. Поскольку представление числа на ос- нове китайской теоремы от остатках единственно, два различных квадратичных вычета а и b обязательно должны отличаться по крайней мере одним из своих вычетов a,-, bi. Если M = /ViTV2, име- ется Q(7Vi) неодинаковых квадратичных вычетов по модулю Nt и Q(N2) неодинаковых квадратичных вычетов по модулю N2. Следо- вательно, всего имеется Q(N\)Q(N2) неодинаковых квадратичных вычетов по модулю N}N2. Выражение (5.13) доказывается по ин- дукции.
Теорема 5.2. Для N=pc число (неодинаковых квадратичных вы- четов Q(pc) = l + (pc+1—pd)/2(p+l), (5.14) если р — нечетное простое число, и Q (2е) =2+(2е-1—2d)/3, (5.15) если р = 2, причем d=Q для нечетных с и d=\ для четных с. Доказательство этой теоремы приведено в [5.8]. Таким образом, объединяя отсчеты данных до их умножения, можно значительно сократить число умножений, требуемых для работы ЛЧМ-фильтра. Например, для 16-точечного ДПФ Q.(16) = = 4, так что число умножений сокращается в 4 раза, если исполь- зовать факторизацию ЛЧМ-фильтра вместо прямого метода вы- числений. 5.2. АЛГОРИТМ РЕЙДЕРА В предыдущих разделах было показано, что лю'бое ДПФ за счет 2W комплексных умножений, выполняемых над отсчетами входных и выходных данных, может быть преобразовано в свертку на основе алгоритма ЛЧМ z-преобразования. Сейчас покажем, как с помощью совершенно другого метода, разработанного Рейдером [5.3], ДПФ можно также свести к циклической свертке. В некото- рых случаях с вычислительной точки зр’ения этот метод, оказы- вается, более эффективен, чем алгоритм ЛЧМ z-преобразования, поскольку вместо предварительных и выходных умножений, необ- ходимых в алгоритме ЛЧМ z-преобразования, алгоритм Рейдера содержит простое переупорядочение отсчетов входных и выход- ных данных. Рассмотрим сначала простой случай /V-точечного ДПФ N=p от- счетов, р — нечетное простое: р—1 г---- Xh= 2 xnWnh, k — 0, р—1; U?=exp(—]2л/р), j = y—1; п=0 (5.16) для fe=0 Xk вычисляется простым суммированием р—1 *о= 2 Хп- (5.17) и=0 для fe=#0 имеем р—1 йъ=Хо+ 2 xnWnK (5.18) п~1 Индексы п и k определены по модулю р. Из подразд. 2.1.3 сле- дует, что если и принадлежит множеству целых 0, 1, ..., р—2, то всегда существуют примитивные корни g, определенные по моду- лю р, такие, что g^modp пробегает все значения 1, 2, ..., р—1, в то время как и пробегает все значения 0, 1, ..., р—2. Следова- 107
тельно, индексы п и k, не равные 0, можно заменить на и и v в со- ответствии с n==gu mod р\ k=gvmo<\p, и, о = 0, р—2. (5.19) При этих условиях выражение (5.18) примет вид Р rtU-1-V Xgz-=ХО+ 2 , (5.20) и~0 откуда следует, что XgV—х0 вычисляется, как циклическая корре- ляция переупорядоченной последовательности х&ч данных с Wsu или, что эквивалентно, как (р—1)-точечная циклическая свертка последовательностей xgJ3-i-u = xg-u и Wsu. Таким образом, при не- четных простых W основная доля вычислений, требуемых для N-то- чечного ДПФ, 'приходится .на получение циклической (N— 1)-точеч- ной свертки. Описанный метод схематично представлен на рис. 5.2. Рис. 5.2. Вычисление р-точечпого ДПФ по алгоритму Рейдера (р — нечетное про- стое) Очевидно, если циклическую свертку получать с помощью БПФ- алгоритмов, то число операций в алгоритме Рейдера для вычис- ления p-точечного ДПФ (р — нечетное простое) пропорционально plogp. В разд. 5.3 и 5.4 будет показано, что важное значение ал- горитма Рейдера состоит также в том, что он в комбинации с другими методами позволяет достаточно эффективно вычислять ДПФ больших размеров. Распространим теперь алгоритм Рейдера на случай составных значений N [5.4, 5.9]. 5.2.1. СОСТАВНЫЕ АЛГОРИТМЫ Рассмотрим /Стачечное ДПФ, N=pc, р — нечетное простое. В соответствии с результатами подразд. 2.1.3 всегда существуют примитивные корни g по модулю рс порядка рс ' (р—1). Следова- тельно, можно 'предположить, что рс-точечное ДПФ представимо в виде циклической рс~1 (р—1)-точечной свертки и некоторых допол- нительных выражений. Чтобы доказать это, определим замену ин- дексов: k=pki+k2, ki—0, ..., pc~r—I; k2=0, ..., p—1. (5.21)
Тогда для /г2 = 0 /г==0 mod р и Xh равно __ рс~ 1 % xnWPnh'. (5.22) Поскольку Wpnk, определяет п по модулю рс-1, заменим ин- декс п: n=pc~ini+n2, «1 = 0, р—1, п2 = 0, ..., рс-‘—1. (5.23) Таким образом, при k2 — 0 выражение для принимает вид ре~‘-точечного ДПФ — рс~л—i / р—1 \ , = 3 2 V-'».+», Г (“ч п2~0 \nt— 0 / Далее, для /г^О modp получим отдельно выражения, соответ- ствующие «= 0 mod р и n^'Omodp: Xh=Ah+Bh, (5.25) Ah= 2 xnWnh, k^Qmod p, (5.26) Bk= s xnWnk, k^Omodp. (5.27) n??=0 Для n=0 mod p п^рщ, nr=0, ..., pc~‘—1. (5.28) Следоватедьно, заменив индекс k, получим k = pc-lk{+k2, /21 = 0, ..., p—1, fe2=l, ..., pc~l—1, /22^Omodp, (5.29) Ap'-'kt+k, = ” Wpnt k2- (5.30) tti=0 Выражение оправа от знака равенства в (5.30) не зависит от кг. Таким образом, Ak является рс-1-точечным ДПФ, в котором выход- ные отсчеты, соответствующие £2s0 modp, не вычисляются. Обратимся теперь к выражениям для Поскольку п, />=^0по модулю р, то последовательность Bh имеет длину рс~'(р—1) и nk^Omod р. Следовательно, индексы п и k могут быть представ- лены с помощью примитивного корня g, определенного по моду- лю рс: n=gu mod рс, k=gvmodpc, и, v = 0, ..., [рс-1(р—1) —1]. (5.31) Подставляя эти индексы в (5.27), получим рс-1(р—1)-точечную корреляцию: ' (5.32) и=0 Таким образом, рс-точечное ДПФ представляется в виде двух рс-1-точечных ДПФ и одной рс~Цр—1)-точечной корреляции. Этот 109
метод может быть рекурсивно применен для преобразования в кор- реляцию рс-1-точечногэ ДПФ. Например, 9-точечное ДПФ можно вычислить с помощью 3-точечного ДПФ, 6-точечной свертки и 3- точечного ДПФ, в котором первый выходной отсчет не вычисляет- ся. Если 3-точечное ДПФ свести к корреляции, то для вычисления 9-точечного ДПФ в целом потребуется выполнить одно умножение на W°, две 2-точечные свертки и одну 6-точечную свертку. Если N равно степени 2, то /^-точечное ДПФ тем же способом расчленяется на ДПФ размера /V/2 отсчетов и выражения ДПФ, соответствующие нечетным п и k, вычисляются как корреляция. Однако для N>4 не существует примитивных корней и, следова- тельно, используется произведение корней (—l)n,5”2, «1 = 0, 1, «2 = = 0, ..., (7V/4—1). С помощью этих корней образуется корреляция массива 2Х(Л74). 5.2.2. ПОЛИНОМИАЛЬНОЕ ПРЕДСТАВЛЕНИЕ АЛГОРИТМА РЕЙДЕРА Сведение ДПФ к набору сверток может стать достаточно слож- ным, если N — составное число. Введем полиномиальное пред- ставление ДПФ [5.10], которое значительно упростит описание ал- горитма Рейдера. Пусть имеется TV-точечное ДПФ N-1 ---- Xk= S xnWnk, fe = 0, ..., N—1, 1Е=ехр(—j2n/7V), j = "K—!• n=0 (5.33) Организуем TV-точечную входную последовательность хп в ви- де полинома X(z) eV коэффициентами, определенного по модулю z^ 1: N—1 X(z)== 2 mod (zw—1). (5.34) п=0 Заменим (5.33) выражением Xh=X(z) mod (z— Wk). (5.35) Казалось бы, нет необходимости определять полином (5.34) по модулю zN—1 и такое представление надумано. Однако мы посту- пили правильно, поскольку п определяется по модулю N. Выраже- ние (5.35) подразумевает, что Xh получается в результате подста- новки z=Wh в X(z). Несложная проверка показывает, что выра- жения (5.34), (5.35) —это два правильных представления форму- лы (5.33). Допустим, что N — нечетное простое, N=p. Поскольку число р делится на 1 и р, то z₽—1 факторизуется на два циклотомических полинома ZP— 1=(г— l)P(z), (5.36) P(z) =zp-‘+zp-2+ ... +1. (5.37) *> Т. е. полинома деления круга.— Прим. ред. ПО
Следовательно, полином X(z) полностью определяется своими вычетами по модулю z—1 и P(z): Xi(z)=X(z) mod (z— 1), (5.38) X2(z)=X(z) mod P(z). (5.39) Отметим, что z=Wh, fe = 0, ..., p—1, — корни полинома zp—1. Отметим также, что z= W°= 1 —_корень z—1, а р— 1 корней P(z) равны z—Wk, Поэтому Хь можно вычислить так: X0=Xi(z), (5.40) Xk^X2(z) mod (z—Wh), k=f=O, (5.41) где X2(z) —полином степени p—2, так как он определен по моду- лю P(z). Следовательно, Р~ 2 X2{z)= 2 anzn, (5.42) пО &п~Хп ^p—i- (5.43) Таким образом, для &=5^0 Xk представляет редуцированное ДПФ последовательности из р отсчетов, в которой последний отсчет ра- вен 0, причем первый выходной отсчет не вычисляется: р-2 Xh= 2 onWnfe, k^O. (5.44) п=О Окончательный результат не изменится, если Х} (z) умножйть на zp-1 по модулю zp—1, a X2(z)—на z по модулю Pz. Тогда р—2 X2(z) = 2 bnz\ (5.45) п—0 х0 (5.46) и Xh принимает вид _ р—1 Xk~zX2(z) mod (z— Wk\= 2 Ьп-^пк. (5.47) n=I Поскольку в (5.47) п,&#=0, то это выражение определит (р—1)- точечную свертку, если индексы п и k представить степенями при- митивного корня. Таким образом, для простого N алгоритм Рейде- ра можно представить в виде совокупности действий над полино- мами (рис. 5.3). Блоки, соответствующие приведению последова- тельности к полиномиальному виду и умножению на zp~* и z, по- казаны на рисунке с иллюстративной целью; и им обычно не со- ответствуют какие-либо вычисления, поскольку они просто отража- ют правила индексирования данных. Поэтому такие блоки при следующих описаниях полиномиальных представлений ДПФ бу- дем исключать. Основное значение представления в виде полиномов состоит в том, что оно значительно упрощает декомпозицию составных ДПФ в набор сверток. Рассмотрим, к примеру, 9-точечное ДПФ. Поли- 111
ном z9—1 факторизуется на три циклотомических полинома *>, так как делителями числа 9 являют- ся 1, 3 и 9. Эти полиномы равны Pi(z)=z—1, P2(z) = (z3-l)/(z^- — l)=Z2 + z+l, P3(2,) = (z9 — — l)/(z3—l)=z6 + z3+l. Следо- вательно, 9-точечное ДПФ может быть вычислено с помощью по- следовательности операций при- ведения по модулю P\(z), Pz(Z) и Рз(г) (рис. 5.4). В результате приведения по модулю z3—1 по- лучим 3-точечное ДПФ, которое можно вычислить посредством 2- точечной свертки и одного умно- жения (см. рис. 5.3). В результа- те приведения по модулю z6 + +z3 + l получим редуцированное ДПФ, которое вычисляет Xk при k^O mod 3. Редуцированное ДПФ выполняется с помощью од- ной 2-точечной и одной 6-точеч- ной сверток соответственно по формулам (5.30) и (5.32). Рис. 5.4. Вычисление 9-точечного ДПФ по алгоритму Рейдера. Полиномиальное представление *> Цикломатические полиномы неприводимы над полем рациональных чи- сел Q.— Прим ред. 112
5.2.3. АЛГОРИТМЫ МАЛОТОЧЕЧНЫХ ДПФ В гл. 3 было показано, что короткие свертки могут очень эф- фективно вычисляться с использованием интерполяционного мето- да. Следовательно, и алгоритм Рейдера для малоточечного ДПФ может быть приведен к эффективному с точки зрения вычислений виду. Практически вовсе не обязательно применять алгоритм Рей- дера для ДПФ длинных последовательностей, поскольку, как это будет показано в следующих разделах, существуют различные ме- тоды, которые позволяют конструировать алгоритмы ДПФ для длинных последовательностей из ограниченного множества мало- точечных ДПФ. Здесь же остановимся на задаче эффективного вы- полнения алгоритма Рейдера для малоточечного ДПФ. Свертки, получающиеся в алгоритме Рейдера, вычисляются та- ким же образом, как описано в гл. 3. Однако, поскольку в данном случае последовательность 'коэффициентов Wgn обладает некоторы- ми специфическими свойствами, в вычислениях возможны упроще- ния. Рассмотрим случай p-точечного ДПФ, где р — нечетное простое. Тогда имеем d-точечную свертку, d=p—1, d^- четное. Так как gn по модулю р образует циклическую группу порядка р—1, имеем gP-I = l mod р. Следовательно, g(H)/2==—1 mo(] р и ^gn+(P-i)/2 __ (5 48) Кроме того, поскольку Wgn ₽= cos (2jtgn/p) —j sin (2ngn/p), (5.49) то U7g”+(p-1)/2 = cos(2jig”/p) +j sin(2ngn/p), (5.50) что предполагает четную симметрию относительно середины интер- вала определения для вещественных коэффициентов и нечетную симметрию — для мнимых коэффициентов. Следовательно, если по- а—1 лином S Wgnzn приводится по модулю zd/2—1 или модулю zd/2+l, п=О то все коэффициенты получаемых полиномов будут соответственно вещественными или чисто мнимыми. Это означает, что все комп- лексные умножения сводятся к умножениям комплексного числа либо на вещественное, либо на чисто мнимое число и, следова- тельно, выполняются за счет только двух вещественных умножений. Такова общая особенность всех сверток, получаемых расчленением ДПФ посредством алгоритма Рейдера. Если N=ps, р — нечетное простое, возможны дополнительные упрощения [5.10]. В разд. 5.5 приведены наиболее часто используе- мые алгоритмы малоточечных ДПФ, данные о числе комплексных арифметических операций которых сведены в табл. 5.1. Число веще- ственных операций вдвое превышает число комплексных. Во многих прикладных задачах допустимо иметь выходные от- счеты ДПФ, умноженные на некоторую целую константу I. На 113
Таблица 5.1 Число комплексных Операций для малоточечных ДПФ, вычисляемых по алгоритму Рейдера Длина (после- довательно- сти W Число умно- жений М Число сложе- ний А Длина после- довательно- сти № Число умно- жений М Число сложе- ний А 2 2(2) 2 7 9(1) 36 3 3(1) 6 8 8(6) 26 4 4(4) 8 9 П(1) 44 5 6(1) 17 16 18(8) 74 Примечание. В скобках указано число тривиальных умножений на ±1, ±j. практике, если ДПФ применяются для вычисления циклической свертки двух последовательностей, одна из которых фиксирована, преобразование фиксированной последовательности, как правило, вычисляется заранее и может быть умножено на I//3. В таких слу- чаях есть возможность разработать улучшенные алгоритмы корот- ких ДПФ, в которых число нетривиальных умножений минимизи- ровано, Так, для N=p, р — нечетное простое, эта минимизацияосу- Р—2 ществляется с использованием свойства: S = — 1. В результате п=0 получается алгоритм, с масштабирующим множителем р—1 и дву- мя тривиальными умножениями на ± 1 вместо одного. Соответст- вующие показатели числа других операций приведены в разд. 5.5. 5.3. БПФ С ПРОСТЫМИ МНОЖИТЕЛЯМИ Для ДПФ длинных последовательностей алгоритм Рей- дера становится громоздким при получении аналитических выра- жений и с вычислительной точки зрения неэффективным. В на- стоящем. разделе обсуждается альтернативный метод, позволяю- щий вычислять ДПФ, когда N велико, с помощью вычислений не- скольких малоточечных ДПФ из набора Ni, N2, Ne, которые яв- ляются взаимно-простыми множителями числа N. Этот метод,'из- вестный под названием БПФ с простыми множителями был пред- ложен Гудом [5.11, 5.12]1) еще до введения БПФ и имеет как тео- ретическое, так и практическое значение. В теоретическом плане важен тот факт, что одномерное ДПФ в результате несложных перестановок может быть представлено в многомерном виде. Од- нако этот метод, как было показано в [5.13, 5.14]* 2), представляет и практический интерес, если его применять вместе с алгоритмом Рейдера. Кроме того, на основе положений алгоритма Гуда был разработан эффективный алгоритм Винограда преобразования Фурье [5.4]. *> Впервые этот метод был применен Томасом [1*].— Прим. ред. 2> Этот алгоритм получил название алгоритма простых множителей (АПМ). Программа АПМ приведена в [2*].— Прим. ред.
5.3.1. МНОГОМЕРНОЕ ПРЕДСТАВЛЕНИЕ ОДНОМЕРНОГО ДПФ Рассмотрим 'простой случай Af-точечного ДПФ Xk, когда N рав- но произведению двух взаимно-простых множителей и N2. Xh=N^xnWnh, k=0, ..., N—l, №=exp(—j2n/N), j= rc—0 (5.51) N=N,N2, (Wi, W2) = l. (5.52) Наша цель состоит в том, чтобы преобразовать одномерное ДПФ в двумерное массива Af]XA/2- Для этого необходимо каждый из индексов пик, определенных по модулю Af, представить в виде двух множеств индексов пь k\ и и2, k2, определенных по модулю А/) и А^2 соответственно. В подразд. 2.1.2 было показано, что су- ществует два различных метода для указанного представления: один основан на китайской теореме об остатках, другой — на при- менении некоторой перестановки. Воспользуемся сначала более простым способом, определив следующее преобразование индексов: N\П2+N2п\ mod N, nt, /ei = 0, ..., —1, (5.53) k=Nik2 + N2ki mod N, n2, k2 = 0, ..., N2—1. Это преобразование справедливо только для (Ni, Af2) = l. По- скольку (V|Af2=0mod Af, подстановка выражений индексов п и k в соответствии с (5.53) в формулу (5.51) дает N,-l -V2-I Хл-^+л'^- S S XN,n1+N^W^^W2^\ (5.54) n^—0 n2—О где Г, = ехр(—j2n/Wi), W72=exp(—j 2л/^). (5.55) Выражение (5.54) представляет двумерное ДПФ массива A^iXA^2. в котором показатели n\k\ и n2k2 доумножаются соответ- ственно на N2 и N}. Следовательно, для того чтобы получить дву- мерное ДПФ в обычном лексикографическом порядке, удобно и k2 заменить на /2^1 и l\k2, такие, что N2i2= 1 mod Nx и = 1 mod АХ Это равносильно замене (представления индекса k по (5.53) соответствующим эквивалентом из китайской теоремы об остатках: k=N\tik2+N2t2k\ mod N. (5.56) Тогда Xn^+Ш - ‘ 'xN.rMn, W2^-, (5.57) пд=0 n2—0 что имеет вид обычного ДПФ массива N\\N2. Следовательно, пользуясь для п преобразованием (5.53), а для k — соответствую- щим следствием из китайской теоремы об остатках (5.56) (или на- оборот), можно одномерную N1А/г-точечную свертку представить двумерной сверткой массива Л^1ХАГ2. 115
Этот метод может использоваться рекурсивно для представле- ния в многомерном виде. Точнее, если W— произведение d взаим- но-простых множителей Nc d N= П Ni, (5.58) i—1 то одномерное Л/-точечное ДПФ преобразуется в d-мерное ДПФ массива AfiXAfzX ••• ХМг заменой индексов d п= 2 Ntii/Nimod N, п.;=0, Ni—l, (-5.59) i=l d k^= 2 Ntiki/Nitnod N, ki = 0, ..., Ni—1, (5.60) i=l где ti определяется из условия NtilNi^XmoANi. (5.61) Нетрудно проверить, что в произведении n&modN с п и k, оп- ределенными по (5.59) и (5.60), все произведения вида niku, исключаются, поэтому d nk^= S NtiikifNi mod N, (5.62) i—1 и, как можно видеть, многомерное представление в действитель- ности имеет желаемый вид. Так как в принципе одномерное ДПФ преобразуется в много- мерное, то для вычисления многомерного ДПФ можно использо- вать несколько способов. В разд. 5.4 будет описан один из спосо- бов, заключающийся в гнездовании различных алгоритмов Ni-то- чечных ДПФ, но сначала представим метод, описанный впервые Гудом и основанный на обычном построчно-столбцовом подходе к вычислению многомерного ДПФ (см. разд. 4.4) [5.11—5.13]. 5.3.2. АЛГОРИТМ ПРОСТЫХ МНОЖИТЕЛЕЙ Рассмотрим двумерное ДПФ Xkt, kz массива Ni%N2,(Nu N2) = l: _ W,—1 N2—I xfcl,ft,= £ 3 xni, л1=0 n2=0 №i = exp(— j 2n/JV0, №2=exp(—j 2n/7V2), fci = 0, .... Ni— 1, Jfe2=0, ..., N2—l. (5.63) Будем считать, что это ДПФ либо изначально двумерное, либо получено из одномерного в результате преобразований, определен- ных по (5.53), (5.56), (5.57). Перепишем (5.63) так: _ W2-l t Nt—1 2 (5.64) n2=0 n,=0 Отсюда видно, что можно получить, вычисляя сначала A/\- точечное ДПФ для .каждого значения п2. Тогда будем иметь 116
наборов Л7! 2, k, по /V2 отсчетов каждый, которые представляют входные_последовательности для Д^А^-точечных ДПФ. Следова- тельно, Xklt ^вычисляется с помощьюN2NX- и /Vi/V2-точечных ДПФ. Подробная схема вычислений приведена на рис. 5.5 на примере i 2-точечного ДПФ, использующего алгоритмы 3- и 4-точечных ДПФ из подразд. 5.5.2 и 5.5.3. Для того, чтобы подсчитать число умножений М и сложений Л, необходимых для вычисления ДПФ по алгоритму простых множи- телей, допустим, что Mi, М2 и Ль Л2 выражают число умножений и сложений, требуемых для вычисления соответственно Ni-точечно- го и М2-точечного ДПФ. Тогда очевидно M=.NiM2+N2Mi, (5.65) Д=МД2+^Дь (5.66) Описанный метод рекурсивно распространяется на случай, ког- да число множителей больше двух. Следовательно, для d-мерного ДПФ имеем N= П Ni, (N{, Ni) — l, i=^l, (5.67) i=l d M= S NMi/Ni, (5.68) £—1 d Л= S NAi/Ni, (5.69) i—1 где Mi и Ai — соответственно число умножений и число сложений для ^-точечного ДПФ. Таким образом, вычисление ДПФ длинных последовательностей сводится к вычислению множества малоточечных ДПФ из набора Nlt N2, ..., Nd. Малоточечные ДПФ можно вычислять по любому алгоритму, однако целесообразнее использовать алгоритм Рейдера в силу его вычислительной эффективности. В табл. 5.2 приведены данные о числе нетривиальных вещест- венных арифметических операций для различных ДПФ, вычисляе- мых по алгоритму простых множителей и алгоритму Рейдера (см. табл. 5.1). При сравнении с табл. 4.3 можно заключить, что этот метод предпочтительнее, чем БПФ. Отметим, что данные табл. 5.2 относятся как к многомерным, так и к одномерным ДПФ. Например, для вычисления 30-точечно- го ДПФ требуется 100 нетривиальных умножений. То же число ум- ножений потребуется и для вычисления ДПФ массивов 2X3X5, 6X5, 10X3 нли 2X15, поскольку единственное различие между перечисленными вариантами состоит лишь в преобразовании индек- сов. В гл. 7 будет показано, что можно разработать еще более эф- фективные вычислительные методы для многомерных ДПФ. Следо- вательно, главное преимущество алгоритма простых множителей реализуется при вычислении одномерных ДПФ. 117
Рис. 5.5. Направленный граф для 12-точечного ДПФ, вычисляемого по алгоритму простых множителей Т а б л и ц а 5.2 Число нетривиальных вещественных операций для ДПФ, вычисляемых по алгоритму простых множителей и алгоритмам Рейдера Длина последо- вательности N Число вещест- венных умноже- ний м Число вещест- венных сложе- ний А Число умноже- ний иа отсчет M/N Число сложений на отсчет A/N 30 100 384 3,33 12,80 48 124 636 2,58 13,25 60 200 888 3,33 14,80 120 460 2076 3,83 17,30 168 692 3492 4,12 20,79 240 1100 4812 4,58 20,05 504 2524 13388 5,01 26,56 840 5140 23172 6,12 27,59 1008 5804 29548 5,76 29,31 2520 17660 84076 7,01 33,36 5.3.3. АЛГОРИТМ ПРОСТЫХ МНОЖИТЕЛЕЙ, РАСЩЕПЛЯЮЩИЙ ВЫЧИСЛЕНИЯ В этом разделе будет показано, что эффективность алгоритма простых множителей можно повысить путем декомпозиции вычис- лений [5.10]. Рассмотрим двумерное ДПФ массива WiX'Afc 118 *
_ N„-l Л',-] Xfelfe2= 3 rt2=O «!=0 l^j=exp(— }2n/Ni), IF2=exp(—j 2л/Аг2), &i = 0, .... Ni—1, £2=0, ..., /V2— 1. (5.70) Для упрощения рассуждений допустим, что Ni и N2 нечетные простые. Тогда с помощью алгоритма Рейдера каждое из Nt- или Д2-точечных ДПФ можно свести к одному умножению и одной (Ni—1)- или (Д2—1)-точечной корреляции. Следовательно, при ис- пользовании алгоритма простых множителей Xkt, ^вычисляется за счет одного ^-точечного ДПФ, одной (N2—-1)-точечной корреля- ции и одной корреляции массива (N2—1)Х(М—1): _ Л\-1 W2-l \ ^,.0= s ( *> п2=0 \п2=0 / _ Л',-2ГЛ'г-1 -1 , х0, =3 2 о) <2+ 2, «2=0 .«1=0 __ Л\—2 ,v Nt—2 л-л, 2 И2+ 2 2 (xftW1 gU- иг—0 и,—О , х whu<+vi — Xhui,0—Хо, g^ + Xo.ojWi , (5.71) (5.72) (5.73) где h и g— примитивные корни по модулю и N2, £! = /!”'mod Afb /1] = /!“'mod/Vb &2=g^ mod N2, n2=zgu* mod N2, Hi, r»i = 0, ..., /Vi—2; w2, w2=0, ..., N2—2. (5.74) Двумерная корреляция (5.73) разделима, поэтому ее можно вычислить построчно-столбцовым методом за счет N2—1 (М-М)- точечных корреляций и /V]—1 (Ы2—1)-точечных корреляций. Если /И, и М2 — число комплексных умножений, необходимых для вы- числения Ni- и Л/г-точечных ДПФ соответственно, то для вычисле- ния (/V]—1)- и (N2—1)-точечных корреляций необходимо соответ- ственно Mi~ 1 и 7И2—1 комплексных умножений, поскольку для про- стых N алгоритм Рейдера сводит Д-точечное ДПФ к одному ум- ножению и одной (7V—1)-точечной корреляции. Тогда общее число комплексных умножений для вычисления АД,^. М=Д1Л12 + 7V2.A4i—Ni—1V2+ 1. (5.75) Так как для обычного алгоритма простых множителей требует- ся 7У1Л12+Л/2Л41 умножений, то, как видно, расщепление вычислений исключает Ni + N2—1 комплексных умножений. Если для двумер- ной свертки осуществляются приведения по модулю циклотомиче- ских полиномов, то получающиеся выражения остаются раздели- 119
мыми1', поэтому имеется возможность дополнительно увеличить выигрыш в объеме вычислений. Покажем это, определив ДПФ (5.70) в полиномиальном виде по аналогии с тем, как это было сделано в подразд. 5.2.2: Л’,—I N2—1 X(z,,z2)=S S ХП1, п2 z^z2^ mod (Zi^—1), (z2^— 1) 2 *>, (5.76) nt~0 n2—0 xkl, k2=X(zx, z2) mod (Zj—Wxh<) (z2— W2k<). (5-77) Пренебрегая преобразованиями индексов и умножениями на z, ZiNi-1, z2 и z2^-1, такое же полиномиальное представление Рис. 5.6. Вычисление ДПФ массива 5X7 по алгоритму простых множителей с вложением можно использовать для то- го, чтобы достаточно про- сто представить алгоритмы простых множителей, в ко- торых -происходит расщепле- ние вычислений, как это по- казано на рис. 5.6 для слу чая ДПФ массива 5X7. Можно видеть, что основная доля вычислений соответст- вует получению корреляции массива 4X6, которая мо- жет рассматриваться как произведение полиномов по модулю z4i—1, z62—1. По- скольку z4i—1 и z62—1 —со- ставные полиномы, то вычи- сление корреляции массива 4X6 может быть также рас- щеплено на вычисления по модулю циклотомических полиномов, на которые факторизуются z4i—1 и z62— 1: z41-l=(z1-l)(z1 + l)(z2, + l), Z62—1 — (z2—1) (z2+ 1) (Z22 + Z2+ 1) (Z22—Z2+ 1). (5.78) (5.79) Полный, co всевозможными приведениями по модулю цикло- томических полиномов, алгоритм представлен на рис. 5.7. Посколь- ку на любом этапе декомпозиции алгоритма все .выражения оста- ются разделимыми, двумерные полиномиальные произведения вы- числяются построчно-столбцовым методом. Так, двумерное полино- миальное произведение по модулю zzl-\-l, z22+z2+l вычисляется как два полиномиальных произведения по модулю z22+z2+1 и 2 полиномиальных произведения по модулю z2i + l. *> Функция от нескольких переменных, например двух, разделима, если f(zi, z2)=f1(z1)f2(z2).— Прим. ред. 2> Запись X(zi, z2) mod A(zt), B(z2) означает, что сначала осуществляется приведение по модулю 4(г,), а затем — по модулю B(z2) или наоборот.-^ Прим. пер. 120
В результате разложений по простым множителям и расчлене- ния вычислений для выполнения ДПФ массива 5X7 требуется 76 комплексных умножений и 381 комплексное сложение при ус- ловии, что корреляция массива 4X6 вычисляется построчно-столб- цовым методом. Если вычисление корреляции массива 4X6 сво- дится к вычислению произведений полиномов (см. рис. 5.7), то Рис. 5.7 Вычисление корреляции массива 4X6 для получения ДПФ массива 5X7 по методу простых множителей с полным вложением1 указанная корреляция вычисляется за 46 умножений и 150 сложе- ний вместо 62 и 226 соответственно при построчно-столбцовом ме- тоде. Следовательно, суммарный объем вычислений по приведен- ному алгоритму состоит из 60 комплексных умножений и 305 ком- плексных сложений. (Обычный алгоритм простых множителей тре- бует 87 комплексных умножений и 299 сложений.) Таким образом, расчленение вычислений в данном случае приводит примерно к 30 %-ному сокращению числа умножений. Аналогичный метод расщепления может применяться для длин последовательностей, выражающихся более чем двумя простыми множителями, а также составными множителями. Следует также отметить, что сокращение объема вычислений увеличивается с ро- стом размера ДПФ. Следовательно, для ДПФ больших размеров 121
метод простых множителей с расщеплением существенно умень- шает число арифметических операций, правда, за счет более слож- ного представления алгоритма. 5.4. АЛГОРИТМ ВИНОГРАДА ПРЕОБРАЗОВАНИЯ ФУРЬЕ В предыдущем разделе было показано, что ^точечное ДПФ, где 7V равно 'произведению d простых множителей N\, N%, ... ..., Nd, в результате несложной перестановки индексов может быть преобразовано в 'многомерное ДПФ массивов /ViXA^X — ХМь Если это многомерное ДПФ вычислять с помощью обычного по- строчно-столбцового метода, то получится алгоритм простых мно- жителей. Ниже будет обсуждаться другой способ вычисления мно- гомерного ДПФ, основанный на гнездовом алгоритме, разработан- ном Виноградом [5.4, 5.15, 5.16]. Этот метод оказывается особенно эффективным в смысле сокращения числа умножений, если его объ- единить с алгоритмом Рейдера. 5.4.1. ОПРЕДЕЛЕНИЕ АЛГОРИТМА Пусть дано ДПФ массива A1X-V2: _ n2—i u Л\—1 xkl,ks= s w" S » n2=0 nt=0 ^1 — 0, — 1, A/g— №1 = ехр(—]2л/М), l^2=exp(—]2nlN^. (5.80) Это ДПФ может рассматриваться с самого начала либо как дву- мерное, либо как одномерное ^точечное ДПФ N=NiN2, (AfbAf2) = = 1, преобразованное в двумерный вид посредством перестановки индексов, как в алгоритме Гуда. Двумерное ДПФ (5.80) можно также рассматривать как одномерное Мг-точечное, если каждый скаляр заменить на вектор из Ni компонент, а каждое умноже-, ние — на А^-точечное ДПФ. Другими словами, ДПФ (5.80) можно выразить так: _ JV2—1 Xkt.k2= 2 W2n2hiAXn„ (5.81) n2=0 где Xn2—вектор-столбец данных хИ11П2 из Ni компонент; А — мат- рица комплексных экспонент размерами Ni\Ni: Хо. п2 ^1. п2 (5.82) 1, п2_ W°i U7] w°x Hz] ... w°i ... (5.83) U/0 №<"*-0 ... 122
Следовательно, ДПФ полиномов, определенное по (5.81), явля- ется Л^2-точечным ДПФ, в котором каждое умножение на 1Р2П2*2 заменено умножением на W2n2k2A. Последняя из упомянутых операций сама по себе эквивалентна М-точечному ДПФ, в котором каждое умножение на Win,kt заменено умножением на W2n2k2Win'k'. Можно видеть, что алгоритм Винограда разделяет вычисление ЛГ1М2- или (MiХЛ/'г)-точечного ДПФ на вычисления и Мг-точечных ДПФ посредством метода, который в корне отлича- ется от способа, соответствующе- го алгоритму простых множите- лей. Фактически используемый здесь метод аналогичен гнездово- му, описанному Агарвалом и Ку- ли для сверток (см. подразд. 3.3.1). Метод Винограда представля- ет особый интерес, если ДПФ ма- лых размеров вычислять с. помо- щью алгоритма Рейдера. В этом случае для вычисления коротких ДПФ требуется А1 входных сло- жений, М комплексных умноже- ний и А2 выходных сложений. Тог- да алгоритм Винограда для ДПФ массива NxXN2 можно предста- вить, как показано на рис. 5.8. Ес- ли М2, А2 и А22 — число комп- лексных умножений, входных и выходных сложений для вычисле- ния М2-точечного ДПФ, то общее число умножений М и сложений А для получения ДПФ массива NiX.N2 равно коротких Afr Н2 полиномов по И/ членов NjA2 сложений M^M2 умножений. M2Aj сложений NjAi сложений Рис. 5.8. Алгоритм Винограда пре- образования Фурье в случае двух множителей M=MiM2, (5.84) A = Mi(A*2+A22)+M2Ab (5.85) где Mt и Ai — число умножений и число сложений, необходимых для вычисления Мгточечного ДПФ. Поскольку общее число сло- жений А2 в алгоритме ^-точечного ДПФ равно А2=А12+А22, то (5.85) принимает вид A=MiA2+M2Ai. (5.86) Этот- метод можно рекурсивно распространить на случай более двух множителей. Тогда многомерное ДПФ массива N\XN2X ... ... XNd или одномерное N{N2... Л^-точечное ДПФ, где (Nt, Ж) = 1 при i=A=k, вычисляются 'посредством М умножений и А сложений: d М= П Mi. (5.87) i=l 123
A—ДГМ2... A\j + A4p42Af3 ••• Mj + ••• +Л11Л12... Ald-Hd, (5.88) где М{ к A, — число комплексных умножений и сложений для по- лучения ^-точечного ДПФ. Отметим, что число сложений зависит от порядка выполнения операций. Например, вычисление ДПФ массива MiX/V2 как ЛДто- чечного ДПФ, в котором умножения заменены на ^-точечное ДПФ, даст число сложений (5.89) Первый способ вложения будет требовать меньшего числа сло- жений, чем второй, если Л^1Л2+Л12Д1<^Л1+Л11Д2 или (Л12—7V2)M2<(Mi-7V1)/Ai. (5.90) Таким образом, величины (Mt—Ni)/Ai характеризуют порядок, в котором необходимо (вкладывать различные короткие алгоритмы, чтобы минимизировать число сложений. Следует заметить, что в (5.84), (5.86) — (5.88) М и А выра- жают соответственно суммарное число комплексных умножений и сложений. Однако, если ДПФ малых размеров вычисляются по ал- горитму Рейдера, то все комплексные умножения сводятся к ум- ножениям комплексного числа на вещественное или чисто мнимое и выполняются посредством двух вещественных умножений. Кро- ме того, некоторые умножения в алгоритмах ДПФ малых разме- ров являются тривиальными умножениями на ±1 и ±j. Следова- тельно, если для N{-точечного ДПФ число таких тривиальных ком- плексных умножений равно L{, то число вещественных нетриви- альных умножений d d М=(2 П Mt) — (2 П Ц). (5.91) i=l t=l Для иллюстрации метода Винограда на рис. 5.9 представлен направленный граф, соответствующий 12-точечному ДПФ, исполь- зующему алгоритмы 3- и 4-точечных ДПФ из подразд. 5.5.2 и 5.5.3. В табл. 5.3 приведены данные о числе вещественных нетриви- альных операций для различных ДПФ, вычисляемых по алгорит- му Винограда с использованием алгоритмов малоточечных ДПФ из разд. 5.5, для которых значения числа операций сведены в табл. 5.1. Можно видеть, что по сравнению с алгоритмом простых множителей (см. табл. 5.2) алгоритм Винограда ДПФ последова- тельностей длиной от 840 до 2520 отсчетов сокращает чис- ло умножений примерно вдвое, требуя при этом несколь- ко большего числа сложений. Если сравнение произвести с обычным БПФ-методом, использующим, например, алгоритм Рейдера—Бреннера (см. табл. 4.3), то можно видеть, что алгорит- мы Винограда преобразования Фурье сокращают число умножений в 2—3 раза при незначительном увеличении числа сложений. Эти результаты доказывают, что основное значение алгоритма Вино- града преобразования Фурье состоит в уменьшении числа умно- 124
жетаий. В принципе алгоритмы малоточеч'ных ДПФ можно пере- работать о целью минимизации числа сложений за счет большего числа умножений. Таким образом, 'метод Винограда преобразова- ния Фурье является очень гибким и позволяет подбирать чйсло Рис. 5 9. Направленный граф 12 точечного ДПФ, вычисляемого по алгоритму Винограда преобразования Фурье Таблица 5.3 Число нетривиальных вещественных операций для одномерных ДПФ, вычисляемых по алгоритму Винограда преобразования Фурье Длина последо- вательности Число вещест- ‘ венных умноже- ний М Число вещест- венных сложе- ний А Число умноже- ний на отсчет M/N Число сложений на отсчет A/N 30 68 384 2,27 12,80 48 92 636 1,92 13,25 60 136 888 2,27 14,80 120 276 2076 2,30 17,30 168 420 3492 2,50 20,79 240 632 5016 2,63 20,90 420 1288 11352 3,07 27,03 504 1572 14540 3,12 28,85 840 2580 24804 3,07 29,53 1008 3548 34668 3,52 34,39 2520 9492 99628 3,77 39,53 125
сложений и умножений, чтобы удовлетворить требования конкрет- ной реализации. АВПФ особенно приемлем для вычисления ДПФ последователь- ностей вещественных данных. В этом случае все входные сложе- ния и все умножения вещественные и только некоторые выходные сложения комплексные. Следовательно, в противоположность дру- гим быстрым алгоритмам ДПФ вычисление ДПФ вещественных данных в соответствии с АВПФ требует приблизительно половины операций, необходимых в случае комплексных данных, и не тре- бует обработки одновременно двух вещественных последовательно- стей. Итак, АВПФ представляется заслуживающим внимания ме- тодом для обработки вещественных данных, когда необходимо эко- номить память, и для задач обработки в реальном масштабе вре- мени, где может быть недопустима задержка, связанная с обра- боткой одновременно двух последовательных блоков веществен- ных данных. 5.4.2. ГИБРИДНЫЕ АЛГОРИТМЫ Показано, что ДПФ массива A^iXA^zX ... XNd можно вычис- лить, воспользовавшись алгоритмом простых множителей или ал- горитмом Винограда. Для более детального сравнения этих двух методов рассмотрим ДПФ массива А^хМг- Для алгоритма про- стых множителей требуется NiM2 + N2M\ умножений, тогда как для алгоритма Винограда — Л11Л12. Отсюда следует, что в алгоритме Винограда число умножений меньше, чем в алгоритме простых множителей, если ^/М1+У2/Л12>1. (5.92) В этой формуле Mi и М2 — числа комплексных умножений, необ- ходимые соответственно для М- и 7У2-точечных ДПФ. Следова- тельно, Mt^Ni и M2^N2. Однако, поскольку алгоритмы Рейдера достаточно эффективны, значения М\ и Л12 лишь немногим более чем Ni и N2. Кроме того, отношение N^Mi уменьшается медленно в зависимости от TVi, поэтому условие (5.92) почти всегда выпол- няется, за исключением случаев ДПФ очень больших размеров. Таким образом, алгоритм Винограда в основном требует меньшего числа умножений, чем алгоритмы простых множителей. Это мож- но видеть на примере 2520-точечного ДПФ. В данном случае NjM = = 0,53, тогда для ДПФ массива 2520x2520 Ni/Mi +N2/M2= 1,06. Следовательно, даже для ДПФ при таком большом IV замена ал- горитма Винограда на метод простых множителей с расчленением лишь незначительно сокращает число умножений. Если рассматривать число сложений, то ситуация полностью противоположная. Это .происходит вследствие того, что в алгорит- ме с простыми множителями для вычисления ДПФ массиваNtXN2 выполняется ТУИг+ЛМ; сложений, в то время как в алгоритме Винограда — NiA2+M2At сложений. Поскольку M2^N2, то алго- ритм Винограда всегда требует большего числа сложений, чем алгоритм простых множителей, за исключением случая M2=N2. 126
Сравнение табл. 5.2 и 5.3 показывает, что для Л^^168 алго- ритм Винограда требует умножений меньше, чем алгоритм про- стых множителей, а сложений столько же. Для ДПФ при больших N, однако, алгоритм простых множителей лучше в смысле числа сложений, чем алгоритм Винограда. Следовательно, для ДПФ при больших N может быть выгодно объединить эти два метода, если от- носительные затраты на реализацию умножений и сложений при- близительно одинаковы [5.13]. Например, 1008-точечнсе ДПФ мож- но вычислять как ДПФ массива 16x63 с помощью алгоритма про- стых множителей, в котором для 63-точечных ДПФ применяется алгоритм Винограда. Тогда для указанного ДПФ потребуется 4396 вещественных умножений и 31 852 вещественных сложений, .в то время как для алгоритма Винограда необходимо 3548 веществен- ных' умножений и 34668 сложений, .а для алгоритма простых мно- жителей — 5804 умножений ,и 29548 сложений. Таким образом, ком- бинация этих двух алгоритмов позволяет достичь лучшего соотно- шения между числом сложений и числом умножений. 5.4.3. ПОСЛОЙНО-ГНЕЗДОВЫЕ АЛГОРИТМЫ Как видно из подразд. 5.3.3, многомерное ДПФ можно преоб- разовать в набор одномерных и многомерных сверток последова- тельностью операций приведения по модулю, если малоточечные ДПФ вычислять по алгоритму Рейдера. В частности, если Ni и N2 нечетные простые, то ДПФ массива можно расчле- нить на TVi-точечное ДПФ, одну (N2—1)-точечную свертку и сверт- ку массива (М—1)Х(Мг—1). Пример для ДПФ массива 7x5 приведен на рис. 5.6. Таким образом, алгоритм Винограда можно считать эквивалентным преобразованию ДПФ в набор одно- и многомерных сверток и вычислению многомерных сверток по гнез- довому алгоритму (см. разд. 3.3). Следовательно, с учетом ре- зультатов подразд. 3.3.2 можно заключить, что дальнейшее со- кращение числа сложений возможно, если обычное вложение сверток заменить расщепленным вложением. Тогда по алгорит- му Рейдера (см. разд. 5.2) ДПФ малых размеров сводятся к сверткам, а .свертки, в свою очередь, — к полиномиальным произ- ведениям, определенным по модулю циклотомических полиномов. На практике, однако, этот метод не может быть применен не- посредственно без некоторых модификаций. Внимательный чита- тель заметит, что число сложений, соответствующих алгоритмам малоточечных ДПФ из разд. 5.5, не согласуется с числом опера- ций, полученным для метода непосредственного приведения ДПФ к сверткам, как обсуждалось в разд. 5.2. Например, по алгорит- му, приведенному в подразд. 5.5.5, 7-точечное ДПФ вычисляется за 9 умножений и 36 сложений. Однако то же ДПФ, полученное по алгоритму Рейдера в соответствии с рис. 5.3, требует 12 сложений для приведений по модулю z—1 и (z7—1) / (z—1) и 34 сложений для 6-точечной свертки, в сумме — 46 сложений. Такая разница 127
объясняется тем, что часть операций, связанных с процедурами приведения по модулю, может войти в вычисления сверток. Для М-точечного ДПФ, N нечетного простого, эта процедура сводит вычисления к выполнению одной (N—1)-точечной свертки двух сло- жений вместо одной (М—1)-точечной свертки и 2(М—1) сложений. Следовательно, непосредственное применение гнездового метода с расчленением нецелесообразно ввиду того, что получающийся алго- ритм будет содержать некоторое число избыточных операций сло- жения. Указанная трудность преодолевается с помощью метода, ко- торый состоит в том, что произведения полиномов в алгоритмах ДПФ малой длины выражаются по модулю неразложимых цикло- томических полиномов Рис. 5.10. Алгоритм 5-точеч- ного ДПФ степени более 1. Так сделано, например, в подразд. 5.5.4, 5.5.5, 5.5.7 и 5.5.8 для ДПФ последовательности длиной со- ответственно 5, 7, 9 и 16. В результате применения описанного метода вычис- ление 5-точечного ДПФ будет вклю- чать 14 входных и выходных сложе- ний, три умножения и одно произведе- ние полиномов по модулю z2+l (рис. 5.10), а вычисление 7-точечного ДПФ сведется к 30 входным и выходным сложениям, трем умножениям и про- изведениям полиномов по модулю z2 + +z+l и z2—z+1. Следовательно, вы- числение 35-точечного ДПФ по алго- ритму гнездования этих двух ДПФ по- требует 9 умножений, 3 произведения полиномов по модулю z2i+l, по 3 про- изведения полиномов по модулю z22 + + Z2+I И ПО модулю 222—Z2 + I и по одному произведению полиномов по модулю Z2i + 1, Z22 + z2+l и по моду- лю z2i + l, z22—Z2+I. Тогда в сумме алгоритм будет включать 54 комплексных умножения и 305 сложе- ний, в то время как при обычном гнездовании получается 54 умно- жения и 333 сложения. В табл. 5.4 приведены данные о числе вещественных сложений для различных ДПФ, вычисляемых методом послойного вложе- ния. Методы простого вложения и послойного вложения требуют одинакового числа умножений, но, как можно видеть из сопостав- ления табл. 5.3 и 5.4, для ДПФ при больших N метод послойного вложения сокращает число сложений по сравнению с обычнымме- тодом вложения на 10—15%. Дополнительное сокращение числа сложений можно получить, применяя метод послойного вложения для вычисления многомерных ДПФ при больших N. Представле- ние метода простых множителей с вложением можно значительно упростить, образовав составные послойно-гнездовые алгоритмы 128
ДПФ и тем самым исключив ряд операций с комплексными дан- ными, .необходимых в процедуре послойного вложения. Например, 504-точечное ДПФ можно вычислять с помощью обычного вложе- ния 8-точечных ДПФ, вместе с тем получая алгоритм 63-точечного ДПФ методом послойного вложения. Т а б ли ц а 5.4 Число вещественных сложений для одномерных ДПФ, вычисляемых по алгоритму Винограда преобразования Фурье н послойно-гнездовому алгоритму Длина после- довательно- сти Число вещест- венных сло- жений А Число сложе- ний на от- счет AjN Длина после- довательно- сти IV Число вещест- венных сло- жений А Число сложе- ний на от- счет A/N 240 4848 20,20 840 23460 27,93 420 10680 25,43 1008 30364 30,12 504 13580 26,94 2520 86764 34,43 5.4.4. МНОГОМЕРНЫЕ ДПФ До сих пор рассматривалось применение метода вложения Ви- нограда только для вычисления (NiN2 ... Nd) -точечного ДПФ или ДПФ массива N^XN2X ... xNd, где множители Ni были попарно взаимно-простыми. Однако условие (Ni, Nu) = l при i=^=u необхо- димо лишь для преобразования одномерных ДПФ в многомерные по алгоритму Гуда. Следовательно, гнездовой алгоритм Виногра- да можно применять также для вычисления многомерного ДПФ массива N^xN2X ... XNd, где числа Ni не обязательно попарно взаимно-просты. Если для каждого измерения число Ni составное, Ni=NijNi,2 ... Ni,ei, (Ni,u, Ni,v) = l при u=^=v, то замена индексов по алгоритму Гуда преобразует d-мерное ДПФ в многомерное ДПФ размерности е2, ...; Для иллюстрации результатов этого подхода в табл. 5.5 при- ведены данные о числе вещественных операций для различных многомерных ДПФ, вычисленных по алгоритму Винограда. Можно видеть, что алгоритм Винограда особо эффективен для указанных задач, поскольку, например, для вычисления ДПФ массива 1008 X Х1008 необходимо только 6,25 вещественных умножений в пере- счете на отсчет или примерно два комплексных умножения на от- счет. Кроме того, для многомерных ДПФ больших размеров метод расщепленного вложения дает дополнительно значительное сокра- щение числа сложений. К примеру, для ДПФ массива 1008X1008 расщепленное вложение сокращает число вещественных сложений с 93076776 (обычное вложение) до 64808280 (или приблизительно на 30%). 5.4.5. ВОПРОСЫ ПРОГРАММИРОВАНИЯ И ШУМЫ КВАНТОВАНИЯ АВПФ Алгоритм Винограда преобразования Фурье в основном тре- бует меньше умножений, чем БПФ-алгоритм. Это сокращение чис- ла умножений достигается без какого-либо существенного увели- 5 Зак. 522 129
чения числа сложений, а в некоторых случаях число сложений в методе Винограда может быть даже меньше, чем в БПФ-методе. Однако указанный результат представляет пока теоретический ин- терес, поскольку долгое время считалось, что оптимальной вычис- лительной процедурой для получения ДПФ является БПФ. Поэто- му важное достижение теории сложности вычислений состоит в том, что было доказано существование метода для вычисления ДПФ, в корне отличного от БПФ и более эффективного с вычис- лительной точки зрения. Таблица 5.5 Число нетривиальных вещественных операций для многомерных ДПФ, вычисляемых по алгоритму Винограда преобразования Фурье Размеры мас- сива NXN Число вещест- венных умноже- ний М Число Вещест- венных сложе- ний А Число умноже- ний на отсчет Число сложений на отсчет A/N 24x24 1080 12096 1,87 21,00 30x30 2584 24264 2,87 26,96 40x40 4536 44736 2,83 27,96 48x48 5704 63720 2,48 27,66 72x72 15416 180032 2,97 34,73 120X120 41400 517824 2,87 35,96 240x240 209824 2683584 • 3,64 46,59 504x504 1254456 17742656 4,94 69,85 1008X1008 6350920 93076776 6,25 91,61 120x120x120 5971536 97203456 3,46 56,25 240 x 240 x 240 68023424 1086647616 4,92 78,61 Ключевой момент в вопросе о применимости метода Винограда связан с написанием вычислительной программы, которая была бы более эффективной, чем обычные программы, реализующие БПФ. Ясно, что число арифметических операций ни в коем случае не яв- ляется единственной мерой вычислительной сложности, и к момен- ту написания данной книги (1979 г.) было известно несколько про- тиворечивых сообщений об относительной эффективности АВПФ и БПФ-алгоритмов, в которых, в частности, говорилось, что факти- ческое время выполнения АВПФ на ЭВМ для вычисления ДПФ последовательностей длиной от 500 до 1000 отсчетов приблизи- тельно на 30% больше, чем для БПФ-алгоритмов [5.17, 5.19]. Не будем пытаться объяснять причины этих различий, а сравним программирование АВПФ и БПФ-алгоритмов качественно. Рабо- тающая программа АВПФ приведена в [5.9]. Поскольку АВПФ требует меньшего числа умножений, то мож- но ожидать, что программы, реализующие АВПФ, будут относи- тельно более быстрыми при выполнении на ЭВМ, для которых вре- мя выполнения операции умножения значительно больше времени выполнения операции сложения. Другой важный фактор связан с относительным размером программ БПФ и АВПФ. Если програм- мы БПФ основаны на БПФ-алгоритме по одному основанию (обычно 2 или 4), то вычислительный процесс состоит в повторя- ло
ющемся использовании подпрограммы, представляющей базовую операцию БПФ-алгоритма. Следовательно, программы БПФ могут быть достаточно компактными и по существу не зависеть от разме- ра ДПФ при условии, что он равен степени основания БПФ-алго- ритма; АВПФ, напротив, требует различные вычислительные про- цедуры для каждого значения N ДПФ, причем каждая процедура, в противоположность рекурсивной структуре БПФ-алгоритмов, имеет вполне определенный вид, соответствующий конкретному ал- горитму ДПФ малого размера. Таким образом, для дискретных преобразований Фурье сравнимых размеров программы АВПФ обычно содержат большее число команд, чем программы БПФ, и должны включать подпрограммы, которые осуществляют выбор соответствующих вычислительных процедур в зависимости от раз- мера ДПФ. Эта особенность подсказывает организацию структуры программы за два шага: генерации и выполнения. Тогда програм- ма может быть спроектирована таким способом, что большинство вспомогательных операций — подготовка данных, выбор процедур, а также предварительное вычисление значений коэффициентов, участвующих в операциях умножения,—выполняется на шаге ге- нерации и, следовательно, они существенно не влияют на время выполнения. Программа АВПФ делится на пять основных частей: переупо- рядочение входных данных, входные сложения, умножения, вы- ходные сложения и переупорядочение выходных данных. Пере- упорядочение входных и выходных данйых требует ряда модуляр- ных операций умножения и сложения, которые можно исключить из шага выполнения, если на. шаге генерации рассчитать соответ- ствующие векторы переупорядочения. Тогда на шаге выполнения необходимые перестановки данных осуществляются с использова- нием этих векторов. Входные сложения образуются из набора сло- жений, соответствующих каждому множителю Ni, за исключением самого последнего, которые на каждом этапе, воздействуя на Ni входных массивов, создают Mi выходных массивов. Поскольку в основном больше, чем Ni, то вычисления с замещением про- изводить, как правило, нельзя. Следовательно, полученные на каждом этапе алгоритма данные невозможно разместить в тех же ячейках памяти, в которых находились входные для данного этапа отсчеты. Однако всегда можно для входных данных выде- лить Ni ячеек памяти из числа Mi ячеек, предназначенных для размещения выходных данных, а так как Mi не намного больше то рассматриваемый алгоритм в смысле использования па- мяти оказывается несколько менее эффективным, чем алгоритм с замещением. Вычисления, соответствующие последнему мно- жителю Nd, выполняются со скалярными данными и включают все умножения, требуемые для вычисления JV-точечного ДПФ. Если М — общее число умножений, необходимых для вычисления N-to- чечного ДПФ, a Md— число умножений для вычисления ^-точеч- ного ДПФ, то вычисления, соответствующие множителю Nd, сво- дятся к вычислению MfMd Nd-точечных ДПФ. В этом случае Md ,, 131
представляют собой коэффициенты ^-точечного ДПФ, умножен- ные на коэффициенты, относящиеся к другим алгоритмам мало- точечных ДПФ. Чтобы избегать вычисления этого множества из Md коэффициентов для каждого из M)Md ^-точечных ДПФ, це- лесообразно заранее на шаге генерации рассчитать вектор из М коэффициентов, разделенный на M/Md множеств из Md компонент. Поскольку эти коэффициенты вещественные или чисто мнимые, то всего требуется М вещественных ячеек памяти, что значительно меньше, чем для БПФ-алгоритма, в котором коэффициенты вы- числяются заранее. Из изложенного можно заключить, что хотя АВПФ не пред- ставляют собой алгоритма с замещением, суммарные затраты па- мяти для хранения данных и коэффициентов могут оказаться те- ми же, что и для БПФ-алгоритма. В общем же размеры прог- рамм для АВПФ будут больше, чем для БПФ, но не слишком большими, так как число команд в программе приблизительно paBiHO сумме числа сложений, соответствующих каждому алгорит- му малоточечного ДПФ. Следовательно, если N=NiN2 ... Ni ... ... Nd, а — число сложений для получения Л^-точечного ДПФ, то грубой мерой объема программы будет сумма 24,, которая i увеличивается очень медленно с ростом N. Например, для М=30 24^ = 25, для JV= 1008 2.4, = 154. Таким образом, размер програм- i мы для АВПФ и требования к объему памяти могут оставаться достаточно умеренными даже для длинных последовательностей при условии, что ^программы разрабатываются соответствующим способом для обработки данных, упорядоченных в массив. Сле- довательно, АВПФ особенно хорошо приспособлен для таких си- стем, как АПЛ, которые проектируются для эффективной обра- ботки массивов данных. Другой важный вопрос связан с шумами квантования в алго- ритме Винограда из-за конечной разрядной сетки, однако на эту тему, имеется очень мало информации. Предварительные резуль- таты, приведенные в [5.18], показывают, что соответствующее масштабирование на каждом этапе алгоритма более сложное, чем для БПФ, вследствие того, что все блоки алгоритма отличаются друг от друга и не все масштабирующие коэффициенты равны степени 2. В случае формата данных с фиксированной запятой это обстоятельство сильно влияет на отношение сигнал-шум АВПФ, так что в основном для представления данных в АВПФ требуется примерно на один-два бита больше, чтобы получающие- ся ошибки были такими же, как в БПФ-алгоритме. 5.5. АЛГОРИТМЫ МАЛОТОЧЕЧНЫХ ДПФ В данном разделе приводятся алгоритмы малоточечных ДПФ, которые наиболее часто используются в методе простых множителей или в АВПФ. Эти алгоритмы вычисляют одномерные 132
JV-точечные ДПФ комплексных последовательностей хп входных данных: Xh = Nf'xnWnk, k = 0, N—l, 117=exp (— j2n/N), j=]/^l. n—0 (5.93) для A=2, 3, 4, 5, 7, 8, 9, 16. Алгоритмы получены с помощью алгоритма Рейдера и орга- низованы следующим образом: входные данные х0, xi, ..., Xjv-i и выходные данные Хо, XIt ... ..., Xjv-i упорядочены естественным образом; т0, т\, ..., тм-х обозначают результаты М умножений, соот- ветствующих длине N; ti, t2, ... и S], s2, ... обозначают вспомогательные ячейки памя- ти соответственно для входных и выходных данных. Порядок вычислений таков: ti, trii, Si, Xf, чьи индексы изме- няются в естественном порядке. Для ДПФ последовательности 5, 7, 9, 16 вычисления можно построить по приведенной в подразд. 5.5.4, 5.5.5, 5.5.7, 5.58 схеме, включив вместо указанных выраже- ний в обозначенные части алгоритмов другие формулы для соот- ветствующих модулярных произведений полиномов. Числа в скобках показывают тривиальные умножения на ±1 и ±j. В конце описания каждого из алгоритмов для А=3, 5, 7, 9 приведены данные о числе операций для соответствующих моди- фикаций, в которых минимизировано число нетривиальных умно- жений, а выходные данные промасштабированы постоянным мно- жителем. 5.5.1. 2-ТОЧЕЧНОЕ ДПФ 2 умножения (2), 2 сложения т0=1-(х0+х!), т!=1-(х0—*1), Х0=то, Xi=mi. 5.5.2. 3-ТОЧЕЧНОЕ ДПФ ц=2л|/3, 3 умножения (1), 6 сложений t\ = Х] +х2, то=1-(хо+Л), «1= (cos«—1)-Л, m2=j sinu- (х2—Xi), Si = m0+mi, Х0=т0, Xi = sl + m2, X2=si—m2. Для алгоритма с промасштабированными выходными данны- ми: 3 умножения (2), 8 сложений, масштабирующий множитель 2. 133
5.5.3. 4-ТОЧЕЧНОЕ ДПФ 4 умножения (4), 8 сложений Л=Хо + Х2, t2 = X\ + Х3, то~ 1 • (Л +£2) > tn.\=\-(t\—t2), /Н2= 1 • (х0—Х2), т3=j (х3—X!), Х0=т0, Xi = m2+m3, Х2=гп1, Х3=т2—т3. 5.5.4. 5-ТОЧЕЧНОЕ ДПФ 6 умножений (1), 17 сложений. и = 2л/5 Л=Х]+Х4, t2 = X2~\~ Х3, t3 — X]—Х4, /4 = Хз—Х2, t5 = ti + t2, Шо= 1 (Xq + t3) , Ш1=[ (cos и+cos 2u) /2— 1 ] t3, т2= [ (cos и—cos 2u)/2] —12). Полиномиальное произведение по модулю z2+l m3=—j (sin u) (t3+ti) , m.4=—j (sin u + sin2u)i4, m5=j (sin и—sin2u)/3, s3—m3—m4, s5=m3+m5, Si=m0+mi, S4=Si~m2, Xfj= m.Q, Xi = $2 + 53, X2 = S4 + S5> S2— Si Xs=s4—s5, X4 = S2—S3. Для алгоритма с промасштабированными выходными данны- ми: 6 умножений (2), 21 сложение, масштабирующий множи- тель 4. 5.5.5. 7-ТОЧЕЧНОЕ ДПФ и = 2л/7, 9 умножений (1), 36 сложений t\ = Х] +Хб, /4=Л + ^2 + ^3, tq = X4—Х3, t io = /в +1?, t2 — Х2 + Х5, ^5 = Xl—Хб, t& = Л—13, tll = t7—ts, /3 —Хз + х4, ^=X2—X5, /9= t3—12, tl2=te-tf, m0— 1 ‘ (Xq + ^4) , m!= [(cosu + cos 2u+cos3u)/3—1]<4, 134
i-13 — —ts—tg, m2 = [ (2 cos и—cos 2u—cos 3u) /3] ts, m3=-[ (cos и—2 cos2u+cos 3u)/3p9, m4= [ (cos u+cos 2u—2 cos Зи)/3]Л3, So=—m2—m3, Полиномиальное произведение si = —m2—tn4, по модулю z2+z+1 m5 = —j [ (sin и + sin 2w—sin Зн) /3] Z10, /l4---tn-Л2, /Иб=j [ (2 sin и—sin 2u+sin 3u) /3] Л b m7=j [ (sin и—2 sin 2u—sin 3u) /3] ZI2, m8=j[(sinu+sin2u-(-2sin Зи/З] £14, s2=—m6—m7, Полиномиальное произведение 8з=ш6+т8, по модулю z2—z+1 S4=/7lo + Z7J], S5 = S4 So, S8 = S4 + Si, S7 = S4 + Sq—Si, S3 = m3—S2, Sg = m5—S3, Sio = '7?l5 + S2 + S3, Хд = ГПд, X\= S3 + S3, X2 = S6 + Sg, X3 = S7—Sjo, X4 — Sy + Sio, X3 = Se—Sg, Xg — Sg—s8. Для алгоритма с промасштабированными выходными данными: 9 умножений (2), 43 сложения, масштабирующий множитель 6. 5.5.6. 8-ТОЧЕЧНОЕ ДПФ 8 умножений (6), 26 сложений. п = 2л/8 t2=X2+Xg, t3=x3-\-x7, ^8=,Л + ^5> tl=Xg-j-X4, t2 = X2-j-Xg, t3 — t4=Xi—x$, .ts=x3-[-x7, tg= ^7,= Л + ^2> ^8=,Л + ^5> tno= 1 • (t7 + ts), mi= 1 • (/7—^8) m2= 1 • (Л—12), m3= 1 (x0—x4 m4=cos«-m5=i(t5—t3), тб=](хе—х2), m7=—j sin«- S! = m3+/n4, s2=m3—m4, s4=m6—m7, t3 — Xi +X5, t6=x3—x7, mt=l- (Z7—M> m3=l- (x0—x4), m7=—j sin u- {t4+t6), s2=m3—m4, s3=mt s3=me + m7, Xg — tTlg, X3 = S2—S4, X6=m2—m3, Xi =Sj + s3, JV4 = mi, A7 = Si—S3. X2=m2+m5, X3—s2 + s4, 135
5.5.7. 9-ТОЧЕЧНОЕ ДПФ 11 умножений (1), 44 сложения. и=2л/9 Л=л4+х8, /4 = Х4 -у Xg, /7 = Х7—Х2, Ло=^б + ^т + ^9» Лз = ^7—te, t2 = Х2 + Хт, ^5 = Л +^г + ^4, ts = X3—Xs, t\\ = t\—12, tu=ty—tB, ta = X3 + Xs, ts=Xi—Xg, tg — Xi—Xs, tl2=t2-ti, tnB— 1 • (xo + t3-\-ts) , mj = (3/2) ts, m2==—t5i'2, i\b------Л2-----Л1, m3= (2 cos и—cos 2u—cos 4u)/3] tn, m-i— (cos и -I- cos 2u—2 cos 4u) /3 Л2, m5= [ (cos и—2 cos 2u+cos 4u) /3] ti5, s0 =—m3—m4, Полиномиальное произведение S! = m5—mt, по модулю z2+z+l me=—j sin 3u-/10, m7=—j sin 3u-ts, Лб----Лз + Л4> m8=j sin u-ti3, m9=j sin4u-h4, 77710 = j sin2u-fI6, s2 =—m8—mB, ss=mB—ml0, Полиномиальное произведение по модулю z2—z-J-1 S4 = 777g + Ш2 + 7772, ^5 = ^4---^71, s6 = s4 + 7772, Sy = Ss—Sq, S8 = S1+S3, Sg = So—Si+$5, Sio=7777—S2, Sii = m-j—S3, S]2= 7777 + S2 + S3, Xq = 777o, X1 = S7 + Sio, X2 = i$8 $11, ^З = $б + Т77б, X4 = Sg + Si2, Ag = Sg—S]2, Xs = Ss—nts, Xt = Ss~\~Sii, Xs = Sj—Sis- Для алгоритма с промасштабированными выходными данными: 11 умножений (3), 45 сложений, масштабирующий множитель 2. 5.5.8. 16-ТОЧЕЧНОЕ ДПФ 18 умножений (8), 74 сложения. и='2л/16 Л —Хо + Хв, ^4 = Х2—Хю, Z7 = Xi +Хд, t2==X4-i~Xi2t ts — Xs+Xn, ts = X{—Xg, ^3 = л:2 + л:!0, te — Xs—Xu, ^9 = ^з + -^!Ь
tlO~X3—X|1, 6з = -£7 + А45, Лб = t'6 + Л, Лэ = Л—Ль t%2 = Лв + Лго, Лб = Ло + Л2, Л1 =Х5 + Х]о, t\4 = X7—Х]5, Л7=Ле+Лб, Ло=Л + Лз, Л3 = Л+Л4, Лб=Лг—Ло, t\2 — X3—Х13, Лб = Л + Л, Лв=Л+Ль Л:=Л—Лз, Л4 = Л-Л4, то— 1 • (Л7 + Л2), т2=\- (ti5~Ле), m4= 1 - (х0—хв), m6='cos2u- (Л—t6), nil'— 1 • (Л7—Л2), m3=l- (Л~t2), m5=cos 2u- (Лэ—Л1), m7 = cos Зи- (Л4 + Л6), m8= (cosu+cos3u)^24, Полиномиальное произведение m9=(cos3u—oosu)t2s, по модулю z2+l s7=m&—m7, Ss=ms—m7, mio=j (Ло—Лв), fnn = j(t5—ts), nii^ j(xi2 X4), ntjs= j sin2u- (Лэ+Лц), tt714=—j sin2u- (Л+Л), ТИ]5— j sin Зи- (Лз + Лб), 7Т716=j (sin 3u—sin u) t2Z, mn=—\ (sin u+sin 3u) t25, Si5=mI5+mI6, S16 = "215—m и, Полиномиальное произведение по модулю z2+l Sr= m3+m5, S2=ms~m5, 53 = "71! +"713, s4 = mi3—щ1ь s5=m4+m6, 56 = 7774—7726, S9 = S5 + S7, $12 = $6 $8, S1O = S5—S7, 5ц = 5б + 5в, Si3 = W2I2 + W2]4, 514 — 77212—77214, 517==51з4'515, S18 = S13—S15, S!9 = S14 + S16, $20 = 514 Sie, Xs — nif), -^1 = 59 + 517, ^2’=5l + S3, ^3 = Si2—S20, A4 ~ ttl2 4“ ^10? -^5 = 511 +Si9, Xg =£2 + 54, -^7 = 510—518, X8 = 777!, Xq = Slo + S18, -^10 = 52—54, ^11 =5ц—5ig, XI2=m2—mi0, Xis — Sg S]7. ^13 =S12 + S20, -^!4 = 5i—S3, Глава 6 ПОЛИНОМИАЛЬНЫЕ ПРЕОБРАЗОВАНИЯ Цель настоящей главы — дать описание быстрых алго- ритмов многомерной фильтрации. Такие алгоритмы основаны на применении полиномиальных преобразований, которые можно рас- 137
сматривать как дискретные преобразования Фурье, определенные в кольцах полиномов. Полиномиальные преобразования могут вы- числяться без операций умножения с помощью обычной арифме- тики, кроме того, с их помощью многомерные свертки получают эффективное представление в виде одномерных сверток и произ- ведений полиномов. Сначала введем полиномиальные преобразования для вычис- ления массива размерами рХр> Р простое. Затем определение по- линомиальных преобразований обобщим для других случаев, а также установим, что эти полиномиальные преобразования, опре- деленные в кольцах полиномов, действительно обеспечивают свертку. В заключение обсудим использование полиномиальных преобразований для свертки комплексных последовательностей и многомерных массивов размерности d, d>2. 6.1. ВВЕДЕНИЕ В ПОЛИНОМИАЛЬНЫЕ ПРЕОБРАЗОВАНИЯ Рассмотрим двумерную циклическую свертку массива NXN: N—l N—1 Уи!г1= 2 hn,mXu—n,l—m, U, 1=0, ..., N 1. (6-1) m=0 n=0 Для упрощения этого выражения прибегнем к представлению свертки в алгебре полиномов. Выражение (6.1) можно рассмат- ривать как одномерную свертку полиномов: Уг(г)= £ Hm(z)Xi-m(z) mod (zN— 1), (6.2) m=0 #m(z)= S m = 0, ..., AT—1, (6.3) n—0 Xr{z) = N^ xs,rzs, r=0, ..., 7V-1, (6.4) s=0 где значения yuj получаются из N полиномов W)=sV,!Z“> 1=0, .... tf-l, (6.5) u=0 как коэффициенты при zu в Kz(z). Для простоты определения по- нятия полиномиальных преобразований будем считать в данном ра'зделе, что -N — простое нечетное число, т. е. N=p. Тогда, как было показано в подразд. 2.2.4, zp—1 равно .произведению двух циклотомических полиномов: zp—l=(z—l)P(z), (6.6) P(z) =zp~1+zp~2+ ... +1. (6-7) Поскольку полиномы Yi(z) определены по модулю zp—1, то возможна следующая организация вычислений: приведение по- линомов Hm(z) и Xr(z) по модулю z—~ 1 и P(z), затем вычисле- 138
ние сверток приведенных полиномов У]Дг) = У(z) mod 73 (z) и y2,;(z) ss Yi(z) mod P(z) и восстановление результата Уг(г) по ки- тайской теореме об остатках (см. подразд. 2.2.3): Уг(г) (г) +S2(z)y2J(z) mod (г₽-1), (6.8) Si(z) = l, S2(z) = 0 mod P(z), 1 S|(z)=0, S2(z) = lmod(z—1), J где S,(z) = [p-JP(z)]/p, (6.10) S2(z)=P(z)/p. (6.11) Следовательно, вычисление Yi(z) заменяется более простыми задачами вычисления Yi,i(z) и Y2,i(z). Очевидно, что Y2,i(z) полу- чается достаточно легко, поскольку Yz,i(z) вследствие приведения по модулю z—1 выражает свертку скалярных величин Н2,т и Х2,г, полученных из Hm(z) и Xr(z) в результате подстановки z=l: р—1 У2, i= S тХ2, 1-т, 1 = 0, Р—1, (6-12) т—0 Р—1 Н2,т= 2 hn,m, (6.13) п~0 р—1 X2,r= s xs,r. (6.14) s=0 Обратимся теперь к вычислению Yi,i(z). Для упрощения вы- числений введем преобразование Hk(z), имеющее такую же струк- туру, как и ДПФ, но в котором комплексные экспоненты замене- ны на степени переменной z и все операции выполняются по мо- дулю P(z). Это преобразование, называемое полиномиальным [6.1, 6.2], определяется следующим выражением: р—1 Afe(z) = 2 Xi,r(z)zrk mod P(z), k = 0, ..., p—1, (6.15) r=0 Xi<r(z) =Xr(z) mod P(z). (6.16) Обратное преобразование определяется как 1 р~1 _ Xi r(z) = —у Xk(z)z~rk mod P(z), P k=0 r=0, ..., p—1. (6.17) Покажем, что полиномиальные преобразования действительно обеспечивают циклическую свертку, а выражение (6.17) является обратным по отношению к_(6.15). Для этого по ф0Рм.Уле (6.15) вычислим преобразование Hk(z) и Xk(z) от полиномов Hii7n(z) и Лцг(г), перемножим Hk(z) и Xk(z) по модулю P(z) и вычислим 139
обратное преобразование Qi(z) от произведения Hh(z)Xh(z). Тог- да получим р—1 р—1 j р—1 Qi{z) = 2 2 Hi,m(z\Xi,r(z) — 2 mod P(z), (6.18) m=0 r=0 P 71=0 p—1 где q = m + r—l. Пусть S=Sz«ft. Поскольку zP—1, to показатели fe=0 степеней z определены по модулю p. Для <7=0modp S=p. Для q^O mod p множество величин qk, определенных по модулю р, является простой перестановкой целых 0, 1, р—1. Следователь- р—1 но, Se= S zh=P(z) =0 mod P(z). Это означает, что единственное k=0 ненулевое значение S соответствует <7=0modp или г^1—mmodp, a Qi (z) представляет собой циклическую свертку р—1 т=0 Доказательство того, что m(z) mod P(z), (6.19) полиномиальное преобразование (6.15) и обратное полиномиаль- ное преобразование (6.17) обра- зуют пару взаимно-обратных пре- образований, вытекает непосред- ственно из выражения (6.19), ес- ли в нем положить Hiim(z) = l. Используя рассмотренный ме- тод, Yi,i(z) можно вычислить с помощью трех полиномиальных преобразований и р полиномиаль- ных умножений Hk(z)Xk(z), оп- ределенных по модулю P(z). Во многих практических задачах цифровой фильтрации последова- тельность hn,m фиксирована^ по- этому ее преобразование Hk(z) можно вычислить заранее. Тогда требуется только два полиноми- альных преобразования, а вос- Рис. 6.1. Вычисление двумерной свертки массива рХр с помощью по- линомиальных преобразований (р — простое) становление по китайской теореме об остатках упрощается, если в соответствии с соотношением (2.87) выразить 5,(г) = (г—l)/[(z—1) modP(z)] = (z—1)Т,(.г), (6.20) T](z)=i[—zp~2—2zp-3— ...— (р—3)г2— (р—2)г+1—р]/р. (6.21) Так как Ti(z) определено по модулю P(z), то умножение на Ti(z) можно выполнить до восстановления по китайской теореме
об остатках и включить в предварительное вычисление преобра- зования от фиксированной последовательности. Аналогично умно- жение на 1:/р, требуемое в выражении (6.11) и относящееся к Y2,i, можно объединить с вычислением скалярной свертки Y2,i (6.2), так что восстановление по китайской теореме об остатках сводится к следующим действиям: yz(z)==(z— l)Yl,i(z) + (zP~i + zP~2+ ... + 1)У2, zmod (zp—1). (6.22) Структурная схема вычисления свертки массива рХр приве- дена на рис. 6.1. В этой процедуре приведение по модулю z—1 и восстановление по китайской теореме об остатках выполняют- ся по формулам соответственно (6.14) и (6.22) без операций ум- ножения. Приведение по модулю P(z) также не требует умно- жений, поскольку zp~x=—zp-2—zp—3— ... —ImodP(z), откуда p—2 p—2 Xi,r(z) = 2 (xs,>—Xs, p-l)zs= 5 Xl;S,,Zs. (6.23) s—0 s=0 Вычисление полиномиального преобразования Xh(z) по (6.15) требует только умножений на zrh и сложений. Сложение полино- мов выполняется за счет сложения коэффициентов при одинако- вых степенях z. Так как P(z') является множителем полинома zp—1, то для операции умножения на степени z верно следую- щее: XI,r(z)zrh^[Xl,i(z)zrh mod (zp—l)]modP(z). (6.24) Кроме того, соотношение zp=1 подразумевает, что rk опреде- ляется по модулю р. Следовательно, положив q=rkmc>& р и вы- числяя Xi,r'(z)zrft по формулам (6.23) и (6.24), получим Xi,r(z) = s Xi,s.rzs, Xi, р-1, ^=0, (6.25) s=0 р—Ч—1 Xi r(z)z9 mod (zp—1)= 5 Xi, 8,^+9+ s=0 р—1 р—1 + 2 X1,S, r.Z*+V^ Xi,<s_Q>,r2s, (6.26) s=p—q s=0 P—2 Xi,r(z)z^ mod P(z) = 2 (xi,<s-g>,r—xi,<p_Q_i}. r)zs, x1,p-i,r = 0, s=0 (6.27) где символы < ) определяют s—q и p—q—1 по модулю p. Таким образом, полиномиальные преобразования выпюлняют- :н с помощью операций сложения и простого сдвига коэффици- ентов в полиноме степени р, а единственные умножения, необхо- димые для вычисления двумерной свертки yu.i, соответствуют од- ной p-точечной свертки и р произведениям полиномов Л (z)ZA(z)Xh(z) по модулю P(z). Это означает, что если произве- дения полиномов и свертка вычисляются по алгоритмам с ми- нимальным числом умножений, определенным в теоремах 2.21 и 111
2.22, то свертка массива рХр, р простое, вычисляется с помощью 2р2—р—2 умножений. Можно показать, что это действительно тео- ретически минимальное число умножений, необходимое для полу- чения свертки массива рХр, Р—простое [6.3]. 6.2. ОБЩЕЕ ОПРЕДЕЛЕНИЕ ПОЛИНОМИАЛЬНЫХ ПРЕОБРАЗОВАНИЙ В предыдущем разделе были введены полиномиальные преобразования массива рХр. где р простое. Более общее опре- деление полиномиальных преобразований можно получить, считая, что М-точечная полиномиальная свертка определена по модулю полинома P(z), где P(z) больше не является множителем поли- нома zp—1, р простое. Тогда, как это следует из доказательства свойства цикличности свертки, приведенного в разд. 6.1, N-точеч- ная циклическая свертка может быть вычислена с помощью N-to- чечных полиномиальных преобразований с удовлетворяются следующие условия: корнем G(z), если GN(z) = l modP(z); (6.28) N и G(z) имеют обратные по модую P(z); (6.29) „ Дг1 г _ . ,, . , г, z , [0, <7^0 mod /V, S= 2 [G(z)pft mod P(z)= I (6.30) k=o [W, ^=0modW. При этих условиях полиномиальная свертка вычисляется с помощью полиномиальных преобразований таким образом: .V-1 Yt(z) = 2 Hm(z)Yi_m(z) mod P(z), (6.31) m—0 b -I 2 hn,mzn, (6.32) n=0 6-1 A,(z) = S Xs,rZs, (6.33) s=0 N- 1 Hk(z) = 2 /7m(z) [G(z)]mft mod P(z), m—0 (6.34) где b—степень P(z). YL(z) получается, если выполнить обратное преобразование от Hk(z)Xk(z): . w-i У, (г) == Ц- S Hk (z) Xh (z) [ G (z) ] ~lh mod P (z). (6.35) N s=o Полиномиальные преобразования имеют такую же структуру, как и ДПФ, но экспоненциальные комплексные корни из едини- цы заменены на полиномы G(z) и все операции определены по модулю P(z). Следовательно, эти преобразования обладают теми же общими свойствами, что и ДПФ (см. подразд. 4.1.1), в част- ности, свойством линейности: 142
пп {//n(z)} + {Xn(z)}^ {Hft(z)} + {Xft(z)}, (6.36) пп {M/n(z)} &{kHh(z)}. (6.37) Основное применение полиномиальных преобразований связа- но с вычислением двумерных циклических сверток. В этом слу- чае P(z) должен быть множителем полинома zN—1, a G(z) же- лательно иметь как можно более простым, чтобы избежать вы- полнения операций умножения при вычислении полиномиальных преобразований. Поскольку множители полинома zN—1 являются циклотомическими полиномами (см. подразд. 2.2.4), если коэф- фициенты принадлежат полю рациональных чисел, то различные полиномиальные преобразования, пригодные для вычисления дву- мерных сверток, можно получать, используя свойства циклотоми- ческих полиномов. Покажем, что если числа, выражающие длины измерений двумерной свертки, имеют общий множитель, то всегда есть возможность определить полиномиальные преобразования, которые обладают корнем G(z) с простым представлением и мо- гут быть вычислены без операций умножения. 6.2.1. ПОЛИНОМИАЛЬНЫЕ ПРЕОБРАЗОВАНИЯ с КОРНЯМИ ИЗ ПОЛЯ ПОЛИНОМОВ Циклическая свертка 'массива N^N может быть представлена как У-точечная полиномиальная свертка, в которой все полиномы определены по модулю zN—1 [см. (6.2) — (6.4)]. В поле рацио- нальных чисел полином zN—1 равен произведению d циклото- мических полиномов Pei(z), d— количество делителей числа N, включая 1 и W: d zN— 1= П Pel (z). (6.38) Степень каждого циклотомического полинома Pei(z) равна <p(ef), где <p(et.)—функция Эйлера (см. подразд. 2.1.3). Поскольку по- линомы Ре; (z) неприводимы, то полиномиальную свертку, опре- деленную по модулю zN—1, можно вычислять отдельно по моду- лю каждого полинома Pei(z) с восстановлением конечного резуль- тата по китайской теореме об остатках. Покажем, что всегда су- ществует Af-точечное полиномиальное преобразование с корнем z, обеспечивающее циклическую свертку, если вычисления определе- ны по модулю Ped(z) циклотомического полинома для zK—1 наи- большей степени. Поскольку zN == 1 mod (z-v— 1), a Ped (z) — множитель zN—1, то zN = 1 modPed(z). Следовательно, условие (6.28) удовлетворяется. Условие (6.29) также выполняется, пото- му что в обычной арифметике (ей соответствует поле рацио- нальных чисел) N всегда имеет обратное, a z~1^zN~1 modPed(z). 143
Рассмотрим условие (6.30). Поскольку zN= 1 mod Ре Az), то 5= N—1 s для q=0 mod N. Для g^M)mod/V fc=0 (z4—\)S=zqN~l=0modPerf (z). (6.39) Комплексными корнями полинома zq—1 являются степени экс- поненты ехр(—j2jr/<7), комплексными корнями Ped (z)—степени е?ф(—j2jr/7V). Следовательно, для (q, N) = 1 эти комплексные кор- ни отличны друг от друга, и полином zq—1 относительно прост с Ped(z), который, в соответствии с (6.39), подразумевает, что 5=0. Для (<?, 7V)#=1 без потери общности число q всегда можно рас- сматривать как множитель числа N. Тогда 'cp(jV) >itp(d) и наи- большими множителями полиномов zN—1 и zq—1 являются соот- ветственно полиномы Ped(z) и Q(z) степени q>(/V) и <p(d). Эти полиномы обязательно отличаются друг от друга, поскольку их степени ip(7V) и <p(d) различны. Кроме того, Q(z) не может де- лить Ped(z), так как Ped (z) неприводимы. Следовательно zq— ^0modPed (z) и S=0modP(z), что подтверждает выполнение условия (6.30). Таким образом, свертка уиЛ массива NX'TV вычисляется за счет представления входной последовательности в виде полиномов eV коэффициентами, которые приводятся по модулю Ped (z) и по мо- дулю Р1 (z) = П Ped(z). Выходные отсчеты yu,i получаются в ре- зультате восстановления свертки по китайской теореме об остат- ках из полиномиальных сверток Ytii(z) mod Ped(z) и y2iZ(z) mod P1 (z). Ki,((z) вычисляется с помощью TV-точечных полиномиальных преобразований с корнем z. Y2,i(z) является TV- точечной сверткой полиномов с N—'tp(TV) коэффициентами, опре- деленными по модулю P'(z). Можно использовать два способа для вычисления Y2,i(z). В одном из них Y2,i(z) вычисляется по модулю различных множителей полинома P*(z), для каждого из которых определяется соответствующее полиномиальное пре- образование; в другом Y2ti(z) рассматриваются как двумерное по- линомиальное произведение по модулю /’’(z), zN—1. Для того, чтобы продемонстрировать последний способ, возь- мем двумерную свертку массива рсХрс, Р нечетное простое. В этом случае N = pc, а <р(рс) равно ф(рс)=рс-‘(р—1). (6-40) Тогда Ped(z) = zPc_1<p-1) + zPc-,<P-2> + ... +1, (6-41) zpc— 1 = (zpc~1— 1) Ped (z). (6-42) Следовательно, Уы вычисляется с помощью рс-точечных поли- номиальных преобразований с корнем z, определенных по моду-
лю Ped(z), в то время как Y2,i представляет свертку массива рсХ ХРС-1- Эту свертку можно рассматривать как рс-1-точечную свертку полиномов с рс коэффициентами, которая, в свою очередь, вычисляется как полиномиальная рс-1-точечная свертка, опреде- ленная по модулю Ped(z), и свертка массива рсНХрсЧ. Полино- миальная свертка, определенная по модулю Ped(z), может быть вычислена с помощью рс-1-точечных полиномиальных преобразо- Рис. 6.2. Первый шаг алгоритма вычисления свертки массива р2Хр2, р нечет- ное простое 145
ваний с корнем zp, а для свертки массива рс-1Хрс-1 можно по- вторить описанную процедуру. Следовательно, применяя с раз та- кой алгоритм, использующий 'полиномиальные преобразования, дву- мерную свертку массива рсХрс можно полностью преобразовать в набор одномерных полиномиальных произведений и сверток. На рис. 6.2 приведена структурная схема алгоритма первого эта- па вычисления свертки массива р2Хр2- Второму этапу соответст- вует свертка массива рХр, которая вычисляется по алгоритму, приведенному на рис. 6.1. В качестве второго примера на рис. 6.3 изображена структур- ная схема алгоритма первого этапа вычисления свертки массива 2*Х2* с использованием полиномиальных преобразований. В этом случае вычисления выполняются за t—1 этапов, а полиномиаль- Рис. 6.3. Первый шаг алгоритма вычисления свертки массива 2' ХЙ* с помощью полиномиальных преобразований ,146
ные преобразования определены по модулю Pi+i(z)=z2< *+1, Pt(z) =z2*-2+ 1, P3(z)=z2+1. Эти полиномиальные преобразо- вания представляют особый интерес, поскольку их длины равны степени 2 и они могут вычисляться с уменьшенным числом сло- жений за счет применения алгоритма типа БПФ по основанию 2. 6.2.2. ПОЛИНОМИАЛЬНЫЕ ПРЕОБРАЗОВАНИЯ С СОСТАВНЫМИ КОРНЯМИ До сих пор рассматривались полиномиальные преобразования, имеющие корни G(z), которые определены в поле или кольце по- линомов. Дополнительные возможности в разработке полиноми- альных преобразований появляются, если использовать некоторые свойства полей, которым принадлежат коэффициенты. Так, если полиномиальное преобразование последовательности длиной N\ с корнем G(z), определенное по модулю P(z), обеспечивает цик- лическую свертку, то, используя корни из единицы порядка N2, принадлежащие полю коэффициентов, можно определить N^N2- точечные преобразования, которые также обеспечивают цикли- ческую свертку. Допустим, к примеру, что коэффициенты принадлежат полю комплексных чисел, тогда можно определить ^-точечное ДПФ с корнем № = ехр(—j2n/N2), которое обеспечивает циклическую свертку. При этом, если (Nt, N2) = l, то полиномиальное преобра- зование с корнем WG(z), определенное по модулю P(z), обес- печивает N-точечную циклическую свертку, где N = N\N2. В этом можно убедиться, проверив условия (6.28), (6.30). По- скольку U7N!=1 и G(z)m^1 modP(z), то [U7G(z)]^=,(U7^)^[G(z)A7']^=l modP(z). (6.43) Условие (6:29), очевидно, удовлетворяется, так как Nj и N2, W, G(z) имеют обратные. Чтобы проверить условие (6.30), рас- смотрим выражение для S: S= V Г WG (z) ] чк mod р (?). (6.44)' t=o Поскольку (U7G (z) )N= 1 mod P(z), то показатели степени qk оп- ределены по модулю N. Следовательно, S=N для <7=0mod N. При q^Omod N выражение для S всегда можно преобразовать в двой- ную сумму, так как Ni и N2 взаимно просты. Это выполняется так: mod У ^1 = 0, ..., Ni— 1, &2=0, ..., N2— 1, (6.45) Nt~ 1 TV,—1 Ss S s G(z)4^h, mod P(z). (6.46) fe2=o й,=0 Существование Nr и ^-точечных преобразований с корня- ми G(z) и W подразумевает, что S=0 при ^i^OmodNi и 147
00 Таблица 6.1 Полиномиальные преобразования для вычисления двумерных сверток (р, р1( р2 — нечетные простые) Кольцо преобразова- ния P(z) Преобразование Размеры мас- сива A'Xtf Число сложений для операций при- ведения, полиномиальных преобра- зований и восстановления по китай- ской теореме об остатках Полиномиальные произведения и свертки длина корень (гр_1)/(г—1) p г РУ.Р 2{рг+р2—5р+4) р произведений сверткд р (zp-1)/(z—4) 2p —z 2pXp 4(р3+2р2—6р+4) 2р произведений P(z), свертка 2р (z2?—l)/(z2—1) 2p jgP+1 2pX2p 8(р3+2р2—6р+4) 2р произведений P(z), свертка 2Х2р (zp2—1)/(zp—1) P ZP pXp2 2 (р4+2р3—4р2—р+4) р произведений Р(г), р произведений (zp—l)/(z—1), свертка р (zp21)/(zp—1) P2 z p2Xp2 2(2р5+р4—5р34-р2+6) р(р+1) произведений P(z), р произведений (zp—l)/(z—1), свертка р (Z2P=—1)/(z2p—il) 2p2 —<zp!—1 2p2X2p2 8 (2р5+2р4—|6р3—рг+5р+2) 2р(р+1) произведений Р(г), 2р произведений (z2p—l)/(z2—1), свертка 2Х2р (zpip2—1)/(zp2—4) Pi .ZP2 PtXpipz 2рг (р31 + р21—5pi +4) pi произведений P(z), свертка PiPz z2'~' +1 2‘ z 2fX2‘ 22,-‘(3/+5) 3-2'-1 произведений P(z), свертка 2'_1Х2'-*
fc2^0modW2, а следовательно, й то, что S = 0 при /e^Omod/V; выполнение условия (6.30) доказано. При нечетном A| из условия (AG, N2) = 1 следует, что всегда можно увеличить длину последовательности в ’полиномиальном преобразовании до TViW2 с N2=2f. Полученные описанным мето- дом преобразования для своего вычисления будут, как правило, требовать операции умножения, поскольку корни WG(z) уже не имеют такого простого представления, которое бы исключало ум- ножения.. Однако приведенный метод может быть полезен для вы- числения сверток массивов 27V1X2M и 4WjX4Wi, так как в этих случаях W =—1 или W=—j и полиномиальные преобразования могут еще выполняться без умножений. Заменив ДПФ теоретико-числовыми преобразованиями (см. гл. 8), можно получить модификацию этого метода1), в которой коэффициенты полиномов будут определены по модулю целых чи- сел. В этом случае предоставляется возможность вычислять дву- мерные свертки больших массивов с очень малым числом умно- жений при условии, что достаточно просто можно реализовать операции умножения на степень 2 и арифметику по модулю це- лого числа. В табл. 6.1 обобщены свойства некоторых полиномиальных преобразований, вычисляемых без операций умножения и соот- ветствующих двумерным сверткам, длины измерений которых вы- ражаются числами, имеющими общий множитель. 6.3. ВЫЧИСЛЕНИЕ ПОЛИНОМИАЛЬНЫХ ПРЕОБРАЗОВАНИЙ И ОПЕРАЦИЙ ПРИВЕДЕНИЯ Вычисление двумерной свертки с помощью полиноми- альных преобразований включает выполнение операций приве- дения, восстановлений по китайской теореме об остатках и по- линомиальных преобразований. В этом разделе проведем подсчет числа сложений, необходимых для выполнения указанных опе- раций в случаях, представленных в табл. 6.1. Если N=p, р простое, то входные полиномы, соответствую- щие входным последовательностям, должны приводиться по мо- дулю z—1 и по модулю P(z), Р(z) = z'p 4-zp~2 + ... +1. Каждая из этих операций выполняется за р(р—1) сложений, если для приведения по модулю z—1 просуммировать все коэффициенты входных полиномов, как показано в выражении (6.14), а для приведения по модулю P(z) в каждом входном полиноме вычесть коэффициент при старшей степени из всех коэффициентов в со- ответствии с (6.23). Если одна из входных последовательностей hnm фиксирована, то восстановление, соответствующее китайской *) Эта модификация при условии, что свертки вычисляются с помошью ал- горитмов с минимальным числом умножений, представляет собой полиномиаль- но-числовое преобразование (ПЧП).—'Прим. ред. 149
теореме об остатках, осуществляется по формуле (6.22). Посколь- ку Vi,i(z) —полином с р—1 коэффициентами, то р—2 = 2 Ух,и,1ги. (6.47) И=1 Тогда выражение (6.22) перепишем так: р-2 Yi(z) — У2, i У\, о, t+ 2 (У1. и-i, i—У\, и, i + Т2, z) zu + и=1 + (Vi,P-2.z+y2,z)zP-‘, Z=0, ..., p— 1, (6.48) откуда видно, что восстановление по китайской теореме об остат- ках требует 2р(р—1) сложений. Для /V = p2, р — простое, или N=2t операции приведения и вос- становления выполняются аналогично, а соответствующие дан- ные о числе сложений приведены в третьей колонке табл. 6.2. Таблица 6.2 Число сложений, требуемых для выполнения операций приведения, восстановления по китайской теореме об остатках и полиномиальных преобразований (р — нечетное простое) Длина последо- вательно- сти N Кольцо. Число сложений для операций приведения и восстановления Число сложений для полиномиаль- ных преобразований р (ZP— 1) 4р(р—1) р3—р2—'Зр-1-4 2р (zp-l)/fz—1) 8р(р— 1) 2(р3—4р+4) 2р (г2р_ 1)/(г2„ J) 16р(р-1) 4(р3—4р+4) Р (ггР— 1)/(zp— I) 4р2(р—1) р(р3—рг—Зр+4) Р2 (ZP'~ 1)/(zp—I)- 4ps(p—1) 2 р5—2р4—5р3 + 5р2+р+2 2р (z^p-— l)/(Z2P— I) 16р2(р- 1) 4р(р3—4р+4) 2рг (z2?2—l)/(z2J>—1) .16р3('р— 1) 4 (2р5—р4— 6р3 + 5р2+р+2) 2‘ z2/-1+l 221 + 1 Л22'-1 При N = p, р — простое, полиномиальное преобразование Xh(z) (6.15) вычисляется по формулам _ р—1 Д(г)=Х|,0(2|4- S Xi,r(z)zrh mod P(z), /г=0, ..., р—2, (6.49) Г=1 _ р—1 Xp.JzJsEXj ofz)-!- S Xlir(z)^<P-»modP(z), (6.50) r=l где р полиномов Хц,.(z) содержат р—1 коэффициентов. Для вы- числения Xk(z) сначала получают р—1 Rh(z) = 2 Xi,r(z)zrk mod P(z). (6.51) r=l p—1 Поскольку Z?o(z) = S Xi,r(z), то Ro(z) требует (p—2) (p—1) r— 1 сложений. При k=£0 Rk(z) равно сумме p—1 полиномов, каж- 150
дый из которых умножен но модулю P(z) на соответствующую степень z. Сначала Rh(z) вычисляется по модулю zp—1. Так как zp=\, то после умножения на zrh каждый полином Xi,r(z) имеет р коэффициентов, один из которых равен нулю. Следовательно, вычисление каждого полинома Rk(z) по модулю zp—1 требует р'-—Зр+1 сложений. Поскольку приведение Rk(z) по модулю P(z) осуществляется за счет р—1 сложений, то каждый полином Rb(z) при k=jXG и k=jhp—1 вычисляется с помощью р2—2р сло- жений. Чтобы вычислить выражение (6.50), заметим, что при гУ=0 Р—2 У, zrh=—z7(P"1) mod P(z). (6.52) h=0 Это подразумевает, что для г=^=0 р—2 р—1 Rp-i(z) = — X 2 Xlir(z)zrh modP(z) = (6.53) А=0 г—1 р—2 =— 2 Rk(z) mod P(z), (6.54) k=0 откуда видно, что Rp-i (z) вычисляется за (p—1)X(P—2) сложе- ний. Окончательно Xh(z) получается прибавлением Xi>0(z) к по- линомам Rh(z) с помощью р(р—1) сложений. Таким образом, суммарное число сложений, требуемых для вычисления p-точеч- ного полиномиального преобразования, р простое, равно р3—р2— -Зр+4. Полиномиальные /V-точечные преобразования, /V — составное число, вычисляются с помощью алгоритма типа БПФ. При /V = — 2(//У-точечное полиномиальное преобразование Xh(z) определя- ется по модулю Pt+i (z): ,v—1 Xk(z)= 2 Xi,r(z)zrh mod Pt+i(z), k = 0, ..., AZ—1, (6.55) r=0 Pt+i(z)=z2t~1 +1. (6.56) Первый этап алгоритма типа БПФ по основанию 2 с проре- живанием по времени выражается соотношениями N/2-l N/2~ 1 Xh(z)^= 2 Xi,2r{z)z2rh+zh 2 *1. 2Г+1 (Z)z^h mod Pt+i(z), r=0 r—0 fe=0, ..., /V/2—1, (6-57) N/2—1 N/2— 1 Xh+Nl2(z) = 2 ^i.2r(z)z^-zfe 2 X1,2,.+1(z)z^modPt+1(z). r=0 r=0 (6.58) Следовательно, 2*-точечное полиномиальное преобразование, определенное по модулю а2* '+1, вычисляется за t этапов с сум- марным числом сложений (Ж/2) Iog2/V. 151
Данные о числе сложений для различных полиномиальных пре- образований приведены в четвертой колонке табл. 6.2. В табл. 6.1 (колонка 5) дается суммарное число сложений для операций при- ведения, полиномиальных преобразований и восстановлений по китайской теореме об остатках, соответствующих различным ал- горитмам двумерных сверток, использующих полиномиальные преобразования 6.4. ДВУМЕРНАЯ ФИЛЬТРАЦИЯ С ИСПОЛЬЗОВАНИЕМ ПОЛИНОМИАЛЬНЫХ ПРЕОБРАЗОВАНИИ Как видно из предыдущих разделов, ‘полиномиальные преобра- зования позволяют эффективно с вычислительной точки зрения представить двумерные циклические свертки в виде совокупности одномерных полиномиальных произведений и сверток. Если со- ответствующим образом выбрать полиномиальные преобразования, то такое представление можно выполнить без операций умно- жения с некоторым числом сло- жений. Следовательно, если дву- мерная свертка выполняется с помощью полиномиальных пре- образований, то объем вычисле- ний существенно зависит от эф- фективности алгоритмов, приме- няемых для вычисления произве- дений полиномов и одномерных сверток. Рис. 6.4. Вычисление двумерной свертки массива рХр с помощью полиномиаль- ных преобразований, р — простое. Про- изведения полиномов по модулю (z₽— —l)/(z—1) заменено р-точечными сверт- ками Один из методов вычисления одномерных сверток заключает- ся в использовании одномерных преобразований, обеспечивающих циклическую свертку, таких, как ДПФ и ТЧП. Эти преобразова- ния пригодны также для вычисления произведений полиномов по модулю циклотомических полиномов Pei(z). Заметим, что по- скольку полином Pei (z), определенный выражением (6.38), явля- ется множителем полинома zN—1, то все вычисления можно вы- полнять по модулю zN—1, приведя окончательный результат по модулю РС/. (z). Тогда вычисление произведения полиномов по модулю Pei (z) заменяется вычислением произведения полиномов по модулю zN—1, т. е. TV-точечной свертки. Следовательно, с по- 152
мощью метода, основанного на применении полиномиальных пре- образований, двумерная свертка полностью переводится в мно- жество одномерных сверток, которые можно вычислять посред- ством ДПФ и ТЧП. Этот'метод для случая свертки массива рХр> Р— простое, ил- люстрируется структурной схемой на рис. 6.4. Двумерная сверт- ка сводится к совокупности р + 1 p-точечных сверток вместо од- ной p-точечной свертки и р произведений полиномов по модулю (2₽-1)/(2-1), как в методе, показанном на рис. 6.1. 6.4.1. ДВУМЕРНЫЕ СВЕРТКИ, ВЫЧИСЛЯЕМЫЕ С ПОМОЩЬЮ АЛГОРИТМОВ ПОЛИНОМИАЛЬНЫХ ПРЕОБРАЗОВАНИИ И ПОЛИНОМИАЛЬНЫХ ПРОИЗВЕДЕНИИ Если двумерные свертки преобразуются в совокупность одно- мерных, которые вычисляются посредством ДПФ и ТЧП, то свя- занные с использованием этих преобразований проблемы, такие, как ошибки округления для ДПФ или модулярная арифметика для ТЧП, распространяются на весь вычислительный процесс. Од- нако из результатов гл. 3 видно, что методы, основанные на ин- терполяции и китайской теореме об остатках, дают более эффек- тивные алгоритмы для вычисления некоторых сверток и полино- миальных произведений, чем ДПФ и ТЧП. Следовательно, вы- годно рассматривать применение таких алгоритмов совместно с полиномиальными преобразованиями Д Тогда каждый алгоритм свертки или полиномиального произ- ведения, применяемый в данной задаче, должен программиро- ваться специфичным образом, причем желательно использовать ограниченное число различных алгоритмов, для того чтобы огра- ничить общий размер программы. Этого можно достичь, вычис- ляя одномерные свертки как произведения полиномов на основе китайской теоремы об остатках. Так, двумерная свертка массива рХр, р простое, посредством полиномиальных преобразований переводится в одну /V-точечную свертку и р полиномиальных про- изведений по модулю P(z), где P(z) = (zp—V)/(z—1). Однако те же самые вычисления можно выполнить с помощью одного лишь алгоритма полиномиального произведения по модулю P(z), если на основе китайской теоремы об остатках p-точечную цикличе- скую свертку вычислять как одно умножение й одно произведе- ние полиномов по модулю P(z). Таким образом, свертку массива рХр можно вычислить, как показано на рис. 6.5, с помощью р+1 полиномиальных произведений по модулю P(z) и одного умножения вместо р .произведений полиномов по модулю P(z) и одной р-точечной свертки. В табл. 6.3 приведены данные по числу арифметических опера- ций для различных двумерных сверток, вычисляемых с помощью полиномиальных преобразований, алгоритмов сверток и произве- дений полиномов из разд. 3.7, для которых сведения о числе опе- *> Т. е. формируется полиномиально-числовое преобразование. Прим. ред. 153
Уи,1 Рис. 6.5. Вычисление свертки массива рХр с помощью полиномиальных преобра- зований, р — простое, p-точечная свертка заменена на одну операцию умножения и произведение полиномов по модулю P(z) раций даны в табл. 3.1 и 3.2. При этом полагается, что одна из входных последовательностей, hn,m, фиксирована и действия, свя- занные с этой последовательностью, выполняются заранее только один раз. 6.4.2. ПРИМЕР ДВУМЕРНОЙ СВЕРТКИ, ВЫЧИСЛЯЕМОЙ С ПОМОЩЬЮ ПОЛИНОМИАЛЬНЫХ ПРЕОБРАЗОВАНИИ Для того чтобы проиллюстрировать вычисление двумерной свертки с помощью полиномиальных преобразований, рассмотрим свертку массива 3X3. В этом случае имеем р — 3, P(z) =z2 + z + + 1, z3=l. 'Определим входные последовательности 154
Таблица 6.3 Число операций для двумерных сверток, вычисляемых с помощью полиномиальных преобразований и алгоритмов умножения полиномов Размеры массива NXN Число умно- жений м Число сложе- ний А Число умноже- ний на отсчет M/N Число сложений на отсчет A/N 3x3(9) 13 70 1,44 7,78 4X4(16) 22 122 1,37 .7,62 5x5(25) 55 369 2,20 14,76 6x6(36) 52 424 1,44 11,78 7x7(49) 121 1163 2,47 23,73 8X8(64) 130 750 2,03 11,72 9X9(81) 193 1382 2,38 17,06 10X10(100) 220 1876 2,20 18,76 14X14(196) 484 5436 2,47 27,73 16X16(256) 634 4774 2,48 18,65 18x18(324) 772 6576 2,38 20,30 24x24(576) 1402 12954 2,43 22,49 27x27(729) 2893 21266 3,97 29,17 32 x 32(1024) 3658 24854 3,57 24,27 64 x64(4096) 17770 142902 4,34 34,89 128X128(16384) 78250 720502 4,78 43,98 hn,0={2, 3, 1}, ft„,i = {4, 2, 0}, xso= {2, 1, 2}, xfiI = {l, 3, 0}, ftn,2={3, 1, 4}, xS2={2, 1, 5}. После приведения по модулю P(z) получим Я1>и(2): {1, 2}, {4, 2}, X1>T(z): {0, -1}, {1. 3}, {-1. -з}, {-3, -4}. Полиномиальные преобразования от HliTl(z) fh(z)-. {4, 1}, {-3, 5}, Xh(z): {—2, —2}, {-4, 0}, {2, 0}. {6, -1}- и Xi,T(z) таковы: формулой (6.21) имеем В соответствии с Следовательно, полиномиальные произведения — (z+2)Hh(z)Xh(z)/9 mod P(z): {4, 14}/9, {—44, 8}/9, {—26, —10}/9. Л (z)=-(z-|-2)/3. запишутся Вычисление обратного полиномиального преобразования дает rliZ(z): {-66, 12}/9, {66, 42}/9, {12, —12}/9. 155
В результате приведения входных данных по модулю z—1 по- лучим Н2,т: {6, 6, 8}, Х2,г: {5, 4, 8}, откуда 3-точечная свертка Y2jI равна У2,г/3: {НО, 118, 112J/3. Используя выражение (6.22), из У1>г и У2,г восстановим по ки- тайской теореме об остатках отсчеты двумерной свертки уи,Г- у и, г- {44, 28, 38, 32, 42, 44, 36?40, 36}. 6.4.3. ГНЕЗДОВЫЕ АЛГОРИТМЫ Применение методов, описанных в предыдущих разделах, поз- воляет, используя составные полиномиальные преобразования, вы- числять двумерные свертки больших размеров. В частности, осо- бенно целесообразно применять /V-точечные полиномиальные пре- образования, N=2t, так как эти преобразования можно вычис- лять с уменьшенным числом сложений, используя алгоритм типа БПФ по основанию 2 Можно также разработать гнездовой алгоритм, посредством которого двумерные свертки большого размера будут вычислять- ся с помощью ограниченного набора двумерных сверток малых размеров (см. подразд. 3.3.1) [6.4]. Применяя такой метод, дву- мерную свертку yu,i массива NiN2%NiN2, Ni и /V2 взаимно-про- стые, за счет несложной перестановки индексов можно преобразо- вать в четырехмерную свертку массива (A^X^i) X (МгХА^г). Пусть Л\ДГ2—1 NgNg-1 Уи’1= 2 S hn, тХц-п, 1—т* (6.59) т—О п—О Поскольку Ni и N2 взаимно-простые, то индексам I, т, п и и мож- но поставить в соответствие два множества индексов mi, щ, щ и 12, т2, п2, и2, которые получаются с помощью перестановок (см. подразд. 2.1.2). Тогда 1=1^1^+mod NiN2, mod NiNz, n=Niti2 + N2ni mod NXN2, u^NiU2+N2Ui mod Zi, mb ni,Ui = 0.Nt—1, /2, m2, n2, .... /V2—1, (6.60) Nt—1 Л\—1 Ng—1 Ng—1 yNgUg+NgUg.Nglg+Nglg = 2 2 Z 2 hNgng+Ngtig.Ngmg+Nging X m1=0 nt=0 m2=0 n2=0 X XNi(Ug-ng)+Ng(ut-nly.N1(lg-mg)+Ng{l1-m1). (6.61) Полученную четырехмерную свертку можно рассматривать как 156
двумерную массив.а Л^ХМ, в которой вместо скалярных величин используются двумерные полиномы массива /V2X/V2: N2-l N2—l (zi, z2) = j У] hNltl n2=0 m2=0 X nb m, = 0, /Vj—1, (6.62) n2—1 n2—1 Xr2.s, (Z], Z2) = У 2 ^N1r2-\-N2ritNl s2-\-N2 s2 X r2=0 s2=0 X Zi’W2, Г1, S1=O, Ni—1, (6.63) причем yu,i определяется из следующих соотношений: N2— I n2— 1 Yu,,I, (Zb z2) = 2 J] yN1u2+N2ul,N1l2+N2l1 Zi^Z^,. (6.64) u2=0 l2—0 A'i—1 Nt—1 Yulrii ^2)= 2 2 ^2) »iJi—(^i, ^2) 0 «4—0 mod (z,N2—1), (z2N'—1) . (6.65) Каждое полиномиальное умножение по модулю ZiA’2—1, z2N2—1 соответствует свертке массива Л'гХ^г, которая вычисляется, до- пустим, с Л42 скалярными умножениями и А2 скалярными сложе- ниями. В свертке массива /ViX/Vi, как уже отмечалось, все ска- лярные величины заменены полиномами массива /V2X'/V2. Следо- вательно, если Mi и At — число умножений и сложений для полу- чения скалярной свертки массива NiXNi, то число умножений М и сложений А, требуемых для вычисления двумерной свертки мас- сива NiNz^NiNz, равно M = MiM2, (6.66) А = №2А1 + М1А2. (6.67) Этот вычислительный процесс может продолжаться рекурсивно для случая, если число сомножителей более двух, при условии, что все сомножители взаимно-просты. Поскольку свертки малых мас- сивов ЛГ,ХМ и Л^2Х^2 вычисляются с помощью полиномиаль- ных преобразований, то фактически двумерные свертки больших массивов можно получить, используя небольшой набор алгорит- мов этих полиномиальных .преобразований. Например, свертку массива 15X15 можно вычислить посредством сверток массивов 3x3 и 5x5. Так как для вычисления этих сверток требуется со- ответственно 13 умножений, 70 сложений и 55 умножений, 369 сложений (см. табл. 6.3), то вложение этих двух алгоритмов для свертки массива 15X15 дает в сумме 715 умножений и 6547 сло- жений. В табл. 6.4 указано число операций, необходимое для вычис- ления двумерных сверток с помощью полиномиальных преобра- зований и вложения. Как видно, эти алгоритмы требуют меньше умножений, но больше сложений в пересчете на отсчет по срав- 157
Таблица 6. Число операций для двумерных сверток, вычисляемых с помощью полиномиальных преобразований и гнездовых алгоритмов Размеры массива Число умно- жений М Число сложе- ний А Число умноже- ний на отсчет M/N Число сложений (на отсчет A/N 12x12(144) 286 2638 1,99 18,32 20 x 20(400) 946 14030 2,36 35,07 30x 30(900) 2236 35404 2,48 39,34 36x36(1296) 4246 40286 3,28 31,08 40 x40(1600) 4558 80802 2,85 50,50 60x60(3600) 12298 192490 3,42 53,47 72x72(5184) 20458 232514 3,95 44,85 80X80(6400) 27262 345826 4,26 54,03 120x120(14400) 59254 1046278 4,11 72,66 нению с методом, который использует составные полиномиальные преобразования и которому соответствует табл. 6.3. Число сложе- ний можно сократить, если обычное вложение заменить послой- ным вложением (см. подразд. 3.2). Тогда число арифметических операций станет равным приведенному в табл. 6.5. Можно видеть, что число сложений на отсчет становится сравнимым с числом сложений, требуемых для алгоритмов с составными полиномиаль- ными преобразованиями. Таблица 6.5 Число операций для двумерных сверток, вычисляемых с помощью полиномиальных преобразований и послойно-гнездовых алгоритмов Размеры массива NXN Число умно- жений Л1 Число сложе- ний А Число умноже- ний на отсчет MJN Число сложений на отсчет A/N 12x12(144) 286 2290 1,99 15,90 20 X20(400) 946 10826 2,36 27,60 30 x30(900) 2236 28348 2,48 31,50 36x36(1296) 4246 34010 3,28 26,24 40X40(1600) 4558 69534 2,85 43,46 60 x 60(3600) 12298 129106 3,42 35,86 72 x 72(5184) 20458 192470 3,95 37,13 80 x 80(6400) 26254 308494 4,10 48,20 120x120(14400) 59254 686398 4,11 47,67 6.4.4. СРАВНЕНИЕ С ОБЫЧНЫМИ АЛГОРИТМАМИ СВЕРТКИ Полиномиальные преобразования -представляются наиболее подходящими для вычисления вещественных сверток, поскольку они требуют обычную вещественную арифметику, а не комплекс- ную, необходимой в алгоритмах ДПФ. Кроме того, если произве- дения полиномов вычисляются по соответствующим алгоритмам, то в методе, основанном на использовании полиномиальных пре- 158
образований, не требуются тригонометрические функции. Следо- вательно, методы вычисления двумерных сверток с помощью по- линомиальных преобразований можно сравнивать с методами вло- жения [6.4], описанными в подразд. 3.3.1, которые обладают по- хожими свойствами. Сравнивая данные табл. 3.4 с табл. 6.3 и 6.5, можно увидеть, что метод с полиномиальными преобразова- ниями всегда требует меньшего числа арифметических операций, чем метод вложения, и обеспечивает повышенную вычислитель- ную эффективность с ростом размера свертки. Для сверток мас- сива более 100X100 применение полиномиальных преобразова- ний значительно уменьшает число арифметических операций. Так, для свертки массива 120X120 метод с полиномиальными преоб- разованиями требует примерно в 5 раз меньше умножений и в 2,5 раза меньше сложений, чем простой метод вложения. Если свертка вычисляется по методу БПФ, то требуется ис- пользование тригонометрических функций и комплексной ариф- метики. Следовательно, сравнение этого метода с методами поли- номиальных преобразований отчасти затруднительно, особенно когда рассматриваются вопросы, связанные с ошибками округле- ния и относительными затратами на выполнение вспомогательных операций. Приблизительное сравнение этих методов можно сде- лать, если допустить, что посредством БПФ-алгоритма Рейдера — Бреннера (см. разд. 4.6) и построчно-столбцового метода вычис- ляются одновременно две вещественные свертки. Данные о числе арифметических операций, соответствующих в этом случае сверт- кам, для которых одна последовательность фиксирована, а триго- нометрические функции вычислены заранее, приведены в табл. 4.7. В этих условиях для метода БПФ число сложений ненамного больше, а число умножений вдвое больше, чем для метода поли- номиальных преобразований. Обычные БПФ-алгоритмы по осно- ванию 4 или алгоритмы Винограда для преобразования Фурье также требуют значительно большего числа арифметических опе- раций, чем метод полиномиальных преобразований. 6.5. ПОЛИНОМИАЛЬНЫЕ ПРЕОБРАЗОВАНИЯ, ОПРЕДЕЛЕННЫЕ В МОДИФИЦИРОВАННЫХ КОЛЬЦАХ Из всех возможных полиномиальных преобразований наибольший интерес представляют преобразования, определенные по модулю zN + l, N=2t, поскольку они выполняются без умно- жений и с уменьшенным числом сложений за счет применения ал- горитма типа БПФ по основанию 2. Как видно из подразд. 6.2.1, двумерные свертки больших массивов вычисляются с помощью этих преобразований, при этом используется ряд этапов, на каж- дом из которых выполняются четыре полиномиальных преобразо- вания. Такой подход очень эффективен с точки зрения числа ариф- метических операций, но ему присущ недостаток, связанный с не- обходимостью выполнения ряда операций приведения и восста- новлений по китайской теореме .об остатках. Далее будет пред- 159
ставлен метод [6.5], по которому удается упростить первоначаль- ную структуру алгоритма, хотя и за счет некоторого увеличения числа операций. Прежде чем описать этот метод, покажем, что одномерную /V- точечную свертку yt, можно рассматривать как полиноми- альное произведение по модулю zN+l при условии, что входная и выходная ’последовательности умножаются на степень W, где W7 — корень из единицы порядка 2/V. Рассмотрим циклическую свертку уг. N-1 У1= 2 hnXi-n, 1=0...... tV—1, (6.68) п—0 где I—п определено по модулю N. Входные последовательности умножим на Wn и Wm, W=exp (—jjr/TV), и образуем два поли- нома: Н(г) = ^ hnW^, (6.69) и—-О ад=2* xmWmzm. (6.70) т=0 Определим полином A (z) с /V коэффициентами: A (z) = H(z)X(z) mod (дЛ’+ 1), (6.71) TV—1 Д(г)'=2 огзг, (6.72) 1=0 где каждый коэффициент су соответствует произведениям hnxm, таким, что п+т = 1 или п+т=1+М. Поскольку zne=—1, то . 1 N~1 \ аг=(2 h-nXi-n— j] hnxN+i-n j Wl, (6.73) \n—0 n—Z-4-1 / где I—n берется по модулю /V. Таким образом, yi=aiW~l, (6.74) откуда следует, что yi получается в результате умножения поли- нома A(z) на W~l, U7N= — 1. Этот метод .носит общий характер и преобразует свертку в полиномиальное произведение по модулю 2Л’+1, называемое иногда косоциклической сверткой, при условии, что входная и выходная последовательности умножаются на сте- пени произвольного корня из единицы порядка 2/V. Такими кор- нями не обязательно являются ехр (—]n/N), ими могут быть, на- пример, корни из единицы, определенные в кольце чисел по це- лому модулю. Применим данный метод к вычислению двумерных сверток. Начнем с циклической свертки yu,i массива NxN, N=2*: TV—1 TV—1 Уи,1~ Zj S hn, mXu—n, l—m> 1Ц l = 0, N 1. (6.75) m=0 n=0 В терминах полиномов для нее верны выражения
N—1 Ai(z) = 2 mod (г^-Ы), т—0 (6.76) /V—1 М) = 2 Г = ехр(—jn/TV), п—0 (6.77) /V—1 Xr(z) = 2xs>rl^szs, m, r=0, Л/ —1, s=0 (6.78) W—1 A(z)‘= 2 /=0, N— I, u=0 (6.79) Уи, I ~ G'U, U‘ (6.80) Наиболее важная часть этих вычислений состоит в получе- нии полиномиальной свертки Ai(z), определенной по модулю zN + 1 согласно формуле (6.76). Однако всегда можно вве- сти ЛЛ-точечное полиномиальное преобразование по модулю 2Л' + 1. Следовательно, двумерную свертку yUti можно вычислять, используя лишь три ^точечные полиномиальных преобразования с корнями z2, как показано на рис. 6.6. Если одна из входных последовательно- стеи, фиксирована, то соответствующее полиноми- альное преобразование вы- числяется только один раз и получение yu,i сводится к вычислению двух ЛЛточеч- ных полиномиальных преоб- разований, N полиномиаль- ных произведений по моду- лю гЛ'Ч-1 и 2W скалярных умножений на Ws и W~u. Итак, общая структура алгоритма становится до- статочно простой, а все опе- рации, связанные с приведе- ниями и восстановлениями по китайской теореме об ос- татках, исключаются за счет умножений на и W~u и использования полиноми- альных умножений по моду- лю zN. +1 вместо умножений Рис. 6.6. Вычисление свертки мас- сива NXN, N=2*, с помощью по- линомиальных преобразований, определенных в модифицирован- ных кольцах 6 Зак. 522 Уч,с 161
Уи,1 Рис. 6.7. Вычисление свертки массива NXN, N=2*, с помощью комбинации двух мето- дов, использующих полиномиальные преоб- разования по модулю zN/2 + 1, zw/4 + + 1 и т. д. В данном слу- чае, как и в методе, кото- рому соответствует рис. 6.3, полиномиальные пре образования вычисляют- ся с уменьшенным чис- лом сложений по алгорит- му типа БПФ по основа- нию 2. Подход, основанный на применении модифици- рованных колец полино- мов, можно усовершенст- вовать, объединив его с методом, описанным в Подразд. 6.2.1. Тогда свертка yu,i вычисляется как Af-точечная полино- миальная свертка по мо- дулю zw/24-l и /V-точеч- ная полиномиальная свертка по модулю zN/2— — 1, причем последняя из упомянутых сверток пре- образуется в полиноми- альную свертку по моду- лю zN/2 +1 с помощью ум- ножений на № и W~u, 1^=ехр(—j2jt/W). В этом случае алгоритм исполь- зует (см. рис. 6.7) четыре Af-точечных полиномиаль- ных преобразования по модулю zN/2 +1 и только W умножений на Ws и W~u вместо 2N умноже- ний, как в предыдущем методе. Кроме того, этот алгоритм заменяет вы- полнение N полиномиаль- ных умножений по моду- лю zN 4-1 на выполнение 2W полиномиальных умножений по модулю zw/2 + l, что, очевидно, проще. Дальнейшее сокращение числа операций можно получить, при- менив дополнительные этапы с приведениями по модулю zw/4-i-l, zJV/8-|-l и т. д., пока не получим декомпозицию алгоритма, кото- рой соответствует рис. 6.3. Следовательно, перевод полиномиаль-
ных произведений по модулю zN—1 в полиномиальные произве- дения по модулю zw4-l с помощью корней из единицы, опреде- ленных в поле, которому принадлежат коэффициенты, обеспечи- вает значительную гибкость в уменьшении структурной сложно- сти алгоритма, правда, за счет дополнительной вычислительной сложности. 6.6. КОМПЛЕКСНЫЕ СВЕРТКИ Метод полиномиальных преобразований для комплекс- ных сверток можно реализовать, выполняя в нем комплексное ум- ножение с помощью двух вещественных умножений, воспользовав шись тем фактом, что величина j= К—1 является вещественной в некоторых полях. В частности, для колец полиномов, опреде- ленных по модулю zw + l, N—четное, имеем zN^=—1 и j = = 1^—1 =zN/2.Следовательно, можно применить метод, описанный в подразд. 3.3.3, чтобы заменить комплексную двумерную сверт- ку двумя вещественными двумерными свертками. Тогда комп- лексная двумерная свертка вычисляется посредством полиноми- альных преобразований с примерно удвоенным объемом вычисле- ний, соответствующим вещественной свертке, а относительная эф- фективность метода полиномиальных преобразований по сравне- нию БПФ-методом остается примерно той же, что и для случая вещественных сверток. 6.7. МНОГОМЕРНЫЕ ПОЛИНОМИАЛЬНЫЕ ПРЕОБРАЗОВАНИЯ Многомерные полиномиальные преобразования можно определить по аналогии с одномерными. Чтобы обеспечить, напри- мер, вычисление трехмерной свертки yu,it.i2 массива рХрХр.Р— простое, переопределим выражения (6.2) — (6.5) следующим об- разом: Hmi,m2(z) = P^ hn.mt.mizn, тх, m2 = 0, ..., р—1, (6.81) п—0 р—1 Хг,,гг(г)= £ xs, rt,r2zs, n, r2 — 0, ..., p— 1, (6.82) s—О p l p— 1 l//1.h(z)= X £ Hmi,m2(z)Xi^mi,i2^2 (z) mod (ZP— 1), mt—C m2—0 Z1, Z2 = 0, ..., p— 1, - (6-83) p— 1 1'/,J,(z) = 2 yu.it.i2za, (6-84) p—1 p—1 p—1 Уи, li, li = /j kn. —n, li—Mi, 12—т2з. 0, p 1 • ,„_0„,_0„=0 (6.85) 6* 163
Двумерное полиномиальное преобразование определяется по модулю P(z), P(z) = (zp—l)/(z—1), выражением _ р-i р-i S S ^i,mi,m,(z)zm-ft*+'n*'!« modP(z), т2=0 т2~0 kit k2 = 0..р—1, (6.86) где , mlt m2 (z) = mz (z) mod P (z) , (6.87) и, аналогично, для обратного 'преобразования. Двумерное полино- миальное преобразование (6.86) обеспечивает циклическую сверт- ку, поскольку z — корень порядка N в поле полиномов по модулю P(z). Следовательно, это преобразование можно применять для вычисления полиномиальной свертки У1,г1,/2 («г): ^1, z,, 1г (z) = Yi,. iAz) mod P(z). (6.88) Yiit i2(z) можно восстановить по китайской теореме об остатках из i2(z) и Хг, г,, z2 = XZi, z2(z) mod (z—1), (6.89) где р—1 р~ 1 ^2, 1г, /2 = У 2 ^2» ,ni» т2 ^2, —тг, 12—m2t (6.90) mt=G /и 2=0 Р— 1 , mt, m2 = 2 • mi> m2r (6.91) п=0 р—1 ^2, г,, r2 = J -**. '’И гг' (6.92) s=0 Тогда yZi. 1г (z) = Kj, (1, (2 (z) (z) + V2, Z1, z2 (z) S2(z) mod (z₽-1), (6.93) (z) = 1, (z) = 0 mod P (z), | (6.94) S1(z) = 0, S2(z)=l mod(z—1). J Таким образом, с помощью полиномиальных преобразований свертка массива рХрХр переводится в р2 полиномиальных про- изведений то модулю P(z) и одну свертку массива рХР- Струк- турная схема этого вычислительного процесса приведена на рис. 6.8. Следует отметить, что свертку массива рХр можно, в свою очередь, вычислять с помощью p-точечных полиномиальных преобразований (см. рис. 6.1). Двумерные полиномиальные преобразования могут быть вы- числены построчно-столбцовым методом как 2р р-точеч.ных полиномиальных преобразований за 2р(р3—р2—Зр+4) сло- жений. В этих условиях свертка массива рХрХр выполняется за 164
4р4 + 2р3—14р2 + 6р + 8 сложе- ний, р(р-Ы) полиномиальных произведений по модулю (zp— —l)/(z—1) и одной р-точечной свертки. Воспользовавшись тем же методом, для свертки массива рХрХрХр получим 6р5 + 2р4—20р3 + 10р2 + 6р + 8 сложений, р3 + р2 + р полино- миальных умножений по моду- лю (Z'p-l)/(z—1) и одну р-то- чечную свертку. В табл. 6.6 приведено число операций для некоторых мно- гомерных сверток, вычисляе- мых с помощью полиномиаль- ных преобразований, которые будут использованы для вычи- сления ДПФ по методу, опи- санному в разд. 7.2. Аналогичный подход мож- но применить для получения многомерных полиномиальных преобразований, соответству- ющих М-точечным одномерным преобразованиям, где — со- ставное число. Рис. 6.8. Первый шаг алгоритма вычис- ления свертки размера рХрХр с помо- щью полиномиальных преобразований, р — нечетное простое Таблица 6.6 Число операций для многомерных сверток, вычисляемых с помощью полиномиальных преобразований Размеры массива NXN Общее число умножений М Общее число сложений А Размеры массива 1VXW Общее число умножений Л4 Общее число сложений А 3X3X3 40 325 6X6X6 320 3896 ЗхЗхЗхЗ 121 1324 бхбхбхб 1936 31552 Глава 7 ВЫЧИСЛЕНИЕ ДИСКРЕТНЫХ ПРЕОБРАЗОВАНИЙ ФУРЬЕ С ПОМОЩЬЮ ПОЛИНОМИАЛЬНЫХ ПРЕОБРАЗОВАНИЙ Как было показано в предыдущей главе, полиномиальные пре- образования могут быть использованы для эффективного пред- ставления многомерных сверток в виде одномерных сверток и про- изведений полиномов. В этой главе будет продемонстрировано, как полиномиальные преобразования могут быть применены для 165
представления многомерных ДПФ в виде одномерных. Такое пред- ставление очень эффективно, поскольку вычисления проводятся с использованием обычной арифметики без умножений и могут быть организованы посредством алгоритмов типа БПФ, если длины из- мерений выражаются составными числами. Для приведенного метода, который в смысле объема вычисле- ний значительно эффективнее, чем обычные построчно-столбцо- вые методы и алгоритмы Винограда расчета многомерных ДПФ, предполагается, что выражения длин нескольких измерений ДПФ имеют общие множители. Будет показано, что для одномерных или многомерных ДПФ, не имеющих общих множителей по не- скольким измерениям, можно использовать полиномиальные пре- образования с целью уменьшения объема вычислений 'путем пре- образования ДПФ в многомерные корреляции и вычисления этих многомерных корреляций с помощью полиномиальных преобразо- ваний. Поскольку оба метода с полиномиальными преобразованиями существенно сокращают число арифметических операций, на прак- тике их можно объединить, чтобы получить оптимальные эффек- тивные процедуры для многомерных ДПФ больших размеров, име- ющих общие множители по нескольким измерениям. 7.1. ВЫЧИСЛЕНИЕ МНОГОМЕРНЫХ ДПФ С ПОМОЩЬЮ ПОЛИНОМИАЛЬНЫХ ПРЕОБРАЗОВАНИЙ Рассмотрим двумерное ДПФ X/{l,k2 массива MX./V: _ N— 1 N—1 rii—Q п2~0 Wz==exp( — j 2n/N), kx, /г2 = 0,..., У— 1, j = r-i. (7.1) Вычисление Xhij,2 по обычному построчно-столбцовому мето- ду (см. разд. 4.4) складывается из М одномерных ДПФ по индек- су kt и N одномерных ДПФ по индексу k2. Следовательно, в этом случае двумерному ДПФ соответствуют 2W У-точечных ДПФ. Если для вычисления АСточечного ДПФ требуется Mt комплекс- ных умножений, то общее число М умножений для получения Xk ltk2 составляет 2NMi. Используя гнездовой алгоритм Виногра- да (см. гл. 5), ДПФ Xht,kt можно вычислить как ^точечное ДПФ, где каждый скаляр заменен на вектор из N компонент, а каждое умножение — на ^точечное ДПФ. Тогда M = M2i и применение метода гнездования выгоднее построчно-столбцового подхода, ес- ли Mi<2N. Покажем далее, что число умножений существенно уменьшает- ся, если с помощью полиномиальных преобразований Xilr.k2 пред- ставить набором одномерных ДПФ. 166
7.1.1. АЛГОРИТМ РЕДУЦИРОВАННОГО ДПФ Для того чтобы ВЫЧИСЛИТЬ Xfe,.*, с помощью 'полиномиальных преобразований [7.1, 7.2], представим ДПФ в полиномиальной алгебре, заменив формулу (7.1) следующими уравнениями: XA,(z) = S Xnt(z)Wn'k' mod (г"-1), (7.2) nt=0 N—1 ХП1(г)=У1 Xn..n^t (7.3) n2—О Xkl,k2^Xkl(z) mod(z—№*.), klt 62 = 0,..., N— 1. (7.4) Легко проверить, что уравнения (7.2) — (7.4) эквивалентны (7.1), если учесть, что приведение по модулю z—Wh’ в (7.4) экви- валентно подстановке Wki вместо z в (7.2) и (7.3). Следует также отметить, что хотя определение X*. (z) по модулю zN—1 излишне на этом этапе, тем не менее это справедливо, поскольку zN~ = Ц7мьг= 1. Для упрощения введенного представления допустим, что N — нечетное простое, N=p. Тогда zp—1 равно произведению двух циклотомичеоких полиномов: 2Р—l = (z—1)Р (z), (7.5) P(2) = zp-* + zp-2-1-...-|-1. (7.6) Для /г2=0 имеем z=l и Xhl 0 представляет простое /V-точеч- ное ДПФ, полученное приведением Xni (z) по модулю z^l: __ p—i е-i \ . xkl,0=-- S ( 2 и - <7-7) П!=0 \п2—О / Для A2^0modp Wh? является корнем полинома P(z), по- скольку p—i P(z) = [“| (z—^0, (7-8) и Xht, k2 можно получить посредством подстановки Wh* вместо г в (7.2). Так как (z—Wh*) — делитель полинома P(z), a P(z) де- лит zp—1, то выражение (7.4) можно переписать так: ХЬ1, Aj = {[Xfcl(z) mod (zp— 1)] modP(z)} mod (z—№*’)• (7.9) Следовательно, для Л2^0 уравнения (7.2) — (7.4) преобразу- ются так: Х^(2)= V* Xlni(z)Wnik' modP(z), ^ = 0,..., р—1, (7.10) fij=0 <(г) = Ру (х„2,„,—хП1,р-i)z«==X„,(z)modP(z), (7.11) n2=0 Xftl.ft2 = Xl.mod(z-U74 k2~-~ I,-, p-1. (7-12) 167
Поскольку р — нечетное простое и й2^0, произведение k2kt mod р пробегает все значения ki; заменив kt на k2kly получим Xl2ki(z)^%X\(z)WM modP(z), (7.13) nt=0 Xft2fel.fe2^Xl2fci(z) mod(z—W^). (7.14) A’hA.fes. получается заменой z на Wh* в (7.14). Следовательно, и в (7.13) можно вместо Wh* подставить z: —1 Р~1 X), (?)?”«** mod P(z), (7.15) n,=0 ' где правая часть уравнения не зависит от k2, а Х1/^, (z) имеет вид p-точечного полиномиального преобразования, которое вычис- ляется без операций умножения с помощью р3—р2—Зр+4 опера- ций сложения. Таким образом, умножения, необходимые для по- лучения ДПФ массива рХр, имеют место только при вычислении (7.14) и p-точечного ДПФ (7.7). При определении операций, соответствующих выражению (7.14), учтем, что р полиномов X^a/z) представлены по модулю P(z) и, следовательно, имеют степень р—-2. Эти полиномы можно предста- вить как —। ₽—2 • (7.16) z=o Если выражение (7.16) для Х1^, подставить в (7.14), то получим — Р-2 Xft2fel,fc2 = 2^-^fctZ’ *2=1,-, Р-h (7Л7) 1=0 которое представляет р p-точечных ДПФ, соответствующих р зна- чениям ki. Это означает, что полиномиальное преобразование пред- ставляет ДПФ массива рХр, р — простое, в виде р+1 р-точечных ДПФ вместо 2р 2р-точечных ДПФ, как в построчно-столбцовом методе. Следовательно, число М умножений составляет Л1=(р+1)Л1,, (7.18) где Л11 — число комплексных умножений, соответствующее р-точеч- ному ДПФ. Описанный метод с полиномиальными преобразова- ниями иллюстрируется на рис. 7.1. Число умножений можно еще сократить, если учесть, что по всех р ДПФ (7.17) последний входной элемент равен нулю, а пер- вый выходной отсчет не вычисляется. Упрощение выражения (7.17) основано на том факте, что для k2=^=0 и р — простого у]1 —1. (7.19) z=i Следовательно, выражение (7.17) можно записать так: 168
__ р—1 Xk2kt,k2= 2 Уъ,,^1, л2= 1,..., P—1, (7.20) Z=1 где У^^^-у^о, 1=1,..., p—2. (7.21) В ДПФ, определенных по (7.20), первые входной и выходной элементы опущены. Эти ДПФ называют редуцированными ДПФ. Их можно вычислять как (р—1)-точечные корреляции, используя алгоритм Рейдера [7.3] (см. разд. 5.2). В. этом случае, если g— примитивный корень по модулю р, то I и k2 определяются как l = gu (modp), k2 = gv modp, и, v=0,..., p—2, (7.22) Тогда редуцированное ДПФ (7.20) превращается в корреляцию __ р—2 =S и—0 Последовательность y'k,,i можно образовать из после- довательности yk,,i без при- менения сложений, посколь- ку это эквивалентно умно- жению Xk,k, (z) на z—1 по модулю zp—1 с последую- щими приведением по моду- лю P(z) и умножением на z. Умножение на z-1 можно выполнить на этапе пред- ставления входного массива в виде полиномов. Следова- тельно, приведение по моду- лю P(z) осуществляется без операций сложения как часть процедуры вычисле- ния полиномиального преоб- разования. В разд. 5.2 пока- зано, что если р-точечное ДПФ, р простое, вычислять по алгоритму Рейдера, то вычисления сводятся к од- ной (р—1)-точечной корре- ляции и одному скалярному умножению. Таким обра- зом, если обычное ДПФ вы- числяется с помощью Mi комплексных умножений, со- ответствующее редуциро- ванное ДПФ, определенное выражением (7.23), вычис- (7.23) Рис. 7.1. Алгоритм вычисления редуциро- ванного ДПФ массива рХр с помощью по- линомиальных преобразований, р— простое 169
ляется за Mi—1 комплексных умножений, а число М комплексных умножений, требуемых для получения ДПФ массива рХр с помо- щью полиномиальных преобразований, сокращается до M^tp+ljML—p. (7.24) Это составляет примерно половину числа умножений, соответст- вующих построчно-столбцовому методу, и всегда меньше числа умножений, необходимых для алгоритма Винограда (за исклю- чением случая p=Mi). Если обычные и редуцированные р-точеч- ные ДПФ вычисляются но алгоритму Рейдера, все комплексные умножения сводятся к умножениям на вещественные или чисто мнимые числа и могут быть выполнены с помощью только двух вещественных умножений. Тогда число вещественных умножений, требуемых для получения ДПФ массива рХр с помощью полино- миальных преобразований, равно 2(р +1)714]—2р. 7.1.2. ОБЩЕЕ ОПРЕДЕЛЕНИЕ АЛГОРИТМА До сих пор обсуждался подход к вычислению ДПФ массива Л'ХА с помощью полиномиальных преобразований, где N прос- тое. Аналогичный подход можно применить также к ДПФ мас- сива ХхХ, N— составное, если воспользоваться полиномиальны- ми преобразованиями, определенными по модулю различных цик- лотомических полиномов Pei (z) (см. подразд. 6.2.1), которые де- лят полином zN—1 [7.1]. Поскольку практически важен случай Х=2*, рассмотрим детально только его, а для других случаев при- ведем обобщение результатов. Пусть — степень 2, У=2'; опять представим ДПФ Хь.л, массива ХхХ набором из трех полиномиальных уравнений: _ Л'—1 Xkl (г) = £ ХП1 (z) mod (zN-1), (7.25) n,=0 N—l X„,(z) = 2 (7.26) n2=0 Xkl,k!^Xkt(z) mod (z-W^). (7.27) Поскольку N — четное, zN—1 равно произведению двух поли- номов zN/2—1 и zW2+l. Комплексными корнями полиномов ^/2+1 Являются Wk* с нечетными ki. zN>2 _|_ 1 = р| (2_нечетное. (7.28) Следовательно, для нечетных ki z—делит полином г^2-|-1, который, в свою очередь, делит zN—1. Таким образом, для нечет- ных ki полиномы в (7.25)—(7.27) можно приводить по модулю 2аг/2+1; У]. fy'. V 1 X1 (7' Wn'ht mnrlJ_ 1) (7.29)
. W/2-1 Xn, (z) = 2 (Xnt. n2—xni, n^-N/z) Zn* = X„, (z) mod (zNl2 + 1), (7.30) n2=0 Xfej.fe,(z) mod(z—Wfc>), kz нечетное. (7.31) Поскольку k2 — нечетные, a N равно степени 2, то произведе- ние k2ki mod N пробегает все значения k\. Заменив kx на kik2, по- лучим w-i *, (z) s2 ^ht (г) "* k‘ mod (zN/2 +1), (7.32) tii—0 Xk2 kt, k2=Xk2 ^(z) mod (z—W7^), k2 нечетное. (7.33) Так как выражение (7.33) определено по модулю z—Whi, имеем z= 117*2. Следовательно, в (7.32) вместо 117*2 можно подставить z: Xlkl, k2 (z) = 2* Xlni (z)z^ mod (z*'/2 + 1}j (7.34) 0 откуда видно, что (z) представляет собой ^точечное поли- номиальное преобразование, 2V=24, с корнем z, определенное по модулю £*724-1. Такое .преобразование с помощью алгоритма ти- па БПФ по основанию 2 можно выполнить за счет (№/2) k)g2 N сложений и без умножений (см. подразд. 6.2.1). N полиномов (z) имеют степень N/2—1, так как они определены по мо- дулю 2*72-1-1. Следовательно, эти полиномы можно представить в виде •„ М/2-1 Xkskl(z)= 2 ykl, . (7.35) 1=0 Тогда подстановка выражения (7.35) в (7.33) дает __ W/2—1 2 У*1.^/Й2>^2 нечетное, (7.36) 1=0 и поскольку k2. нечетное, то __ JV/2— 1 ^(2«+i)fcl.2u+I= 2 (7.37) 1=0 ^2=2u+1. Уравнение (7.37) представляет W ^2-точечных ДПФ, где входная последовательность поточечно умножена на 1, W, W2, ... Эти ДПФ идентичны редуцированному ДПФ, которое воз- никает на первом этапе декомпозиции БПФ по основанию 2 с прореживанием по частоте, и иногда называются нечетными ДПФ [7.4]. Следовательно, для нечетных k2 ДПФ массива AfXM вы- числяется с помощью операций приведения по модулю zN/2+l, одного ^точечного полиномиального преобразования и нечет- ных /2-точечных ДПФ, причем операции умножения присутст- вуют в вычислении нечетных ДПФ. 171
Для четных k2, k2=Qu, ДПФ Ль.,*, массива NX/V превращает- ся в ДПФ массива MX (2V/2): __ - N— 1 7V/2—1 Xk,,2u = У 2 n2-\-Np} W7”1 ki W2un,‘, U = 0,..., N/2—1. nt=O n2=0 (7.38) Переставив местами индексы k{ и 2u, в полиномиальном виде ДПФ можно представить так: __ N/2—1 Х2и(г) = 2 ^пЛ^/2иПг mod(zw—1), (7.39) п2=0 *„2 (2) = 2 (Хп1 «пг 4” Хп1 • n2+Wz) г"* > (7.40) п,=0 2u =х2и(г) mod (z—W7^). (7.41) Тогда для выполнения Хи,, ги можно использовать тот же самый метод с полиномиальными .преобразованиями, что уже описан. Полином zN—1 разлагается на два полинома zN/z—1 и zA72+l, а корнями zN,z—1 являются ki~ четные. Следовательно, при четных k\, ki=2v, Xki,2u сводится к ДПФ массива (N/2) X (N/2): __ N/2—1 N/2—1 2i-2v,2u 2 S (Л'«1.'г2 4“ xnt, n^+N/2 + Xn,+Nlz, п2 4“ «!=() П2=0 4-^+w/2, »!+W2)^tel WZ^ , o = 0,..., N/2— 1. (7.42) Для -нечетных ki величины Whi являются корнями zN/z+l и выражения (7.39), (7.40) можно определить по модулю zN/z+l вместо zN—1. В этом случае представляется возможным вычис- лить Xkt, ги с помощью А72-точечного полиномиального преобра- зования таким же способом, как для Xu„k2 при нечетных k2. Осу- ществляется это следующим образом: X^(z)= 2 Xln2(z)^n‘ mod(z"/2+l), и= 0,..., N/2- 1, (7.43) П2=0 Хп2 (г) = ХП2 (z) mod (zw/2 + 1) = N/2—1 = 2 4“,«2+^/2 -^«1+^/2, n2~^^n14-A^/2,«2+W2) (7.44) =0 ,2uki = X2lAl mod(z—Wz)fc*> ki нечетное. (7.45) Таким образом, ДПФ массива MxW вычисляется с помощью операций приведения по модулю zN/z—1 и zN/z+l двух полино- миальных преобразований, 3N/2 редуцированных /V/2-точечных ДПФ и одного ДПФ массива (N/2)X(N/2) (рис. 7.2). Последнее из перечисленных ДПФ, в свою очередь, -можно вычислить тем же самым методом; следовательно, повторяя описанную процедуру, дпф массива NxN с помощью полиномиальных преобразований можно вычислить за (logzM)—1 шагов. В обычном построчно- 172
столбцовом методе, использующем БПФ-алгоритм по основанию 2, на первом шаге ДПФ массива NXN сводится к 2N Л72-точечным нечетным ДПФ, Af ^2-точечным ДПФ и одному ДПФ массива N/2XN/2- Это соответствует примерно удвоенному числу ДПФ и, следовательно, удвоенному числу умножений по сравнению с опи- санным методом, использующим полиномиальные преобразования. Если редуцированное ДПФ вычислять по алгоритму Рейдера— Бреннера [7.5] (см. разд. 4.3), то все 'комплексные умножения бу- Рис. 7.2. Алгоритм вычисления редуцированного ДПФ массива NXN с помощью полиномиальных преобразований, ^г=2‘ 173
дут выполняться только за два вещественных умножения. Для этого случая данные о числе арифметических операций, необхо- димых для вычисления ДПФ массива МхЛ\ ЛА=2‘, с помощью полиномиальных 'преобразований, приведены в табл. 7.1. (Триви- альные умножения на ±1 и ±j не подсчитываются.) Эти пока- затели получены на основе данных о числе операций для редуци- рованных ДПФ из табл. 4.4 и числе операций для процедур при- ведения и восстановления по китайской теореме об остатках из табл. 6.2. Из сравнения с табл. 4.5 видно, что метод с полиноми- альными преобразованиями требует примерно вдвое меньше ум- ножений, чем обычный построчно-столбцовый метод, использую- щий тот же БПФ-алгоритм, и существенно меньшего числа сло- жений. Следует также отметить, что подход, основанный на по- линомиальных преобразованиях, при N=2l сохраняет основную структуру БПФ-алгоритма, поскольку в данном случае полино- миальные преобразования вычисляются с помощью алгоритма, имеющего структуру БПФ. Таблица 7.1 Число вещественных операций для комплексных ДПФ массива Л/хЛ/, вычисляемых с помощью полиномиальных преобразований и редуцированного алгоритма Рейдера—Бреннера (У = 2‘) Размеры мас- сива NXN Число умноже- ний М Число сложе- ний А Число умноже- ний иа отсчет M/N Число сложений иа отсчет A/N 2x2 0 Г6 0 4,00 4X4 0 128 0 8,00 8X8 48 816 0,75 12,75 16X16 432 4528 1,69 17,69 32x32 2736 24944 2,67 24,36 64x64 15024 125040 3,67 30,53 128X128 76464 599152 4,67 36,57 256 x256 371376 2790512 5,67 42,58 512x512 1747632 12735600 6,67 48,58 1024x1024 8039088 57234544 7,67 54,58 Описанное обобщение метода с полиномиальными преобразо- ваниями распространяется на случай ДПФ массива MX2V, М=рс, р нечетное простое. Например, если М=р2, г?2—1 раскладывается на три циклотомичеоких полинома Pj(z)=z—1, P2(z)=zp~1 + + z?~2+ ... +1, P3(z) =2p<p-1) + zp(p~2)+ ... +1. Тогда ДПФ массива р2Хр2 вычисляется, как показано на рис. 7.3, с помощью одного р2-точечного полиномиального преобразования по модулю Рз(г), одного p-точечного полиномиального преобразования по модулю Рз(г), р2+р редуцированных р2-точечных ДПФ и одного ДПФ массива рХр. Последнее из перечисленных ДПФ, в свою очередь, может быть получено с применением полиномиальных преобразо- ваний. Каждое из редуцированных ДПФ здесь таково, что толь- ко первые р(р—1) входных отсчетов ненулевые, а выходные от- 174
счеты с индексами, кратными р, не вычисляются. Эти редуциро- ванные ДПФ, эквивалентны одной 'корреляции из р(р—1) отсче- тов и одному усеченному р-точечному ДПФ. В табл. 7.2 обобщены основные свойства различных двумер- ных ДПФ, вычисляемых по методу с полиномиальными преобра- зованиями. Подсчет операций для выполнения полиномиальных Д/,Л2 Рис. 7.3. Вычисление ДПФ массива р2Хр2 с помощью полиномиальных преобра- зований, р — нечетное простое преобразований и процедур приведения произведен здесь с по- мощью табл. 6.2. В табл. 7.3 приведены также данные о числе операций для многомерных ДПФ, вычисляемых с применением полиномиальных преобразований. Каждое полиномиальное умно- жение выполняется посредством двух вещественных умножений. Допускается, что используются алгоритмы редуцированных ДПФ из разд. 7.4 (см. табл. 7.8) для М=8, 9, 16 и алгоритмы корот- J75
Таблица 7.2 Основные параметры ДПФ массива NxN, вычисляемых с помощью полиномиальных преобразований Полиномиальные преобразования Число сложений для выпол- нения полиномиальных пре- образований и приведений ДПФ и редуцированные ДПФ р — простое p-точечное ПП mod (г50—l)i/,(z—il) рЗ-|_р2_5р+4 p-точечное ДПФ, р p-точечных редуцированных ДПФ [р (р—1)-точечных корреляций] /V=p2, р — простое р2-точечное ПП mod(z?2—l)/(z?— 1), p-точечное ПП modfz?2—l)/(z?—il), p-точечное ПП mod(z₽—l)/(z—il) ,2р5+р4—5р3 + р2+6 р2+р р2-точечных редуцированных ДПФ, р p-точечных редуцированных ДПФ [р (р—I)-точечных корреляций], p-точечное ДПФ N=2t 2*-точечное ПП mod(z2<—1+ 1), 2*-*-точечное ПП mod(z2<— 1 +.1) (зг+б^2»-1’ 3-2'-* 2-точечных редуцированных ДПФ, ДПФ массива 2‘~*><2‘-1 ЛГ = Р1Р2, pi, р2 — простые р1Рг-точечное ПП, pz pi-точечных ПП, pi рг-точечных ПП р21р2г(Р1+Р2+2) — —i5pip2(pi+p2) + +4(р21+р2г) pipz+pi+pz pipz-точечных редуцирован- ных ДПФ, Pi pi-точечных редуцированных ДПФ, рг рг-точечных редуцированных ДПФ, Р1Рг-точечное ДПФ
Таблица 7.3 Число* комплексных операций для двумерных малоточечиых ДПФ, вычисляемых с помощью полиномиальных преобразований Размеры массива NXN Число умно- жений М Число сложе- ний А Размеры массива NXN Число умно- жений м Число сложе- ний А 2x2 4(4) 8 7X7 65(1) 635 3X3 9(П 36 8Х$ 64(40) 408 4X4 16(16) 64 9X9 105(1) 785 5X5 31(1) 221 16X16 304(88) 2264 Примечание. В скобках приведено число тривиальных умножений. ких (А/—1)-точечных сверток (см. .подразд. 3.8.1, табл. 3.1) для N = 5. Алгоритм редуцированного 7-точечного ДПФ получается как 6-точечная свертка, вычисляемая за 8 комплексных умноже- ний и 34 комплексных сложения посредством гнездования сверток длины 2 и 3. ДПФ, соответствующие А=2, 3, 4, вычисляются по гнездовому алгоритму, а ДПФ, соответствующее А=9, вычисля- ется частично по гнездовому алгоритму, частично по алгоритму с полиномиальными преобразованиями. 7.1.3. МНОГОМЕРНЫЕ ДПФ Полиномиальные преобразования могут бцть использованы также для разработки алгоритмов вычисления ДПФ размерности более двух. Рассмотрим, например, ДПФ X.k1,k2,kt массива WxAfxW: • __ N-\ N—1 N— 1 xkl, kl. ka 2 2 2 wnikl wn°k2 Wn’ *“> nt=0 n2=0 ns~0 klt klt £3 = o,..., N— 1. (7.46) В терминах полиномов получим xkl,k, (z)=2* S * <2)w",kl Wn‘k‘ mod (7-47) (7’48) n3=0 Хк1,к,.ь, = Хк1,к,(г) mod (z—IF*»). (7.49) Если A — нечетное простое, N=p, то для &з=0 указанное сводится к ДПФ массива NXN. Для &з=т^0 можно вы- числить с помощью двумерного полиномиального преобразования: 2 ***"*** modP(z), (7.50) nM=0 n2=0 Р(г)=(гР—1)/(г—1), (7-51) 177
^«,.«2(z)^Xrii.„,(z) rnodP(z), (7.52) Xk, k„k, ft„ k3 = Xks kl. k3 k2 (г) mod (z—Wk=). (7.53) Следовательно, с помощью двумерного полиномиального пре- образования ДПФ массива рХрХр преобразуется в ДПФ масси- ва рХр и р2 редуцированных p-точечных ДПФ. Для ДПФ раз- мерности d рассмотренный процесс применяется рекурсивно и ис- ходное ДПФ приводится к одному р-точечному ДПФ и р+р2+ ... — +pd~l p-точечных нечетных ДПФ. Таким образом, если обозначает число комплексных умножений для p-точечного ДПФ, то число М комплексных умножений, соответствующее d-мерному p-точечному ДПФ по каждому измерению, составляет M=l + (M1-l)(pd-l)/(p-l). (7.54) Такое же ДПФ с использованием построчно-столбцового ме- тода вычисляется за dpd-1Af1 комплексных умножений. Следова- тельно, применение полиномиальных преобразований сокращает число умножений приблизительно в d раз по сравнению с пост- рочно-столбцовым методом. Таким образом, вычислительная эф- фективность алгоритма с полиномиальными преобразованиями относительно эффективности построчно-столбцового алгоритма пропорциональна d. Подобный результат получается также при сравнении алгоритма с полиномиальными преобразованиями и гнездового алгоритма, поскольку число умножений для вложения равно 7Vfdi, при Л41>р, рУ=3. Это более наглядно можно проиллю- стрировать, рассмотрев случай ДПФ массива 7X7X7, которое с помощью полиномиальных преобразований вычисляется за счет 457 комплексных умножений, тогда как построчно-столбцовый метод требует 1323 умножений, а гнездовой алгоритм — 729. Аналогичный подход с использованием полиномиальных пре- образований применим к произвольным d-мерным ДПФ с общи- ми множителями в нескольких измерениях. В табл. 7.4 приведены данные о числе комплексных арифметических операций для неко- торых комплексных трехмерных ДПФ, вычисляемых с помощью полиномиальных преобразований. Каждое комплексное умноже- ние выполняется посредством двух вещественных умножений. Таблица 7.4 Число комплексных операций для трехмерных малоточечных ДПФ, вычисляемых с помощью полиномиальных преобразований Размеры массива Л’Х?/ Число умно- жений м Число сложе- ний А [ Размеры массива NXN Число умно- жений м Число сложе- ний А 2x2x2 8(8) 24 7x7x7 457(1) 6767 3x3x3 27(1) 162 8X8X8 512(288) 4832 4X4X4 64(64) 384 9X9X9 963(1) 10383 5x5x5 156(1) 1686 16X16X16 4992(1184) 52960 Примечание. В скобках приведено число тривиальных умножений. 178
7.1.4. ГНЕЗДОВОЙ алгоритм И АЛГОРИТМ ПРОСТЫХ МНОЖИТЕЛЕЙ В гл. 5 показано, что ДПФ массива Л^Х/У можно вычислить с помощью вложения малоточечного ДПФ массива NiXNi или с помощью алгоритма простых множителей, если различные Ni яв- ляются взаимно-простыми множителями числа N [7.6, 7.7]. Эти методы можно применять в комбинации с полиномиальными пре- образованиями вместо полиномиальных преобразований больших размеров. В простом случае, соответствующем N = N[N2, (Ni, N2) = l, ДПФ массива Д^МгХМА'г посредством алгоритма Гуда можно преобразовать в четырехмерное ДПФ массива (NiXN^X X(N2XN2) [7.6]. Четырехмерное ДПФ, в свою очередь, вычисля- ется по гнездовому алгоритму Винограда [7.7], где с помощью полиномиальных преобразований определяется ДПФ массива МХМ, в котором каждый скаляр заменен массивом N2XN2 от- счетов, а каждое умножение — ДПФ массива N2XN2, вычисляе- мым посредством полиномиальных преобразований. Следователь- но, если М|, М2, М и Д1, А2, А обозначают соответственно число комплексных умножений и сложений, требуемых для получения ДПФ массивов NtXNi, N2XN2 и NiN2XN(N2, то Af = Af1Af2, (7.55) A^N^ + A^A,. (7.56) Четырехмерное ДПФ массива (NtХЛД X (N2XN2) можно так- же вычислить построчно-столбцовым методом с помощью №1 ДПФ массива N2XN2 и Nz2 ДПФ массива NiXNi. Тогда М = ^М2 + ^Мг, (7.57) A = nI Av + NzAl- (7.58) V Поскольку Mi~^Nzi и M2^NZ2, то гнездовой алгоритм требует в основном больше сложений, чем построчно-столбцовый, за ис- ключением случая Afj = №i. Однако для малоточечных ДПФ Mt и Л42 не больше Nzi и Nz2, поэтому умножений гнездовой алгоритм требует меньше, чем построчно-столбцовый, а сложений пример- но столько же. Таким образом, гнездовой алгоритм в основном целесообразнее применять для ДПФ средних значений Af, тогда как метод простых множителей более приемлем для ДПФ боль- ших значений N. С помощью обоих методов ДПФ последовательностей большой длины можно получать, используя небольшой набоп малоточечных ДПФ, вычисляемых посредством полиномиальных преобразова- ний. Кроме того, дополнительное сокращение вычислительных за- трат можно получить, расчленяя вычисления на основе методов, обсуждавшихся в подразд. 5.3.3 и 5.4.3. В табл. 7.5 приведены данные о числе вещественных операций для комплексных многомерных ДПФ, которые вычисляются с по- мощью вложения малоточечных ДПФ, получаемых посредством 179
Таблица 7.5 Число вещественных операций для комплексных многомерных ДПФ, вычисляемых с помощью полиномиальных преобразований и гнездовых алгоритмов Размеры мас- сива NXN Число умноже- ний М Число сложе- ний А Число умноже- ний иа отсчет M/N Число сложений на отсчет A/N 24x24 1072 11952 1,86 20,75 30X30 2224 26712 2,47 29,68 36X36 3328 35488 2,57 27,38 40x40 3888 48688 2,43 30,43 48x48 5296 59184 2,30 25.69 56x56 8240 121264 2,63 38,67 63X63 13648 204920 3,44 51,63 72x72 13360 166576 2,58 32,13 80X80 18672 247568 2,92 38,68 112X112 39344 607952 3,14 48,47 120X120 35632 553392 2,47 38,43 144X144 63664 844048 3,07 40,70 240 x240 169456 2688912 2,94 46,68 504x504 873520 16353584 3,44 64,38 1008x1008 4149424 80267312 4,08 79,00 120X120X120 4312512 99966528 2,50 57,85 240 x 240 x 240 42050240 977859648 3,04 70,74 Примечая и е. Тривиальные умножения на ± 1 и ±j не подсчитываются. Полиномиальных преобразований, показатели которых сведены в табл. 7.3 и 7.4. Произведя сравнение с табл. 7.1, можно сделать вывод, что этот метод по сравнению с методом, использующим полиномиальные преобразования последовательности с большой длиной У=2‘, требует примерно вдвое меньше умножений, но больше сложений. Однако, как будет показано, если объединить указанный метод, послойно-гнездовой алгоритм и метод с поли- номиальными преобразованиями, который будет рассмотрен, то возможно значительное дополнительное сокращение числа опе- раций. 7.1.5. ВЫЧИСЛЕНИЕ ДПФ С ИСПОЛЬЗОВАНИЕМ ПОЛИНОМИАЛЬНЫХ ПРЕОБРАЗОВАНИИ, ОПРЕДЕЛЕННЫХ В МОДИФИЦИРОВАННЫХ КОЛЬЦАХ ПОЛИНОМОВ Как было показано, многомерные ДПФ с общими множителя- ми в нескольких измерениях с помощью полиномиальных преоб- разований можно эффективно преобразовать в набор одномерных ДПФ и редуцированных ДПФ. Этот 'метод заслуживает особого внимания при применении для вычисления ДПФ, длины измере- ний которых выражаются степенями 2, поскольку в данном слу- чае, используя алгоритм типа БПФ по основанию 2, полиномиаль- ные преобразования и ДПФ можно вычислять с минимальным числом операций. Недостаток этого метода состоит в том, что для его реализации требуется набор различных полиномиальных пре- образований. 180
Покажем далее, что эту реализацию можно значительно упрос- тить за счет небольшого увеличения числа арифметических опера- ций, модифицировав определение соответствующих колец и доба- вив предварительные умножения отсчетов входных данных на степени корня из —1. Для того чтобы представить указанный ме- тод [7.8], рассмотрим ДПФ Xhl,^массива N=2‘: . ft. = S ’ S'•". r2"*ftl W72"’*1- nt=0 ля~0 № = ехр(—j л/TV), klf k2 = 0,..., N— 1, (7.59) где W обозначает exp(— а не exp(— ]2n/N) по причинам, которые станут понятными позже. Перепишем выражение (7.59) в виде __' N-l N-1 Xfel.fta = £ 3 (7.60) n1=0 n2=f) Вычисление полученного выражения эквивалентно предваритель- ному умножению отсчетов входных данных на U7_p-2 и вычислению модифицированного двумерного ДПФ, которое представляет со- бой обычное ДПФ вдоль измерения kt и нечетное ДПФ вдоль из- мерения k2. Для упрощения вычислений по (7.60) заменим это выражение следующим эквивалентным полиномиальным представ- лением: N—1 X„a(z)=S xni.niW-^zn‘, (7.61) н2=0 __ N—1 Xn,(z)W2^ mod^ + l), (7.62) flj —0 Xftl, kf Xk, (г) mod (z-^+‘). (7.63) Нетрудно проверить, что выражения (7.61) — (7.63) действи- тельно представляют выражение (7.60), если ХП1(г), определен- ное по (7.60), подставить в (7.62) и z заменить на №2кг+1. Опреде- ление выражения (7.62) по модулю zN+l не обязательно на этом этапе. Однако оно оправдано, поскольку zN= —j и все корни полинома г27-?-! равны z=W2hr¥i при йг=0, .... N—1. Так как 2& + 1 — нечетное, a N = 2‘, то произведение (2k + l)kt mod N- принимает те же значения, что и kt при &i = 0, ..., X—1. Тогда X(2fe2+1) hl (Z) = s’1 xn, (z) HW+D „.ft. mod (z-v + 1), (7.64) nf=0 X(2t24-i) kt, ks X(2fe2+D fe, (z) mod (z—W'2ft.+1) (7.65) Уравнение (7.65) сводится к простой подстановке WZ2h!+1 вмес- то г. Следовательно, в (7.64) й/2(12+1 заменим на z. Тогда /V_1 X(2fc.+i)ft. (г)=2 Х„,(г)г2п,к‘ mod(z'v+l), (7-66) п,=0 181
что представляет собой N-точечное полиномиальное преобразо- вание, определенное по модулю Это преобразование вы- числяется без операций умножения с 'Помощью 2N2log2N вещест- венных сложений в соответствии с алгоритмом типа БПФ по ос- нованию 2. При использовании рассмотренного метода единственные ум- ножения, требующиеся для получения ДПФ массива NXN,— это N2 предварительных умножений на и умножения, необходи- мые для вычисления (7.65). Число операций, соответствующее выражению (7.65), можно подсчитать, учтя, что Х^+ол, (z) пред- ставляет N полиномов с N членами, определяемыми так: _ W-1 ^(2^+d *, (г) = 2 Vkt.iZ1- (7-67) i=0 Следовательно, из (7.65) можно получить _ N-1 X(2ft,+1) s yk (7.68) z=o 1 что соответствует N N-точечным нечетным ДПФ. Таким образом, ДПФ массива N\N, N=2f, вычисляется, как показано на рис. 7.4, с помощью N2 умножений на W~n\ одного N-точечного полиномиального преобразования, одной перестанов- ки и N редуцированных N-точечных ДПФ. Редуцированное ДПФ можно вычислить, используя обычный БПФ-алгоритм. Если до- пустить, что эти ДПФ получаются с помощью БПФ-алгоритмов по основанию 2, в которых тривиальные умножения на ±1 и ±j считаются обычными умножениями, то для вычисления N-точеч- ного ДПФ необходимы 2Nlog2N вещественных умножений и 3Nlog2N вещественных сложений. Тогда для ДПФ массива NXN требуется вещественных умножений и Ai вещественных сло- жений, где Af1 = 2N2(4 + log2N), (7.69) Д1 = № (4 + 51og2N). (7.70) Если ДПФ массива NXN вычислять построчно-столбцовым методом, то число умножений М2 и сложений А2 равно М2 =- 4 N2 log2 N, (7-71) A, = 6N2log2N, (7-72) откуда видно, что метод с полиномиальными преобразованиями более эффективен, чем построчно-столбцовый метод; при N>16 и для преобразований большой длины он вдвое сокращает число умножений. Для ДПФ больших размеров использование метода с полиномиальными преобразованиями, кроме того, сокращает на 15% число сложений. Таким образом, приведенный метод с полиномиальными пре- образованиями существенно уменьшает число арифметических операций, сохраняя структурную простоту построчно-столбцового 182
БПФ-алгоритма по основанию 2. На практике усеченные ДПФ целесообразнее вычислять по алгоритму Рейдера—Бреннера [7.5], поскольку все комплексные умножения в нем реализуются только за два вещественных умножения. Рис. 7.4. Вычисление ДПФ массива NXN с помощью полиномиальных преобра- зований, определенных в модифицированных кольцах полиномов, У=2‘ Число арифметических операций можно сократить еще, если модифицировать структуру кольца полиномов только для части описанной процедуры. Например, один или несколько шагов ал- горитма можно выполнять по методу, представленному в под- разд. 7.1.2, а оставшиеся вычисления провести с использованием метода модификации кольца. Рассмотрим процесс вычисления ДПФ Xkt,k2 массива WX/V: _ N-1 ЛГ—I nj=0 n2=0 117 = exp (—j 2n/N), ki, Л2 = 0,..., X—1, (7.73) где без модификации кольца выполняется один шаг алгоритма. В терминах полиномов ДПФ имеет вид _ лг—1 п^о N— 1 хщ(г) = 2’ и2—0 mod(zw— I), Xkl, k, ^Xkl (z) mod (z—Wk‘). (7-74) (7.75) (7.76) Для нечетных xkltk2 вычисляется с помощью /V-точечного полиномиального преобразования, определенного по модулю zN/z+l (см. подразд. 7.1.2): Х'ь, (г) 2 ' Хк & znikl mod + 1)1 nt=0 Xi.(z)sXni(z) mod (zW2-|-1), Xk, fti. k2 = Х[г ki mod (z—wk‘), k2 нечетное. (7.77) (7.78) (7.79) 183
При четном k2 Xklik, приводится к ДПФ массива Nx(N/2), для вычисления которого используется метод модификации кольца: W/2-1 (z) = 2 (хп,, Па + хП1, ns+7V/2) W-n> гп’, (7.80) Пц=0 X(k,+i)kl (z) = (z)zn‘kt mod(zw/2+l)y (7.81) n,=0 ‘ ^(fej+D kt, ka =Х^„+\) kt (г) mod(z—IV'ft>+1), k2 нечетное. (7.82) Следовательно, ДПФ массива УхМ вычисляется, как пока- зано на рис. 7.5, с помощью только М2/2 умножений на IE-”2, двух полиномиальных преобразований, определенных по модулю zN/2+l, и 2ЛГ редуцированных N/2-точечных ДПФ. Если редуцированные ДПФ вычислить по обычному БПФ-алгоритму с основанием 2, то число вещественных умножений и вещественных сложений Аз составит M3=2№(2+tog2/V), Л3 = №(24-51оё2Л0. (7.83) (7.84) С помощью указанного алгоритма дополнительное сокращение числа арифметических операций получается за счет применения двух типов полиномиальных преобразований вместо одного. Ре- курсивно продолжая описан- ный метод для приведения ДПФ массива Nx(N/2) в ДПФ массива (Af/2) X (Л72), N/2 редуцированных ЛДточеч- ных ДПФ и далее в ДПФ мас- сивов (N/4)X(N/4), (NJ8)X Х(Л?8), ..., можно на каждом шаге вычислений уменьшать число арифметических опера- ций посредством введения до- полнительного числа разных полиномиальных преобразова- ний. Если до конца провести такую декомпозицию, то полу- чится алгоритм, идентичный приведенному в подразд. 7.1.2. Следовательно, существует Рис. 7.5. Вычисление ДПФ массива Л'ХЛ' с помощью полиномиальных преобразований, определенных по мо- дулю zN/2+'l, 184
значительная гибкость в получении определенной структурной сложности алгоритма за счет вычислительной сложности посред- ством выбора числа шагов вычислений. 7.2. ВЫЧИСЛЕНИЕ ДПФ С ПОМОЩЬЮ МНОГОМЕРНЫХ КОРРЕЛЯЦИИ И ПОЛИНОМИАЛЬНЫХ ПРЕОБРАЗОВАНИИ В предыдущих разделах 'было показано, что многомер- ные ДПФ 'с помощью полиномиальных преобразований можно раз- ложить на одномерные и редуцированные, получив при этом выиг- рыш в объеме вычислений. Предложенный метод применим в ос- новном для ДПФ, имеющих общие множители в двух или более измерениях, и следовательно, не может быть использован для одномерных ДПФ. В этом ‘разделе будет представлен другой спо- соб вычисления ДПФ с помощью полиномиальных преобразований [7.1, 7.2, 7.9]. В его основе лежат декомпозиция ДПФ, размер- ность которого выражается составным числом, в многомерные кор- реляции посредством алгоритма Винограда [7.7] и вычисление этих многомерных корреляций с использованием полиномиальных пре- образований, если измерения корреляций имеют общие множите- ли. Описываемый метод применим в основном для многомерных ДПФ, а также для некоторых случаев одномерных ДПФ. 7.2.1. ОПИСАНИЕ АЛГОРИТМА Рассмотрим двумерное ДПФ массива МхМ- Оно либо изначально является двумерным, либо•получено из одномерного -точечного ДПФ, где Nt и N2 взаимно-простые, в результате ис- пользования алгоритма Гуда [7.6] (см. разд. 5.3). ДПФ Xfel,fe2 оп- ределяется как _ - W,-l М2-1 = 2 S x^W^W^, nt—Q п2=0 W± = exp (—j 2n/N1), W2 = exp (—j 2n//V2)> J=K—1, ^ = 0,..., Nx— 1, k2 = 0,..., Л/2—1. (7.85) Для простоты допустим, что Nt и М — простые. При k2—0 Xkt.ki превращается в ^точечное ДПФ: _ М,-1 /М2—1 \ У | У ^ = o,..., М-1. (7.86) \н2=0 / Для &2=/=0 рассмотрим сначала случай, соответствующий &i = 0. Тогда __ Ns—1 , Nt—1 \ *0.*2= S ( S *2=1....-^2-1, (7.87) п2=0 ' пд=0 и, поскольку 1 +УГ2-г 1Г'22-г ... + то Хо. л2 N2—1 п2=1 Nt—1 2 (xnt, п2 .«1=0 -J4,o)j W?k'. (7.88) 185
Так как N? — простое, а п2 и k2 ие равны 0, то можно, исполь- зуя алгоритм Рейдера ([7.3], Хо,представить в виде (N2—1)-то- чечной корреляции: r^2-|-V2 n2 = gU1 modM,, k2 = go* modM,, u2, w2 = 0,..., N2—2, __ Ns—2 Ni—1 Xo, g°« = У, У ^Xnt, — Xnt, o) W'®1 «2—0 0 (7.89) (7.90) где g — 'примитивный корень порядка N2—1 по модулю N2. Если kt и k2 не равны 0, то Xk1,k!! представимо в виде двумерной кор- реляции массива (Nt—1) X (N2—1): дг __g N о «i~0 «2=0 ?!.! = № modA\, mod/Vp (7.91) Используя метод Винограда [7.7], ДПФ массива AfiXWg мож- но вычислять посредством вложения N\- и Мг-точечных ДПФ, что эквивалентно вычислению двумерной корреляции (7.91) по гнез- довому алгоритму Агарвала—Кули [7.10] (см. подразд. 3.3.1). Однако в силу результатов гл. 6 если двумерная свертка или кор- реляция в числах, выражающих длины по нескольким измере- ниям, имеет общие множители, то число арифметических опера- ций можно заметно сократить путем замены гнездового алгорит- ма методом, использующим полиномиальные преобразования. Следовательно, естественно предполагать, что если полученную двумерную корреляцию вычислять с помощью полиномиальных преобразований, то вычислительную сложность ДПФ массива (ViXA^ можно снизить. В случае если множителей больше двух или множители являются составными числами, рассмотренный ме- тод можно применять рекурсивно (см. подразд. 3.3.1). Если N?=N2, то все множители в обоих измерениях общие и в этом случае всегда возможно использование полиномиальных преобразований для двумерной корреляции. Этот метод иллю- стрируется на 'рис. 7.6 для ДПФ массива 7X7. Поскольку по ал- горитму Рейдера 7-точечное ДПФ сводится к одному умножению и одной 6-точечной корреляции, то ДПФ массива 7x7 представ- ляется одним 7-точечным ДПФ, одной 6-точечной корреляцией и одной корреляцией массива 6X6. Если 6-точечные корреляции вычислять с помощью алгоритма, требующего 8 комплексных ум- ножений, то в целом с применением гнездового алгоритма Вино- града для ДПФ массива 7x7 потребуется 81 комплексное умно- жение. Корреляция массива 6x6, вычисляемая посредством вло- жения, требует 64 умножений. Однако, если корреляцию массива 6x6 вычислять с помощью полиномиальных преобразований, то потребуется всего 52 комплексных умножения, число умножений для ДПФ массива 7X7 составит 69 вместо 81. Таким образом, процедура вычисления многомерных корре- ляций с помощью полиномиальных преобразований дает другой 186
способ получения ДПФ на основе 'полиномиальных преобразова- ний по сравнению с обсуждавшимися в разд. 7.1. Заметим, что последний из упомянутых методов всегда эффективнее'. Это свя- зано с тем, что вычислению корреляций с помощью полиномиаль- ных преобразований соответствуют меньшие поля расширений. Рнс. 7.6. Вычисление ДПФ массива 7X7 с использованием алгоритма Винограда и полиномиальных преобразований Так, ДПФ массива ТК1 по методу из разд. 7.1 вычисляется лишь за 65 умножений, тогда как по только что приведенному мето- ду — за 69. Следовательно, применимость метода, основанного на вычислении многомерных корреляций посредством полиноми- альных преобразований, ограничивается случаями многомерных 187
ДПФ, не имеющих общих множителей в разных измерениях и для которых не выполняются условия метода из разд. 7.1. В качестве примера рассмотрим двумерное ДПФ массива 7X9 - (или одномерное 63-точечное ДПФ); это ДПФ не может быть вычислено по методу, приведенному в разд. 7.1, поскольку числа 7 и 9 не имеют общих множителей. Применяя алгоритм Виногра- да, данное ДПФ можно получить вложением 9- и 7-точечного ДПФ. Посредством алгоритма Рейдера 7-точечное ДПФ перево- дится в одно умножение и 6-точечную корреляцию, тогда как 9-точечное ДПФ сводится к 5 умножениям и одной 6-точечной корреляции. Следовательно, вычисление ДПФ массива 7x9 по алгоритму Винограда состоит из вычисления пяти 7-точечных ДПФ, одной 6-точечной корреляции и одной корреляции массива 6x6 — итого 198 вещественных умножений. Если же корреляцию массива 6x6 вычислять с помощью полиномиальных преобразо- ваний, то суммарное число умножений сокращается до 174. В табл. 7.6 приведены данные о числе вещественных операций, необходимых для получения комплексных ДПФ, если многомер- ные корреляции вычислять с помощью полиномиальных преобра- зований. Сравнение с данными табл. 5.3 показывает, что этот метод требует существенно меньше арифметических операций, чем обычный алгоритм Винограда. Например, для 1008-точечного ДПФ приведенный здесь метод требует 3116 вещественных умно- жений и 34956 вещественных сложений в противоположность 3548 умножениям и 34668 сложениям в случае алгоритма Вино- града. Таблица 7.6 Число вещественных операций для комплексных ДПФ, вычисляемых с помощью многомерных корреляций и полиномиальных преобразований Размеры мас- сива NXN Число умноже- ний м Число сложе- ний А Число умноже- ний иа отсчет M/N Число сложений на отсчет A/N 63 172 1424 2,73 22,60 80 188 1340 2,35 16,75 504 1380 14668 2,74 29,10 1008 3116 34956 3,09 34,68 5X5 64 452 2,56 18,08 7X7 136 1300 2,78 26,53 9X9 216 1816 2,67 22,42 16X16 496 4752 1,98 18,56 63x63 11680 208904 2,94 52,63 5x5x5 346 3490 2,77 27,92 7X7X7 1000 14048 3,04 40,96 Примечание. Тривиальные умножения на ±1 и ±j не подсчитываются. 7.2.2. КОМБИНАЦИЯ ДВУХ МЕТОДОВ, ИСПОЛЬЗУЮЩИХ ПОЛИНОМИАЛЬНЫЕ ПРЕОБРАЗОВАНИЯ Для многомерных ДПФ последовательностей с большими N оба метода, использующие полиномиальные преобразования, мож- но объединить с целью представления многомерного ДПФ в виде 188
набора одномерных ДПФ, вычисляемых с помощью многомерных корреляций и полиномиальных преобразований. Например, ДПФ массива 63X63 получается путем вложения ДПФ массивов 7x7 и 9x9, вычисляемых посредством первого метода с полиномиаль- ными преобразованиями. Следовательно, вычисление ДПФ мас- сива 7X7 сводится к вычислению одного произведения и восьми 6-точечных корреляций, а ДПФ массива 9x9 — 33 произведений и 12 6-точечных корреляций. Таким образом, вычисление ДПФ массива 63x63 требует 33 умножений, 276 6-точечных корреляций и 96 корреляций массива 6X6. Если корреляцию массива 6x6 вычислять с помощью полиномиальных преобразований, то в це- лом для получения ДПФ массива 63x63 необходимо 11344 ве- щественных умножений, тогда как применяя только первый метод с полиномиальными преобразованиями, получим 13648 умноже- ний, а используя обычный гнездовой алгоритм Винограда, — 19 600 умножений. Следует также отметить, что комбинация двух методов с полиномиальными преобразованиями сокращает и чис- ло сложений. В табл. 7.7 обобщены данные о числе вещественных операций, требуемых для комплексных ДПФ, вычисляемых с помощью ком- бинации двух методов с полиномиальными преобразованиями и метода послойного вложения. Из сравнения с данными табл. 7.1 видно, что для преобразований больших размеров комбинирован- ный метод требует примерно вдвое меньше умножений, чем пер- вый метод с полиномиальными преобразованиями. Число умноже- Таблица 7.7 Число вещественных операций для комплексных ДПФ, вычисляемых с помощью комбинации двух методов, основанных на полиномиальных преобразованиях Размеры мас- сива IYXN Число умноже- ний М Число сложе- ний А Число умноже- ний и а отсчет M/N Число сложений на отсчет A/N 80 188 1340 2,35 16,75 240 596 4980 2,48 20,75 504 1380 14668 2,74 29,10 840 2580 24804 3,07 29,53 1008 3116 32244 3,09 31,99 2520 8340 95532 3,31 37,90 5040 17732 208108 3,52 41,29 63X63 11344 193480 2,86 48,75 80x80 16944 231344 2,65 36,15 120x120 35632 553392 2,47 38,43 240 x 240 153904 2542896 2,67 44,15 504 x504 726064 15621424 2,86 61,50 1008x1008 3449024 71455456 3,39 70,33 80x80x80 1451616 28134656 2,84 54,96 120x120x120 4312512 103038528 2,50 57,85 240 x 240 x 240 39221088 925433712 2,84 66,94 Примечание. Тривиальные умножения иа ±1 и ±j ие подсчитываются. 189
ний в пересчете на отсчет в комбинированном алгоритме зависит от массива ДПФ и остается достаточно малым; например, в ДПФ массива 1008x1008 требуется только 3,39 вещественных умноже- ний на отсчет, т. е. примерно одно комплексное умножение на отсчет. Однако столь же высокая вычислительная сложность полу- чается за счет относительно сложной структуры алгоритма, и сле- довательно, можно ожидать, что для практических целей наиболее полезным окажется первый метод с полиномиальными преобразо- ваниями, длина которых выражается степенями 2. В этом случае число операций 'будет меньше, чем при обычных методах, и струк- тура алгоритма останется простой и сравнимой по сложности со структурой обычного БПФ-алгоритма, основанного на построчно- столбцовом методе. 7.3. СРАВНЕНИЕ С БПФ-АЛГОРИТМОМ Вычисление ДПФ с помощью полиномиальных преоб- разований основано на 'использовании корней из 1 в поле поли- номов. Однако и полиномиальные преобразования можно рас- сматривать как ДПФ, определенное в поле полиномов. Пользуясь алгоритмом из подразд. 7.1.5, ДПФ массива NxN, N=2f, можно вычислить за 2№ умножений на степени W, одного У-точечного полиномиального преобразования, определенного по модулю ^+1, и W 7У-точеч.ных ДПФ. В данном методе умножения на UZ-пг и применяются для преобразования кольца полиномов по модулю zN—1 ,в поле полиномов по модулю z^-f-l, что эквива- лентно построчно-столбцовому методу БПФ, в котором N первых TV-точечных ДПФ заменяются на полиномиальное преобразование. Следовательно, данный алгоритм исключает операции умножения в первых N ДПФ для построчно-столбцового метода, в результате чего получается выигрыш в объеме (№/2)log2TV 'комплексных ум- ножений или 2№log2/V вещественных умножений и №log2TV вещественных сложений; при этом сохраняется простота струк- туры БПФ-алгоритма. Метод, приведенный в подразд. 7.1.2, яв- ляется по существу обобщением данного алгоритма и получается с использованием полной декомпозиции, исключающей умноже- ния на W~n2. Если многомерное ДПФ больших размеров вычислять с при- менением полиномиальных преобразований и гнездовых методов, как в подразд. 7.1.4 и 7.2.1, то полученный алгоритм можно рас- сматривать как обобщение алгоритма Винограда, в котором мно- гомерные ДПФ и корреляции малых размеров, имеющие общие множители в нескольких измерениях, посредством полиномиаль- ных преобразований раскладываются в одномерные ДПФ и кор- реляции. Существенная экономия в вычислениях получается при расчете ДПФ с помощью полиномиальных преобразований. Это можно ви- деть, сравнивая данные табл. 7.1 и 7.7 с показателями вычисли- ло
тельной сложности из табл. 4.5, соответствующей вычислению двумерных ДПФ по БПФ-алгоритму Рейдера—Бреннера построч- но-столбцовым методом. Очевидно, что для ДПФ больших разме- ров число умножений сокращается примерно вдвое, если вычис- ления проводить по первому методу с полиномиальными преобра- зованиями, и примерно вчетверо, если объединить оба метода, использующие полиномиальные преобразования. В обоих случаях число сложений в основном примерно такое же, как в методе БПФ, а иногда и меньше. Сравнение с алгоритмом Винограда преобразования Фурье также свидетельствует в пользу методов, основанных на примене- нии полиномиальных преобразований. Например, при вычислении ДПФ массива 1008x1008 по алгоритму Винограда требуется 6,25 вещественных умножений и 91,61 сложений в пересчете на отсчет. Для вычисления же ДПФ массива 1024X1024 по первому методу с полиномиальными преобразованиями необходимо 7,67 умножений и 54,58 сложений на отсчет, а комбинация двух ме- тодов с полиномиальными преобразованиями дает 3,39 умноже- ний и 70,33 сложений на отсчет для ДПФ массива 1008x1008. 7.4. АЛГОРИТМЫ НЕЧЕТНЫХ ДПФ При использовании полиномиальных преобразований ДПФ представляется в виде одномерных ДПФ, редуцированных ДПФ, корреляций и произведений полиномов. Корреляции и про- изведения полиномов можно вычислять по алгоритму Рейдера (см. разд. 5.2), причем каждое комплексное умножение тогда бу- дет выполняться за два вещественных умножения. Для вычис- ления этих корреляций и произведений полиномов можно вос- пользоваться алгоритмами из подразд. 3.7.1 и 3.7.2, заменив ве- щественные данные на комплексные и перевернув одну из вход- ных последовательностей *>. Соответствующие данные о числе комплексных операций приведены в табл. 3.1 и 3.2. В разд. 5.5 рассматривались алгоритмы малоточечных ДПФ для N=2, 3, 4, 5, 7, 8, 9, 16. Для Af>16, одномерные ДПФ можно вычислять по алгоритму Рейдера—Бреннера (см. разд. 4.3), данные о числе операций для которого сведены в табл. 4.3. Как было показано в разд. 7.1.1, если N простое, то редуци- рованным ДПФ соответствуют (N—1) -точечные корреляции. Сле- довательно, для этих редуцированных ДПФ применимы алгорит- мы из подразд. 3.7.1, которым соответствует табл. 3.1 с числами комплексных операций. Нечетные ДПФ длинных последователь- ностей при M=2Z можно вычислять по алгоритму Рейдера—Брен- нера, как показано в разд. 4.3 (подсчет числа операций приведен в табл. 4.4). 11 Это необходимо для вычисления корреляции по алгоритмам свертки. Прим., перев. 191
Таблица 7.8 Число вещественных операций для комплексных ДПФ и редуцированных ДПФ Значение N Число умно- жений м Число сложе- •ний А 1 Значение N Число умно- жений М Число сложе- ний А дпф 1 Редуцированные ДПФ 2 4(4) 4 3 4(0) 8 3 6(2) 12 4 4(4) 4 4 8(8) 16 5 Ю(0) 30 5 12(2) 34 7 16(0) 68 7 18(2) 72 8 8(4) 20 8 16(12) 52 9 16(0) 56 9 22(2) 88 16 20(4) 64 16 36(16) 148 32 68(20) 212 32 104(36) 424 64 168(40) 552 64 272(76) 1104 128 400(80) 1360 128 672(156) 2720 256 928(160) 3232 256 1600(316) 6464 512 2112(320) 7488 512 3712(636) 14976 1024 4736(640) 17024 1024 8448(1276) 34048 Примечание. В скобках приведено число тривиальных умножений на ±1 и ±j. В подразд. 7.4.1—7.4.4 представлены алгоритмы редуцирован- ных ДПФ для N=4, 8, 9, 16. Эти алгоритмы получены из алго- ритмов малоточечных ДПФ, описанных в разд. 5.6, и вычисляют —О выходных отсчетов у lV-точечных ДПФ, где N=q*. Ре- дуцированные ДПФ определяются как — Че—1)—1 Xfe = 2 xnWnk, l^k^N— 1, n=0 ____ k^O modg, U7 = exp(—j 2л/N), j = pr—1, (7.92) где входная последовательность обозначена хп, выходная —~ Xk, а последние q*~l входных отсчетов равны нулю. Входные и вы- ходные сложения должны выполняться в порядке приведенной нумерации индексов. В табл. 7.8 обобщены данные о числе веще- ственных операций для различных комплексных ДПФ и редуци- рованных ДПФ, используемых как основные составные части в алгоритмах полиномиальных преобразований. 7.4.1. АЛГОРИТМ РЕДУЦИРОВАННОГО ДПФ. N=4 2 комплексных умножения (2), 2 комплексных сложения т0=1-х0, гп! = —j-xi, Xi — mo + mi, X3=m0+mi. 7.4.2. АЛГОРИТМ РЕДУЦИРОВАННОГО ДПФ. N=8 4 комплексных умножения (2), 10 комплексных сложений. и = зт/4 т0=1-х0, mf=(xi—хз)соэи, т2=—}-х2, т3=— j(xi+x3)sinw, 192
Si = fn0 + Hli, s2^ma—m}, s3=m24-ni3, s4=m2—m3l Xi =,S| +s3, X3 = s2—s4> X5 = S2 + S4, X7 = Si—S3. 7.4.3. АЛГОРИТМ РЕДУЦИРОВАННОГО ДПФ. N=9 8 комплексных умножений (0), 28 комплексных сложений. п=2л/9 ^1=Х4 + %5, is —Ха—х$, т0= (хо+хо—х3)/2, т!= [ (2 cos и—cos 2и—cos 4и) /3] (%i—х2), т2— [(cosu + cos2u—2 cos4u)/3] (х2—ti), т3= [cos u—2 cos 2u + cos4u)/3] (^— Aj), m4 =—j x3 sin3u, m3=—j (x1+x2)sin4u, me = —j (x2 + /2) sin 4u, m7=j (*i—Z2)sin2u, s2=m1 + m2 + m0, s3 = —m2 + m3 + m0, s4=—mi—т3 + т0, s3=m4-\-~in3 + m3, «6=—m6 + m7 + m4, s7 =—т3—т7 + т4, Xi = s2 + ss X2=s3—s3, X4~S4 + s7, X3 — s4—s7, X7 = s34-S6, X3=s2—s3. 7.4.4. АЛГОРИТМ РЕДУЦИРОВАННОГО ДПФ. N=I6 10 комплексных умножений (2), 32 комплексных сложения. и=л/8 ^1 = ХС1+Х7, /2 = Х1—Х7, ^3 = Х3-1-Х5, t4 = X3-Х3, то=1-хо, mt= (х2—x6)cos2u, т2= (£2 + /4)cos 3u, т3= (cos u-i-cos 3u)f2, m4— (cos 3u—cos u) f4, f«s=—j%4, m6=—jjx2+x6)sin2u, m7=—j(fi + /3)sin3«, wi8=j (sin 3u—sin u) ti, mg=—j (sin u+sin Su)t3, Sj — 4“ tTlif s2=m0—mi, S3=m3—m2, s4=m4—m2, S3 = Si +s3, S6 = S1—s3, ®7 = S2 + S4, s& = s2—S4, ss=m5 + m6, Sw=m5~- m6, sn = m7 + m8, si2=m7—ms, s10 = S9 + Sn, Sl4 = Sg—S11, S15 = sio + s12> s16='Sio—Si2, X) + S13, X3 = Sg—S16, A5 = S7 + Sie, -^7 = Sg-S14, Xg = S6 + Si4, Xu ='$7—S15, ^13'=S8 + S16, ^15 = S5—S]3. 7 Зак. 522 193
Глава 8 ТЕОРЕТИКО-ЧИСЛОВЫЕ ПРЕОБРАЗОВАНИЯ Большинство методов быстрого вычисления свертки, об- суждавшихся до сих пор, являются по существу алгебраическими, которые могут быть выполнены с арифметикой любого типа. По- кажем, что вычисление свертки может быть значительно упроще- но, если использовать специальную арифметику. В этом случае можно определить теоретико-числовые преобразования (ТЧП), которые имеют структуру, подобную ДПФ, но комплексные экспо- ненциальные корни из единицы заменены на целые корни и все операции определены по модулю целого числа. Эти преобразова- ния обладают свойством цикличности свертки и в некоторых слу- чаях могут вычисляться с использованием только операций сло- жения и умножения на степени 2. Однако в полной мере экономия в вычислениях может быть достигнута лишь тогда, когда ТЧП выполняются с помощью специальных вычислительных средств, эффективно представляющих модулярную арифметику. Ниже будет дано общее определение ТЧП и его два наиболее важных вида — ТЧП Мерсенна и ТЧП Ферма (ТЧПФ). Затем определение ТЧП будет обобщено для введения комплексных пре- образований и псевдопреобразований. В конце будут кратко об- суждены некоторые вопросы по реализации ТЧП и теоретической взаимосвязи ТЧП с полиномиальными преобразованиями. 8.1. ОПРЕДЕЛЕНИЕ ТЕОРЕТИКО-ЧИСЛОВЫХ ПРЕОБРАЗОВАНИЙ Пусть хт и hn — две TV-точечные целые последователь- ности. Наша цель — вычислить TV-точечную циклическую сверт- ку УГ- N-1 У1= j hnxt-n. (8.1) л=0 Во многих практических случаях последовательности hn и хт не являются целыми, но посредством соответствующего масшта- бирования их всегда можно привести к виду последовательности целых чисел. Допустим сначала, что все арифметические операции выполняются по модулю простого числа q, т. е. в поле GF(q). Если hn и хт промасштабированы так, что |t/z| не превышает q/2, то yi будет иметь то же численное значение по модулю, как если бы оно получалось в обычной арифметике. При этих условиях вычисление yi может быть упрощено, если ввести теоретико-числовое преобразование [8.1—8.3], имеющее ту же структуру, что и ДПФ, в котором комплексные экспоненты заменены на степени целого числа g и все операции выполняются по модулю q. Прямое ТЧП последовательности hn, таким обра- зом, имеет вид _ N—1 V hngrik mod?. (8-2) n=0 194
Так как q — простое, N имеет обратное N~l по модулю q, сле- довательно, определено обратное 'преобразование: м-1__ at^N~l S~lk m°d q, (8-3) k=0 где NN~l = 1 mod q. (8.4) Поскольку q простое, g также имеет обратное g-1 по модулю q. Следовательно, понятие g~lh обосновано. Установим условия, которые должны удовлетворяться для пре- образования (8.2), чтобы оно обеспечивало циклическую свертку. Вычисление ТЧП Нк и Хк соответственно от hn и хт, перемноже- ние Нк и Xh и выполнение обратного преобразования сц от НкХк дает N—i N— 1 N— 1 2 hnxm^ g(n+m~i)kmod q. (8.5) n=0 m=0 k—0 Пусть N~1 s=v g<n+m-i)k mod q. (8.6) fe=0 Чтобы ТЧП обеспечивало свертку, выражение (8.5) должно сводиться к (8.1); для этого необходимо, чтобы S=N при t= — п + т—/=0modN и-5^0шри Z=0mod7V. Первое условие озна- чает, что показатели степени g должны быть определены по мо- дулю N, при этом 1 mod#. (8.7) Для /^OmodN выражение (8.6) принимает вид (g*— l)Sssg,vt—1=0 mod <7. (8.8) Из S=0 'вытекает, что gl—1^0 mod q для /^OmodAf. Это подразумевает, что g должны быть корнем порядка N из единицы по модулю q, т. е. g должен быть целым, таким, что N — наи- меньшее ненулевое целое, для которого gN= 1 mod q. Таким об- разом, имеет место теорема существования. Теорема 8.1. ^точечное ТЧП с корнем g, определенное по мо- дулю простого числа q, обеспечивает циклическую свертку, если и только если g является корнем порядка N из единицы по мо- дулю q. Непосредственным следствием этой теоремы является то, что обратное преобразование (8.3) определено обоснованно. Это вид- но из теоремы 8.1, если в качестве хт выбрать последователь- ность, в которой хо=1, Xm=0, т=^0. Теорема 8.1 позволяет также указать размер ТЧП, определен- ного по модулю простого q. Из подразд. 2.1.3 следует, что всегда существуют примитивные корни поряда q—1 по модулю q и что все эти корни имеют порядок N, причем М|(д—1). Кроме^ того, число корней порядка W равно <р(М), где <р(-) —функция Эйлера. Отсюда вытекает теорема. 7* " 195
Теорема 8.2. TV-точечное ТЧП, определенное по модулю прос- того q, существует, если и только если М|(д—1). Это ТЧП обес- печивает циклическую свертку. Таким образом, для любых простых q можно найти значения^ для которых существует ТЧП. Далее ТЧП будет полностью опре- делено при условии, что будет найден корень порядка N. Эти процедуры можно выполнить, используя методы, приведенные в подразд. 2.1.3. 8.1.1. ОБЩИЕ СВОЙСТВА ТЧП Ранее были определены ТЧП по модулю простого числа q. На самом деле число q может быть составным. Чтобы указать усло- вия существования таких ТЧП, определим, как и прежде, класс новых ТЧП по формуле (8.2) и соответствующих им обратных ТЧП —по (8.3) и (8.4). Для того чтобы обратное ТЧП было определено, необходимо существование обратных N~l и g~]. Поскольку q составное, такие обратные существуют, если и только если N и g взаимно-просты с q. Чтобы проверить выполнение свойства цикличности свертки по (8.5) и (8.6), необходимо иметь gw==lmod<7. (8.9) Это условие гарантирует существование обратного g-1, поскольку ggN—i == j moc[ q (8.10) Наконец, условие, соответствующее выражению (8.8), подра- зумевает не только то, что g — корень порядка N по модулю q, но также и то, что [(g*—1), g] = l, поскольку q — составное. Следо- вательно, может быть определена теорема существования. Теорема 8.3. TV-точечное ТЧП с корнем g, определенное по мо- дулю составного целого q, обеспечивает циклическую свертку, ес- ли и только если выполняются следующие условия: gN= 1 mod q, NN-1 = 1 mod q, [(g4— I),*?] = 1, /= 1,..., N— 1. Заметим, что условие [(g‘—1), q] = 1 более сильное, чем то, что g должно быть корнем порядка N по модулю q. Например, в случае д=15 число 2 — корень степени 4 по модулю 15 и все че- тыре степени двойки — 2°, 21, 22, 23 — отличны друг от друга, а 24=1 mod 15. Однако 22—1 = 3 и 3 не является взаимно-простым с 15. На практике условие [(g*—1), q] = l можно заменить условием М-1 S=2 gffe^0mod<7,f= 1,... ,TV— 1. (8.11) Следующая теорема, доказанная Эрдельским [8.4], определяет условия, требуемые для существования ТЧП, которые обеспечи- вали бы циклическую свертку. *> Переводчики и редакторы старались избежать употребления термина длина преобразования применительно к одномерному ДПФ, заменяя его терми- ном JV-точечиое ДПФ, так как термин ДПФ длины N может навести на мысль, что ищется преобразование длины. Применительно к ТЧП удается избежать термина длина ТЧП, под которым понимается длина последовательности, для которой существует данное ТЧП.—Прим ред. 196
Теорема 8.4. TV-точечное ТЧП с корнем g, определенное по мо- дулю составного целого q, обеспечивает циклическую свертку, ес- ли и только если удовлетворяются следующие условия: gN = 1 mod q, NN~1 ss 1 mod q, [(gd—0» 9] — 1 Для каждого целого d, такого, что N/d простое (или эквивалентно 2 mod q для каждого d, такого, что Jk=O N/d— простое). Доказательство теоремы приведено в [8.4]. Рассмотрим самый простой случай составных чисел, который соответствует степени простого числа: 9 = 9?> 91 простое. (8.12) Тогда из условия NN~lss 1 следует, что N должно быть вза- имно-простым с 91. Кроме того, g должно быть тоже взаимно-про- стым с 9Ь поскольку условие ^=lmod9 подразумевает gN^ si mod 9ь Следовательно, для каждого g, взаимно-простого с 9ь по теореме Эйлера (см. теорему 2.3) = j mod 9. (8.13) А так как <р (9) = 9i'r' (9i—1), то ^l(9i-l)- (8.14) Теперь можно доказать теорему, которая устанавливает су- ществование (91—1)-точечного ТПЧ, определенное по модулю 9ir'. Теорема 8.5. Если дано ТЧП, обеспечивающее циклическую (91—1)-точечную свертку с корнем git определенное по модулю 9i. 91 — простое, то всегда существует (91—1)-точечное ТЧП, оп- ределенное по модулю 91Г|. Это ТЧП также обеспечивает цикличе- Г1—1 скую свертку и имеет корень g = gi' Известно, что существование ТЧП, определенного по модулю 91, подразумевает (gi, 91) —1. Тогда по теореме Эйлера g4'~l = gi* <9l-1) === 1 mod 9in. Кроме того, 'поскольку 9i—1 не имеет общих множителей с 91, то 91—1 взаимно-просто с 91 и qlr' и, следовательно, имеет обратное по модулю 9ir‘. Из существова- ния ТЧП, определенного по модулю qi, имеем, что [(g's—1), 9i] = = 1, s=l,... ,9[—2. Таким образом, gsi—1 не кратно 91 и, так как в соответствии с теоремой Ферма (см. теорему 2.4) gi4<=gi mod 91, rt—] то, заменяя gi на получим gsi—l=gi — 1 sg8— — 1 mod 9ь Это означает, что gs—1 не имеет общих множителей с 9i для s=l,... ,91—2. Следовательно, три условия теоремы 8.3 удовлетворяются, что доказывает теорему 8.5. Рассмотрим произвольное составное целое 9, представленное произведением степеней простых чисел: 9 = 9? 9? ...9? ...9?. (8Л5) По китайской теореме об остатках (см. теорему 2.1) N-точеч- ная циклическая свертка по модулю q может быть вычислена по- 197
средством вычисления отдельно Д-точечных сверток по модулю каждого qiri и соответствующего восстановления свертки по моду- лю q из сверток по модулю qfi. Следовательно, lV-точечное ТЧП, обеспечивающее циклическую свертку, будет существовать, если и только если TV-точечные ТЧП существуют по модулю каждого qiri. Теорема 8.5 показывает, что это имеет место, если 7V| (qi—1). Таким образом, N должно делить наибольший общий делитель всех qi—1 и справедлива следующая теорема существования. Теорема 8.6. TV-точечное ТЧП, определенное по модулю q, q= — q\T'... qfi... qere, обеспечивает циклическую свертку, если и толь- ко если ЛПНОД [fo-1), (q2-1), ... , 0.- 1), ..., (q-1)]. (8.16) Эта теорема непосредственно дает максимальную длину преобра- зуемой последовательности, равную НОД .[ 0]—1),... ,0»—1),... ..., (qe—1)]. Следует также отметить, что теорема 8.6 представля- ет простой способ вычисления корней g порядка TV по модулю q. Сначала вычисляются корни gi,i порядка TV по модулю qi мето- дом, изложенным в подразд. 2.1.3. Затем в соответствии с теоре- мой 8.5 получают корни g2, г порядка N по модулю giTt—q2,i = Q, rt~1 = gi,i , a g восстанавливают из величин g2,i по китайской теореме об остатках. Свойство цикличности свертки является наиболее важным свой- ством ТЧП, поскольку оно позволяет непосредственное вычисле- ние свертки заменить вычислением трех ТЧП и /V умножениями в области преобразования. В общем случае ТЧП вычисляются с умножениями на степени целых g и, следовательно, не представ- ляются более простыми, чем ДПФ, если не считать замены комп- лексных экспонент в ДПФ на вещественные целые. Другими сло- вами, вещественные свертки можно вычислять посредством ТЧП с вещественной арифметикой вместо комплексной арифметики для ДПФ. Однако в дальнейшем будет показано, что если выбрать со- ответствующий модуль q, то умножения на степени g заменяются на простые операции сдвига, в результате чего значительно упро- щается вычисление ТЧП. Другое преимущество использования ТЧП вместо БПФ состоит в том, что в этом случае свертки вычис- ляются точно, без ошибок округления. Таким образом, подход, ос- нованный на использовании ТЧП, целесообразно применять для вычислений с высокой точностью. Поскольку ТЧП имеют ту же структуру, что и ДПФ, то ТЧП обладают аналогичными с ними общими свойствами (см. разд. 4.1). Приведем здесь только свойство линейности тчп _ _ {M + KJ « 04} + {XJ. (8.17) тчн _ (8.18) 198
8.2. ПРЕОБРАЗОВАНИЯ МЕРСЕННА Для упрощения вычислений ТЧП желательно, чтобы модули q имели как можно более простое представление. Наилуч- шее в этом смысле число — 9=2 Однако тогда максимальная длина преобразуемой последовательности равна 1, поэтому д=2( не имеет практического смысла. Аналогично, если q — четное, то один из множителей числа q равен степени 2 и вследствие теоре- мы 8.6 максимальная длина преобразуемой последовательности опять равна 1. Следовательно, представляют интерес нечетные q. Указанным требованиям удовлетворяет число q=2p—1, а арифме- тика по модулю 2р—1 известна как арифметика в обратных ко- дах, которая достаточно просто реализуется с помощью обычной двоичной цифровой аппаратуры. Если р — составное, р=р\Р2, ес- ли р\ — простое, то 2Р'—1 является множителем 2р—1 и макси- мальная длина ТЧП не превзойдет максимально возможную дли- ну, соответствующую 2р'—1. Таким образом, для q = 2p—1 наи- больший интерес представляет случай, когда р — простое. Целые вида 2р—1, р — простое, есть числа Мерсенна (см. подразд. 2.1.5), а преобразования, определенные по модулю чисел Мерсенна, на- зываются преобразованиями Мерсенна [8.5]. 8.2.1. ОПРЕДЕЛЕНИЕ ПРЕОБРАЗОВАНИЙ МЕРСЕННА Теорема 8.6 подразумевает существование М-точечного ТЧП, которое обеспечивает циклическую свертку по модулю числа Мер- сенна д=2р—I, р — простое, при условии, что М делит все qt—1, где qfi — множители q. Некоторые из чисел Мерсенна простые. Для этих чисел возможные длины преобразуемых последователь- ностей получаются из условия М| (g—1): М|(2р—2). (8.19) По теореме Ферма (см. теорему 2.4) известно, что 2р—2 делит- ся на )}. Кроме того, очевидно, что 2 является делителем 2р—2. Следовательно, по модулю простых чисел Мерсенна можно опре- делить р- и 2р-точечные ТЧП. Если q — составное, то в силу тео- ремы 2,14 каждый простой множитель д4 составного числа Мерсен- на имеет вид 9/ = 2с4р+1. (8.20) Тогда qi—\=2cip и 2р делит каждое qi—1. Значит, как следу- ет из теоремы 8.6, можно определить р- и 2р-точечные ТЧП также и по модулю составных чисел Мерсенна. Чтобы полностью определить преобразования Мерсенна, необ- ходимо отыскать корни g порядка р и 2р. Для простого q корнем порядка <р является 2, поскольку р первых степеней двойки —1, 2, 22,..., 2₽-1 — отличны друг от друга, а 2р= 1 mod q. Для состав- ного <9 двойка также является корнем порядка р по модулю q, но при этом необходимо, чтобы удовлетворялись два последних ус- ловия теоремы 8.3, а именно, чтобы р имело обратное р_| и р~ I 2 2tfts0mod9 при /^Omodp.
В отношении обратного р~1 заметим, что поскольку р\ (2р—2), то p-i = 2Р— 1 — (2Р— 2)/р mod (2Р— 1). (8.21) Что же касается последнего условия, то так как р — простое, набор показателей степени tk по модулю р в выражении S = p—i = S 2th представляет собой простую перестановку значений k. Следовательно, при /^feOmodp p—i p—i 2 2fft = 2 2Ь = 2р— 1 о mod (2₽— 1). (8.22) k=0 fc=0 Таким образом, можно определить p-точечное преобразование Мерсенна, обладающее свойством цикличности свертки: — p—i Xh = 2 Хт 2тй m°d (2Р—1),р простое, k~ 0, ... ,р—1, (8.23) т=0 и соответствующее ему обратное преобразование Мерсенна p—i _ хт =s р-1 2 2~mk mod (2Р — 1), (8.24) где 2-mft = 2(p-i)«nfe mod(2p—1). (8.25) Циклическая р-тоЧечная свертка вычисляется, как показано на рис. 8.1, с помощью трех преобразований Мерсенна и р умноже- ний в области преобразования. Если одна из входных последова- тельностей, скажем hn, фиксирована, то ее преобразование можно вычислить заранее и объединить с соответствующими об- ратному преобразованию умно- жениями на р-1. Тогда необхо- димо выполнить только два преобразования Мерсенна. По- скольку корни преобразований Мерсенна равны степеням 2, то для каждого преобразования Мерсенна требуется только р(р—1) сложений и (р—1)2 операций сдвига, -а единствен- ные умножения, необходимые для вычисления p-точечной ци- клической свертки, соответст- вуют р умножениям в области преобразования. Следователь- но, применение преобразова- ний Мерсенна может дать зна- чительную экономию в вычи- слениях при получении циклических сверток даже по сравнению с другими эффективными методами, такими, как БПФ. Как отмечалось, можно определить 2р-точечные преобразова- ния Мерсенна. Видно, что —2 является корнем порядка 2р по мо- 200 Рис. 8.1. Вычисление p-точечной цик- лической свертки, определенной по модулю 2р—1, с помощью преобра- зований Мерсенна
дулю числа Мерсенна q=2?—1, поскольку 2р — первые степени —2, а именно: 1, —2, 4,..., (—2)2р-1 — отличаются друг от друга и (—2)2P=lmod<7. Следовательно, для простых q существует 2р- точечное преобразование Мерсенна с корнем —2. Для составных q, поскольку 2р| (2р—2), число 2р имеет обратное (2р)~*: (2р)-1 = 2Р~ 1 — (2Р—2)/2 р mod (2Р— 1). (8.26) Кром'е того,, для составных q можно также показать, что 5= 2/7—1 = 2 (—2)(ftsE=0modg при /= 1,..., 2р— 1. Отметим сначала, что 2р—1 р— 1 если t — четное, то S= S (—2)tk=2 2 (—2)(fes0mod<7 при k=0 k~0 ^0, modp. Для нечетных t и t=£p tk по модулю 2p является прос- той перестановкой, поэтому 2р-1 2p-l 2 (—2)tk = V (~2)* = (—22p —1)/3 = 0 mod^. (8.27) fe=0 fe=0 При t=p S=l—1 + 1—1 ... =0. Итак, для любого числа Мерсенна можно определить 2р-точеч- ное преобразование Мерсенна _ 2р—1 2 xm(—2)mftmod(2p—1) (8.28) /п=0 и соответствующее ему обратное преобразование 2р—1 _ xm = (2p)_1 2 Xft(-2)-^mod(2₽-l), (8.29) fe—0 где (_2)-^ == (— 2)(2р-1)^ mod (2р— 1). (8.30) Приведенные преобразования Мерсенна удвоенной длины так- же вычисляются без умножений. Если 2р—1 простое, то в прин- ципе можно определить преобразования Мерсенна для последова- тельности длиной больше 2р, поскольку максимальная длина по- следовательности 2р—2. Однако максимальное число отличных друг от друга степеней числа —2 в точности равно 2р, так что корни g преобразований последовательностей с большей длиной не будут иметь такое простое представление, как степени 2. Сле- довательно, для преобразований последовательностей с большей длиной требуются операции умножения, значит, использование та- ких преобразований менее выгодно, чем преобразования последо- вательностей длиной р и 2р. Обычно преобразованиями Мерсенна называют лишь р- и 2р-точечные преобразования. 8.2.2. АРИФМЕТИКА ПО МОДУЛЮ ЧИСЕЛ МЕРСЕННА Любое целое число хт, определенное по модулю числа Мерсен- на ^=2г—1, можно представить p-битовым словом: р—1 2 2Z’ е (°’ (8>31) i=0
Представление числа —хт может быть легко получено заменой битов xm,i их дополнением хт,г- Поскольку хт,г+хт,г= 1, то целое хт, полученное описанным способом, таково, что — р—1 Хт+ Хт= 2 2£ = 2₽— 1 =о. (8.32) i=0 Следовательно, —хт=хт. Рассмотрим два целых хт и hn, где хт определено по (8.31), а р—1 hn = 2 hn, 12', hn, t e (0, 1). (8.33) t=0 Если сложить эти два числа, то получится (р+1)-битовое це- лое число сп: . р— 1 Сп = Лп + хп=у сп, i2‘ + cn,p2P, cn,i^(0,l), (8.34) i=0 и, так как 2''=1 mod (2р—1), то р—1 ^п = ^п,р”Р 2 ^п- 1 2*' (8.35) 1=0 Таким образом, сложение по модулю числа Мерсенна выпол- няется достаточно просто с использованием обычного р-разрядно го сумматора, в котором перенос из самого старшего разряда на- правляется к самому младшему. Умножение по модулю 2р—1 целого числа хт на степень 2, 2й, также выполняется достаточно просто. Пусть сп = хп 2й mod (2Р— 1), (8.36) тогда Р—1— d р—1 сп = 2 xm,i2l+d + 2P 2 хт,12‘+а~р i=0 i=p—d (8.37) и, так как 2р==1 mod (2?—1), то р—1 сп~ 2 2‘- (8-38) 1=0 где индекс (j.—d) вычисляется по модулю р. Видно, что умноже- ние на 2й эквивалентно простому циклическому сдвигу р-битового слова на d разрядов влево. Операции умножения общего вида выполняются с помощью рассмотренных операций сложений и сдвига. Бинарное представ- ление, приведенное ранее, допускает двойственное представление числа 0, поскольку хт=0, если все биты хт,г равны ли- бо 0, либо 1. Следовательно, для преобразования результата вычислений по модулю 2₽—1 в обычный вид необходимо преду- смотреть средства для обнаружения ситуации, когда все биты чис- ла хт равны 1, и установки выходного результата в 0.
Таким образом, в случае аппаратурной реализации арифметика по модулю чисел Мерсенна незначительно сложнее обычной ариф- метики, а умножения на степени двойки гораздо проще, чем умно- жения общего вида, используемые в других преобразованиях, та- ких, как ДПФ. Этот факт объясняет, почему для вычисления свер- ток целесообразно вместо БПФ применять ТЧП. 8.2.3. ПРИМЕР ВЫЧИСЛЕНИИ Пусть даны две июследовательности hn и хт длиной 5, для вычисле- ния циклической свертки yi этих последовательностей используем 5-точечное пре- образование Мерсенна, определенное по модулю 25—1. Пусть Ло—1, Л1=3, 7/2=2, /13=2, /i4=,0, (8.39) %о = 3, Xj = 0, хг=2, х3=1, Xi=l. (8.40) Определим 5-точечное преобразование Мерсенна Пн последовательности hn: 4 Hh= 2 hn2nh mod 31; n=0 (8.41) аналогичное выражение верно для преобразования Xk последовательности хт- В матричном виде выражение (8.41) перепишется так: Ят я2 —- 11111 1 3 2 (8.42) 1 2 4 8 16 1 4 16 2 8 я3 1_я4 J 1 8 2 16 4 -1 16 8 4 2- 2 ...0 - Тогда имеем По = 8, Hi=G, П2=Л8, Hs= = 30, Я4==11, (8.43) Хо = 8, Xt е=20, Хг = 22, Х3 = = 0, Xi = 27. (8.44) Перемножив X», и Нк по модулю 31, получим ЙоХо = 2, HtXt = 0, «2^2 = 24, =0, 7/4*4=18. (8.45) Теперь необходимо HkXk умножить на 5~* по модулю 31: 25//0*о ^19 . 25/7^isO, 25Н2Х2 = 11, 25/7з*з=0, 25/74*4 = 16. (8-46) Поскольку 2 *s24mod31, то обратное преобразование Мерсенна равно 4 1/^ 2 25/7лА\2''"' mod 31, (8.47) д=о или в матричном виде Уо “1 1 1 1 г ~19~ У1 1 16 8 4 2 0 Уз = 1 8 2 16 4 11 (8.48) Уз 1 4 16 2 8 0 -У1 _. 1 2 4 8 16 . 16.. Окончательный результат таков: 7/о=15, 1/1= 1'5, 1/2=12, i/3=13, 1/4=9. (8.49) Непосредственное вычисление с помощью обычной арифметики дает тот же ответ. Однако, если входные отсчеты имеют большие значения, то значения не- которых выходных отсчетов свертки окажутси более 30. В этом случае приме- нение преобразования Мерсенна по модулю 31 даст ошибочные результаты. 203 8*
8.3. ПРЕОБРАЗОВАНИЯ ФЕРМА Преобразования Мерсенна обладают рядом свойств, же- лательных при вычислении сверток. На самом деле эти преобразо вания используют легко реализуёмую арифметику и могут вычис- ляться без операций умножения. Основной недостаток преобразо- вания Мерсенна состоит в том, что для него не существует алго- ритма быстрого вычисления, а также в том, что между длиной ма- шинного слова и длиной преобразования имеется жесткая связь. Указанные ограничения возникают ввиду того, что преобразования Мерсенна обеспечивают вычисление свертки с простыми корнями 2 или —2 только для длин последовательностей р и 2р, р — прос- тое. Следовательно, для p-битовых слов на практике можно поль- зоваться только длинами р и 2р. Поскольку р — простое, преобра- зование Мерсенна с длиной р не может вычисляться по алгоритму типа БПФ, а для последовательности с длиной 2р применим быстрый алгоритм только с двумя шагами. Таким обра- зом, для вычисления преобразований Мерсенна при больших дли- нах требуется гораздо больше сложений, чем для БПФ примерно той же длины. Чтобы преодолеть указанные трудности, необходимо попытать- ся подобрать другие модули q. После q=2* и q=2*—1 наиболее простое представление имеет число <7=2®+1, которому также со- ответствует относительно простая арифметика. Если v — нечет- ное, 3 делит 2®+1, поэтому, в силу теоремы 8.6, максимальная длина преобразуемой последовательности не может быть больше чем 3—1=2. Если v — четное, v=s-2t, s — нечетное, то 22<+1 яв- ляется множителем числа 2szZ+l, значит, длина последователь- ности, определенная по модулю 2s2*+ 1, не может превышать дли- ны последовательности, определенной по модулю 22*-;-1. Отсюда следует, что целесообразно в качестве модуля использовать числа Ft=22‘+ 1, которые являются числами Ферма (см. подразд. 2.1.5), а ТЧП, определенные по модулю Ft, называются теоретико-число- выми преобразованиями Ферма (ТЧПФ) [8.5—8.7]. 8.3.1. ОПРЕДЕЛЕНИЕ ПРЕОБРАЗОВАНИЙ ФЕРМА В подразд. 2.1.5 было показано, что первые пять чисел Ферма от /’о до Ft — простые, а остальные составные. Если Ft простое, мак- симальная длина преобразования равна Ft—1=22* и, следователь- но, возможные значения длин N преобразований Ферма находят- ся из условия 7У|22*. Если Ft — составное, то каждый простой мно- житель qi числа Fi имеет вид = Cf 2‘+2 + 1. (8.50) Следовательно, по теореме 8.6 всегда можно определить ^то- чечное преобразование по модулю составного числа Ферма при условии, что W|2*+2. (8-51) Теперь найдем корни этих преобразований. Очевидно, что 2
является корнем порядка 2(+1 по модулю Ft, поскольку 22<=—1, а величины 24 принимают 2(+1 различных значений 1, 2, 22,...,—1, —2,..., 22<-1—1 для i=0, 1, 2,..., 2t+1—1. Это означает, что если Ft — простое, то можно определить ^’-точечные ТЧПФ, N = 2M с корнем 2. Для составных Ft 2 также является корнем порядка 2(+1, но при этом необходимо доказать, что 2t+1 имеет обратное, а 22*—1 взаимно-просто с 22*-;-1 (см. теорему 8.4). Поскольку 22*=1, то обратное 2(+* по модулю Ft, очевидно, равно — Кроме того, 22*—1 = (22*+1)—2. А это означает, что любой дели- тель 22*—1 и 22* -Н должен делить также 2. Следовательно, этот делитель может быть равен только 2, что невозможно, так как 22*—1 и 22* +1 — нечетные. При этих условиях можно определить 2'+1-точечное ТЧПФ, которое обеспечивает циклическую свертку: _ 2*+]—1 Х,,= 5] xm2mkrnod(22t+1), (8.52) т=0 и соответствующее ему обратное ТЧПФ хт = — 22'-'-1 2 Xft2-mftmod(22‘ + 1), (8.53) k=0 где 2-^=— 2(2-1>mftrnod(22Z+ 1). (8.54) Если 2 — корень порядка 2t+1 по модулю Ft, то 22‘—корень порядка 2t+1-i. Значит, определены также 24+1-'-точечные ТЧПФ с корнем 22i. Как было показано, 2(+2-точечные ТЧПФ можно определить и для составных Ft. Поскольку максимальное число отличных друг от друга степеней чисел ±2 по модулю 22<+1 равно 2(+1, то в ка- честве корней для ТЧПФ длиной 2(+2 уже нельзя использовать числа с таким простым представлением, которым обладают степе- ни 2. Заметим, что 2 имеет порядок 21+1, значит, _И2 имеет по- рядок 2‘+2. Кроме того, в кольце чисел Ферма К2 можно запи- сать простым выражением: 1Л2 = 21!/4(21'/2—1) mod(2u4-l), v = 2‘ (8.55) Следовательно, ТЧПФ имеют длины, равные степеням 2, и мо- гут быть вычислены с использованием только операций сложения и умножения на степени 2 для длин до N=2t+2. ТЧПФ с большей длиной по модулю простых чисел Ферма в принципе могут быть определены, однако в этом случае корни не будут иметь простого представления и в вычислениях появятся умножения общего ви- да. Очевидно, что для практических задач интерес представляют ТЧПФ с максимальной длиной, равной 2‘+2. ТЧПФ выглядят предпочтительнее, чем преобразования Мер- сенна, по нескольким причинам. Во-первых, ТЧПФ допускают большую гибкость в выборе длины преобразования в зависимости 205
от длины машинного слова, чем преобразования Мерсенна. Во- вторых, длина ТЧПФ выражается составным числом с большим количеством множителей. А это дает возможность вычислять ТЧПФ с уменьшенным числом сложений, используя алгоритм ти- па БПФ tio основанию 2. К примеру, первый шаг алгоритма с прореживанием по времени для ТЧПФ длиной 2(+] из (8.52) вы- глядит так: _ Л'/2—1 W/2—1 Хк = 2 x2m22mk + 2k 2 x2m+I 22mfemod/7/, (8.56) m=0 m=0 __ N/2— 1 N/2—1 Xk+N/2^ Ё X2m^mk-2k S x2m+12^kmodFt. (8.57) m=0 m=0 Таким образом, структура вычислений ТЧПФ аналогична структуре обычного БПФ, но умножения на комплексные экспо- ненты заменены простыми операциями сдвига. Это значит, что для вычисления TV-точечного ТЧПФ требуется /Vlog2/V веществен- ных сложений и (/V/2)log2A сдвигов. 8.3.2. АРИФМЕТИКА ПО МОДУЛЮ ЧИСЕЛ ФЕРМА Любое целое число хт, определенное по модулю числа Ферма Ft = 2v->r 1, v = 2‘, представимо (п+1)-битовым словом: Г—1 ~ 2 ’1 »v 9 1’ i=0 xm,i хт,ъ = 0 при v. (8.58) Поскольку xm^2v, то xmv равно 1, только если все хт,, равны 0 при i<v. Операцию отрицания можно выполнить посредством до- полнения всех битов Хт,г ЧИСЛЯ Хт, ЗЯ ИСКЛЮЧеНИеМ Xm1V. Следовя- тельно, если m,v преобрязуется отдельно, то _ V— 1 Хт+ Хт = 2l = 2V— 1 , «=о —xm = хт + 2, xm_v = 0, (8.59) —хт=1, xm,v=l. (8.60) Значит, операция отрицания требует выполнения сложения, до- полнения, а также некоторых вспомогательных операций, необхо- димых при Хт,г,= 1. При сложении двух чисел — хт и hn — результат сп= 2 сп ti2i + cn,v2v + cn,v+i2y+l (8-61) »=о не может быть более 2г’+1, а так как 2V=—1 и cn,v+i = l только При Сп,г = 0, 1 = 0,..., v, то D--1 п Сп= 2 сп, t2l—Cn,D,Gi.t>+i = 0, (8.62) i=0 Сп^—2, сп, „+, = 1. (8.63)
Если умножить целое число хт на 2d, то для хт.г, = 0 получим сп = d^,i2Z+d + 2° 5 xm,i2t+d-v , (8.64) j—0 i^v—d а так как 2Г= — 1, то cn = °2 dxm,f2f+d— §* xma2i+d~'>, xm,v = 0. (8.65) i=0 i=v—d Для xm,»=l имеем cn=—2d,xm,v = 1. (8.66) Следовательно, арифметика по модулю числа Ферма немногим сложнее, чем арифметика по модулю числа Мерсенна. Однако ре- ализацию можно существенно упростить, если воспользоваться не- которыми методами кодирования данных [8.8 — 8.10]. В одном из этих методов входная последовательность хт сначала преобразу- ется в новую последовательность: am = 2v—xm (8.67) или, если ввести целые хт, полученные из хт за счет дополнения v младших значащих битов хт,г- От -= хт + 1 + Xm,v 2V, (8.68) откуда видно, что перекодированные отсчеты ат получены прос- тым дополнением v младших значащих битов числа хт и прибав- лением 1 К Xm + Xm,v2v. Итак, с использованием описанного метода входные данные кодируются один раз до вычисления преобразования, затем все операции выполняются над этой перекодированной последова- тельностью, после чего производится декодирование окончательно- го результата, основанное на выражении (8.68). Покажем, что арифметика по модулю чисел Ферма с перекодированными дан- ными гораздо проще, чем с отсчетами исходной последовательно- сти. Рассмотрим операцию отрицания. Если Gm,r=l, то хт=0 и ни- каких действий не требуется. Если ат,к=0, то процедура допол- нения дает. ат = 2к— 1— ат, (8.69) или в силу выражений (8.67) и —l=2r: ат = 2°+хт, (8.70) Тогда, сравнивая это соотношение с (8.67), можно сделать заклю- чение, что йт является перекодированным представлением числа —хт. Следовательно, операция отрицания над перекодированны- ми отсчетами выполняется с помощью простого дополнения, за ис- 207
ключением случая am,v=l. Если а™ и Ьт— перекодированные ве- личины двух целых хт и hm, то сумма ат и Ьт равна V— 1 cm = £ Cm,i2l + cm,v2^ ’ (8.71) 1=0 причем cm = 2v+i —Хт—hn. (8.72) Перекодированная величина dm суммы xm-\-hn определяется как dm = 2°—хт—hn. (8.73) Следовательно, 0—1 dm = cm—2"= 2 Cm,i 2*4- l—Cm.v, (8.74) 1=0 откуда вытекает, что сложение перекодированных чисел выполня- ется с помощью обычного сумматора, но перенос из самого стар- шего разряда после выполнения над ними операции дополнения посылается в самый младший разряд сумматора. Если один или оба бита am,v и Ьт,„ равны нулю, то один или оба операнда хт и hn равны нулю. В этом случае никакие действия не выполняются. Анализируя рассмотренный алгоритм сложения, нетрудно по- казать, что умножение на 2d для перекодированных чисел соответ- ствует простому циклическому сдвигу п-битового слова на d раз- рядов влево с последующим выполнением операции дополнения над значением п-го разряда переполнения. Если am,v=l, то хт=0 и инверсия бита переполнения не производится. Представленный алгоритм для умножения на 2 иллюстрируется на рис. 8.2. Таким образом, перекодировка данных приводит к использо- ванию арифметики в обратных кодах с той разницей, что бит пе- Рис. 8.2. Схема умножения на 2 в перекодированной системе по модулю чисел Ферма 208
реполнения перед пересылкой в младший разряд инвертируется и что должны быть предусмотрены аппаратурные средства для вы- деления ситуаций, соответствующих нулевым входным операндам. Для представленного подхода арифметика по модулю чисел Фер- ма немногим сложнее, чем арифметика по модулю чисел Мерсен- на. 8.3.3. ВЫЧИСЛЕНИЕ КОМПЛЕКСНЫХ СВЕРТОК С ПОМОЩЬЮ ТЧПФ Рассмотрим комплексную свертку yi-\-\yi, определенную по мо- дулю 2V+1: „ W-1 yi + ]yi = ^i + + mod (2“ 4-1), п—О j= K=l,/ = O, ... ,N— 1, (8.75) где hn, хт и yi обозначают вещественные части входных и выход- ных данных, а Ип, хт и yi —• соответствующие мнимые части. Обыч- но эту комплексную свертку вычисляют посредством получения четырех вещественных сверток: N—1 N—1 „ „ У/hnxL-n— S hnx^n mod (2°-|- 1), (8.76) л=0 п—О У1 = ^ hnxl-n+ 2 hnXi-n mod (2° 4-1). (8.77) n=0 n—О Покажем, что вычисление yi~\-\yi можно выполнить с помощью только двух вещественных сверток, воспользовавшись специаль- ным свойством для j= V—1 в определенных кольцах целых чи- сел ,[8.11, 8.12]. В кольце целых по модулю 2г+1, v — четное, 2V= — 1, так что j= V—1 соответствует 2г/2. Тогда yi+jyi вычис- ляется с помощью двух вещественных вспомогательных сверток аг и bt: ЛГ-1 at У; (hn 4- 2°/2 hn) (xt_n 4- 2^ х^п) mod (2* 4- 1); (8.78) п—0 /V-I 2 (hn—-2vI2 hn) (Xl-n-2^ Х[_п) mod (2*4- 1) . (8-79) n=0 Поскольку 2V= — 1, to yt = (at 4- bt)/2 mod (2° 4- 1), (8.80) yl=—2v/2(al — bl)/2 mod(2v4- 1). (8.81) Следовательно, данный метод обеспечивает вычисление цикли- ческой свертки посредством ТЧПФ с двумя умножениями на один комплексный отсчет вместо четырех в обычном случае. 209
8.4. ОГРАНИЧЕНИЯ, СВЯЗАННЫЕ С ДЛИНОЙ МАШИННОГО СЛОВА И ДЛИНОЙ ПРЕОБРАЗОВАНИЯ Если свертка выполняется посредством ТЧП, то все вы- числения производятся над последовательностями целых чисел и отсчеты свертки получаются по модулю q без ошибок округления. Этим ТЧП выгодно отличается от других методов, когда необхо- дима высокая точность, однако это же обстоятельство может вы- двинуть определенные требования к относительно большой длине машинного слова, чтобы гарантировать, что результат останется в пределах диапазона модуля. Для анализа указанных ограничений допустим, что входные последовательности хп и hn — целые. Вы- ходная последовательность обычной свертки Уп=-Ип*хп. (8.82) Выходная последовательность уп той же свертки, вычисленной по модулю q, будет равна уп, если 1уп1<9/2- (8.83) Для Л'-точечной циклической свертки это условие выполняет- ся, если l^rJmax |Хп1тах <С <Д2 А/, (8.84) т. е. разрядность исходных входных данных не должна превосхо- дить половину длины разрядной сетки, соответствующей модулям q. Более точная граница амплитуд входных сигналов может быть определена с помощью нормы L,. [8.13]: / 1 Л'~1 11х|1г= 4-2 1хпГ)Чг)Г>1. (8.85) \ N ^--0 Ограничения на амплитуду уп накладываются так: |£п1<лчи1г11/1||8, (8.86) 1/?-+ l/s = l,r,s> 1. (8.87) Эти границы предпочтительнее, чем (8.84), особенно если цик- лические свертки используются для вычисления, апериодических сверток по методу перекрытия с суммированием, когда обе вход- ные последовательности дополняются нулями. Таким образом, если свертки вычисляются посредством ТЧП, единственным источником шума квантования являются масштаби- рование и округление входных данных, проводимые для предот- вращения переполнения [8.14]. При этом отношение сигнал-шум (ОСШ) на выходе практически не зависит от длины N свертки и возрастает на 3 дБ при увеличении длины машинного слова на 1 бит. Для сравнения, если свертка вычисляется с помощью БПФ при фиксированной длине слова, необходимо учитывать, что шум округления возникает при вычислении БПФ, а ОСШ возрастает 210
примерно на 6 дБ при введении одного дополнительного бита и уменьшается приблизительно на 2 дБ при удвоении длины сверт- ки. Видно, что при фиксированной длине машинного слова для сверток большой длины вычисления с помощью ТЧП вносят мень- ший шум, чем вычисления на основе БПФ. Например, для 12-би- товых слов фильтрация с применением ТЧП обеспечивает лучшее ОСШ по сравнению с БПФ-фильтрацией при N>32. Ввиду этого ТЧП целесообразно использовать при вычислении длинных сверток. Однако для модуля q максимальное число от- личных друг от друга степеней числа ±2 равно 2[ logs <7, а= = | log2 q, где а наименьшее целое, такое, что аlog2 q. Следова- тельно, ТЧП, вычисляемым без операций умножения, свойственна жесткая связь между длиной машинного слова и максимальной длиной свертки, причем длинным сверткам соответствует большая длина машинного слова, несмотря на то, что такая длина может обеспечивать требуемую точность с большим запасом. Одно из решений этой проблемы заключается в вычислении одновременно сверток у\,п и z/2,n двух последовательных блоков. Пусть, например, hn — фиксированная входная последователь- ность положительных целых, a Xi?n и %2,п — Два последовательных блока положительных целых, тогда две Мточечные свертки z/i,n и у2,п можно вычислить за один шаг: xn = Xi,n + 2e х2,п, (8.88) Уп = * хп mod q, (8.89) У\,п = «/„mod 2% • (8.90) //2,n = 2f(i/n —«/!.„), (8.91) где е=(Г log2<7)/2. (8.92) С помощью этого метода длина преобразования для данной точности удваивается, и при условии, что |*Л,п|, |Уг,п| < ( 'V<?)/2, переполнений не возникнет. Другой способ вычисления длинных сверток посредством ТЧП с приемлемой длиной машинного слова основан на представлении одномерной JV-точечной свертки в виде многомерной с помощью одного из методов, описанных в гл. 3. Например, если N равно произведению d различных чисел Мерсенна N2,... ,N<r- N= = NiN2 ... Nd, то W-точечную свертку с помощью алгоритма Агар- вала— Кули можно превратить в d-мерную свертку массива N}X XN2X ... XNd (см. подразд. 3.3.1). Это всегда можно сделать, по- скольку все числа Мерсенна взаимно-просты (см. теорему 2.15). Тогда короткие свертки вычисляются посредством преобразований Мерсенна, определенных по модулям Nit N2,..., Nd, а отсчеты свертки yi получаются без переполнений, если |yi | <М/2, где Ni — наименьшее из чисел Мерсенна. 211
8.5. ПСЕВДОПРЕОБРАЗОВАНИЯ Как отмечалось, преобразования Мерсенна, определен- ные по модулю 2*1—1, р— простое, и ТЧПФ, определенные по мо- дулю 22 *-]-1, можно использовать для вычисления сверток. Оба этих преобразования вычисляются без умножений, но имеют серь- езные ограничения, связанные с невозможностью применения для преобразований Мерсенна алгоритмов типа БПФ и с проблемами реализации .арифметики по модулю 22* +1 для ТЧПФ. Примене- ние в качестве модуля чисел, отличных от чисел Мерсенна и Фер- ма, проблематично из-за трудностей реализации соответствующей арифметики. Однако в дальнейшем будет показано, как эти труд- ности можно преодолеть, определив ТЧП по модулю целых qi, ко- торые являются делителями псевдочисел Мерсенна q, q=2p—1, р— составное, или псевдочисел Ферма q, q=2v+\, ц#=2‘. В обоих случаях q является составным числом и его можно записать в ви- де произведения двух сомножителей: q = ?2- (8.93) Тогда, если можно определить М-точечное ТЧП по модулю <72, обеспечивающее циклическую свертку, то это ТЧП вычисляет N- точечную свертку yi по формуле .V—1 !/i = 2 h» х‘~” mod (8-94) ч—О Трудность выполнения арифметических операций по модулю q2 можно преодолеть, используя тот факт, что <72 — множитель q. В этом случае свертка yi вычисляется по модулю q, а окончатель- ный результат приводится по модулю q2: [N-l \ yi 2 hnxi-nmod ч. mod (8-95) \ п=0 / В указанном методе [8.15, 8.16], если q — псевдочисло Мерсен- на, все операции, кроме конечного приведения, выполняются в арифметике обратных кодов. Но за такую возможность приходит- ся платить тем, что вычисления по модулю 2^—1 производятся с машинными словами длиной, большей, чем требуется для конеч- ного ответа. Однако связанные с этим дополнительные затраты не- велики, если «71 мало, и с ними вполне можно мириться, посколь- ку за их счет снимается требование простоты числа р. 8.5.1. ПСЕВДОПРЕОБРАЗОВАНИЯ МЕРСЕННА Рассмотрим псевдопреобразования Мерсенна, определенные по модулю <7=2?—!, р-—составное. Для четных р <7= (2г92—1)(2г,/2+ + 1)- поэтому длина преобразования не может быть больше дли- ны, возможной для 242—1. Следовательно, представляют интерес случаи, соответствующие нечетным р. В дальнейшем будем поль- зоваться теоремой, доказанной Эрдельским [8.4]. 212
Теорема 8.7. Пусть даны простое число pi и целые и и gK, та- кие, что |g|^2, g^lmodpi, тогда TV-точечное ТЧП, М = = pui, с корнем g обеспечивает циклическую свертку. Это ТЧП определено по модулю q2= (g 1 — l)/(g 1 —1). Для доказательства теоремы необходимо установить справед- ливость трех условий, вытекающих из теоремы 8.4: gw=lmod<72, (8.96) NN~l =mod<72, (8.97) (gp*“—1), <72= 1. (8.98) Справедливость выражения (8.96) следует непосредственно из и того факта, что gzv=lmod(g₽i —1), если q2 является множите- ри лем (g 1—1).Для подтверждения выражения (8.97) используется теорема Ферма: gPi = g mod pt. (8.99) Тогда, возводя обе части этого уравнения в pi-ю степень и и и—1 р“-1 раз, получим соответственно g 1 =g7V=gmod/?i и g * s =gmod/?|. Поскольку g^l mod pt, to g2=gmodpi. Следователь- но, (pi, q2) = 1 и (N, <72) = 1, откуда вытекает, что N имеет обрат- ное по модулю <72- Для доказательства выражения (8.98) заметим, что ₽“-* (р1-1)р1“-1 <72=1 + g' +... + g (8.100) или р“-1 (Р1-3)ри~1 ?2 = (g‘ — Dig * 4-2g 1 +- + <71—1] + P1 , (8.101) pU— 1 откуда получаем, что g 1 —1 взаимно-просто с <72, если 1 [( g 1 —-1), р]] = 1. Последнее выражение справедливо, посколь- и— 1 ку g « =g mod pi и g^lmodpi. Таким образом, доказано со- отношение (8.98) и вся теорема в целом. Теперь на основании теоремы 8.7 можно получить два класса псевдопреобразований Мерсенна. Первому из них соответствуют g~2 и и=2. Тогда псевдопреобразование Мерсенна определяется по модулю <72 и имеет длину 7V = p2i, где pi — простое, и р2 <72 = (2 1 — l)/(2Pi—1). (8.102) С помощью этого псевдопреобразования вычисления выполня- 2 ются по модулю <7, q— 2 * —1, над р21-битовыми словами, а окон- чательный результат приводится по модулю <72, чему соответству- ет (p2i—pi)-битовое слово. Следовательно, р21-точечная цикличе- 213
ская свертка по модулю ( 2₽> —1)/(2^'—1) вычисляется, как по- казано на рис. 8.3, посредством псевдопреобразования Мерсенна р2-1 р2 V xm2mftmod<2 * —D (8.103) т=0 с аналогичным определением для преобразования Hh от hn и об- ратного преобразования. Рис. 8.3. Вычисление циклической свертки по модулю (2р2'—1)/(2р>—1) с помо- щью псевдопреобразования Мерсенна, определенного по модулю 2р2>—1; pi — простое Другой класс псевдопреобразований Мерсенна получается из теоремы 8.7, если положить «=1, g = 2*’2 и р=р\р2- В этом случае псевдопреобразования Мерсенна имеют длину N=pit р\ — простое, и определены по модулю <72, где ?2 = (2Р1Р2 — 1)/(2₽г— 1). (8.104) Вычисления производятся по модулю 2р'Р*—1 над /7|Д2-битовы- ми словами, а конечный результат представляется по модулю (2г’,Рг—1)/(2р!—1), для чего требуется приблизительно Рг(р|— —1) бит. В табл. 8.1 приведены параметры различных псевдопреобразо- ваний Мерсенна, определенных по модулю 2?|—1, р — нечетное. Наиболее интересны преобразования, длина которых выражается составным числом, а полезная длина машинного слова близка к р. Так, особый практический интерес представляет преобразование последовательности с длиной 49, определенное по модулю 249—I,
поскольку для его вычисления пригоден двухшаговый алгоритм типа БПФ, а эффективная длина машинного слова лишь на 15°/ короче длины, соответствующей вычислениям. Таблица 8.1 Параметры различных псевдопреобразований Мерсенна, определенных по модулю 2р—1, и сверток, определенных по модулю дг, дг — множитель 2₽—1 р Разложение числа 2^ — 1 на простые множители Модули <72 Длина после- довательно- сти N '.Корень g Эффективная длниа слова в битах 15 7-31.151 (216—1)/7 5 23 12 21 72-127-337 (221—1)/49 7 23 15 25 31-601-1801 (22Б—1)/31 25 2 20 27 7-73-262657 (227—1)/511 27 2 18 35 31-71-127-122921 (236—1)/3937 35 2 23 35 31-71-127-122921 (2ЗБ—1)/127 5 27 28 35 31-71-127-122921 (236—1)/31 7 2Б 30 45 7-31-73-151-631-23311 (2«_1)/511 5 29 36 49 127-4432676798593 (2«—1)/127 7 27 42 49 127-4432676798593 (2й—1)/127 49 2 42 8.5.2. ПСЕВДО-ТЧПФ Псевдопреобразования Ферма определены по модулю q, q— = 2” 4-1, и=7^2‘. Для дальнейшего рассмотрения этого вопроса бу- дет полезна еще одна теорема, доказанная Эрдельским [8.4]. Теорема 8.8. Для данных нечетного простого целого щ и двух целых и и g, таких, что g^2, N-точечное ТЧП, N=2vut, с корнем g обеспечивает циклическую свертку. Это ТЧП определе- но по модулю g2 = (g”1 + l)/(gP' + 1)- Для доказательства теоремы необходимо показать, что три ус- ловия, вытекающие из теоремы 8.4, выполняются, а именно: gN= 1 mod </2» (8.105) NN-1 =mod q2, < (8.106) vu fe 1-|)>?2=lwfe2"1 — (8.107) Поскольку gV1 =~ 1 mod (g’'1 4-1), то g^^lmod (g 1 4-1) и, следовательно, gA = lmod</2, так как <72 — множитель числа g”'4-l. Для проверки соотношения (8.106) воспользуемся теоре- мой Ферма: g^iE^gmodup (8.108) vi — Отсюда с помощью возведения в степень получим g — =g mod Vi. Следовательно, </2== 1 mod щ, так как g=^= 1 mod щ. Значит, (щ, <72) = 1 и (N, 1172) = 1 при условии, что <72 нечетное. 215
Если g — четное, то, очевидно, <72 — нечетное. Если g — нечетное, то <?2 = (gV‘ —2g(K,-3)l,“ ' + ... +(и,— 1)] + иъ (8.109) откуда следует, что <72 — нечетное, поскольку Vi — нечетное. Сле- довательно, (N, <?2) = 1 и N имеет обратное по модулю q%. vu Покажем, что выражение (g 1 —1), <72=1 из (8.107) выполня- ется; действительно, из равенства vu vu g > —1 =g > + 1—2 = <72(g 1 +1) —2 (8.110) vu получаем (g 1 —1, <72) = (<72, 2), а поскольку <72 — нечетное, то (Z1 —(8.111) 2о“—1 Для доказательства соотношения (g 1 —1), <72=1 заметим, что 2о“—1 о"—1 V и- 1 в силу g 1 —1( g 1 + 1 X (g 1 —1), оно соответствует соот- v“-1 ношениям (g 1 +1), <72 = 1 и (g 1 —1), <72=1. Условие (8.110) о“— „«-I подразумевает, что (g 1 —1), <72=1, поскольку (g 1 — 1)— Vй множитель g 1 —1. Из выражения (8.109) также вытекает . vu~l г"-1 (g 1 +l)-<?2 = (g 1 (8.112) и— 1 и-~\ а так как g=—1 mod th и gD* ssg mod th, то (g°> +1), <72=1, что полностью доказывает теорему. На основании теоремы 8.8, положив g=2, и=1 и П]#=3, для вычисления циклической свертки можно определить Af-точечное ТЧП, N=2vx, по модулю <72, <72= (2”> + 1 )/3. Таблица 8.2 Параметры различных псевдопреобразований Ферма, определенных по модулю 2V4-1, и сверток, определенных по модулю qz qz — множитель 2®'+1; v — четное V Разложение числа 2®+1 иа простые множители Модули ^2 Длина после- довательно- сти IV Корень g Эффективная длина слова в битах 20 17-61681 (220-1-1)/17 40 2 16 22 5-397-2113 (222+1)/5 44 2 19 24 97-257-672 (221+1),257 48 2 16 26 5-53-157-1613 (2гв+1)/5 52 2 24 28 17-15790321 (2-8+1)/17 56 2 24 34 5-136-953-26317 (2Н 11'5 68 2 32 38 5-229-457-525313 (2’« ; и 5 76 2 36 40 257-4278255361 (24°+1) 257 80 2 32 44 17-353-2931542417 (24«+1) 17 88 2 40 46 5-277-1013-1657-30269 (2“+1)/5 92 2 44
Таблица 8.3 Параметры различных псевдопреобразований Ферма, определенных по модулю 2V + 1, и сверток, определенных по модулю q2 q2 — множитель 2®+1; v — нечетное V Разложение числа 2®+1 на простые множители Модули <72 Длина после- довательно- сти N Корень g Эффективная длина слова в битах 15 32-11-331 (215+1)/9 10 23 12 21 32-43-5419 (221+1)/9 14 23 18 25 3-11-251-4051 (225+1)/33 50 2 20 27 ЗМ9-87211 (227+1)/1539 54 2 16 29 3-59-3033169 (229+1)/3 58 2 27 33 32-67-683-20857 (2зз+1)/9 22 23 30 35 3-11-43-281-86171 (235+1)/33 14 25 30 41 3-83-8831418697 (2«+1)/3 82 2 39 45 З3-И-19-331-18837001 (2«+1)/513 10 Z9 36 49 3-43-4363953127297 (2«+1)7129 98 2 41 Аналогично, при н = 2 и g = 2 имеем /V-точечное ТЧП, N=2v2t, v2 определенное по модулю q2, <72= (2 1 -!- 1)/(2и> + 1). Систематическое применение теорем 8.7 и 8.8 дает большое число псевдопреобразований Ферма. Основные характеристики не- которых из них обобщены для четных и нечетных v соответствен- но в табл. 8.2 и 8.3. Как видно, существует большой набор псевдо- преобразований Ферма, длина которых выражается составным числом. Это в свою очередь дает большую свободу в выборе дли- ны машинного слова, наиболее близкой к заданной, и снимает ог- раничение, присущее ТЧПФ, заключающееся в том, что длина сло- ва должна быть равна степени 2. Аналогичный метод псевдопреобразований может применяться для модулей, отличных от 2?—1 и 2V+ 1; случаи, соответствующие модулям 22р—2^+1, обсуждаются в [8.17]. Эти модули являются множителями 26?’—1, поэтому 6р — точечное ТЧП с корнем 2 мож- но определить по модулю некоторых множителей 22р—2?+1. Итак, если свертка вычисляется с помощью псевдопреобразо- ваний, то вычисления производятся по модулю <7, а окончательный ответ приводится по модулю <72, где <7=<71172. Поскольку q2.<q, то можно обнаружить условия переполнения с помощью простого сравнения результатов вычислений по модулю q и значений отсче- тов свертки, определенных по модулю q2 [8.18]. 8.6. КОМПЛЕКСНЫЕ ТЧП Рассмотрим комплексное целое x+jx, где х и х опреде- лены в поле GF(q) целых по модулю простого <7. Следовательно, х и х могут принимать любое значение из интервала от 0 до q—1. Пусть также /= V—1 не принадлежит GF(q)-, это означает, что — 1 есть квадратичный невычет по модулю q. Тогда гауссовские целые вида x+jx аналогичны обычным комплексным числам, при- чем с вещественными и мнимыми частями можно оперировать 9 Зак 522 217
раздельно, а операции сложения и умножения определяются сле- дующим образом: (Xl-H*l) + (*2 + j *2)=*1 + *2 + П*1+ х2), (8.113) (х± +j Л) (Хг + )*2)=--Ч*2—-4X2 + j (х1х2 + х1х2). (8.114) Поскольку каждое целое х и х может принимать q различных значений, то гауссовские целые x+jx принимают <у2 различных значений и принадлежат полю расширения GF(q2). Так как x+jx принадлежит конечному полю, то последовательные степени х + +jx, данные как (x+jx)n, n=0, 1, 2, ..., образуют последователь- ность с периодом N, вследствие чего в GF(<y2) можно определить корни порядка N. Чтобы определить допустимые значения поряд- ков корней, заметим, что е (X + j х)’ - 2 ck xi i4-1’’ (8.115) 1=0 где С‘ц — биномиальные коэффициенты, Поскольку эти коэффициенты целые, i! (q—i)! должно делить q\ Однако t! (q—i)! не может делить q, так как q — простое. Сле- довательно, i!(<y—i)! делит (<?—1)! при i#=0, q и выражение (8.115) преобразуется к виду (х + jx)«=sx« + jex° mod q, (8.117) откуда, в силу теоремы Ферма, (x-f- j х)ч = х + j4 xmod q. (8.118) Если x+j’x возвести в q-ю степень, то получим (х +j х)«2 === х +р2 х mod <у. (8.119) Так как p2=j при <у2=1 mod 4, то в этом случае получим (х-ф j х)в2 == х + j х mod q. (8.120) Это означает, что когда q2=-1 mod 4, то для любого корня поряд- ка /V в GF(q2) должно выполняться условие 2V|(g2—1). (8.121) Диофантово уравнение (/2=lmod4 имеет только два решения: (?1 = lmod4 и <у2=3mod4. Однако j не принадлежит GF(qj. По- этому — 1 должно быть квадратичным невычетом по модулю q и, следовательно, (—!/<?) =— Ь где (——символ Лежандра. Следствие теоремы 2.11 таково: (— l/q) = (— 1)«г-')/2. (8.122)
Отсюда <7^3 mod 4. (8.123) Это условие справедливо для преобразований по модулю 2₽___1 включая собственно числа Мерсенна и псевдочисла Мерсенна, по- скольку q=2p—1=—1 = 3 mod 4. (8.124) Если имеется обычное p-точечное преобразование Мерсенна с корнем 2, то можно определить комплексные 4р- и 8р-точечные преобразования Мерсенна, заменив вещественный корень 2 на комплексные корни g\ и gz- gi = 2j, (8.125) g2—2(l+j). (8.126) Поскольку р нечетное простое, то gi4p=lmod<7 и g/v= = 1 mod q, a gin и gzn принимают соответственно 4р и 8р отлич- ных друг от друга значений при п=0,..., 4р—1 и и=0,..., 8р—1. Следовательно, можно определить комплексные 4р- и 8р-точечные преобразования Мерсенна, которые обеспечивают циклическую свертку [8.12, 8.15]: _ 4р—1 v xm(2j)mfemod(2₽-l) , (8.127) т=0 — —1 = S (1 + j)m* mod(2p—-1). (8.128) m=0 Преимущество указанных комплексных преобразований Мер- сенна над соответствующими вещественными преобразованиями заключается в том, что для одной и той же длины машинного сло- ва длина преобразования увеличивается до 4р и 8р вместо 2р и что эти преобразования могут быть вычислены с помощью трех- шагового алгоритма типа БПФ без операций умножения. Аналогичный подход применим и для псевдопреобразований Мерсенна, определенных по модулю 2р—1, р нечетное [8.15] и псевдопреобразований Ферма, определенных по модулю 2И+ 1, v нечетное [8.16]. Комплексные преобразования Мерсенна представ- ляют особый интерес ввиду того, что они могут быть реализованы посредством арифметики в обратных кодах, а максимальная дли- на этих преобразований и больше по величине, и содержит боль- ше множителей в своем представлении, что способствует приме- нению эффективных алгоритмов типа БПФ. Например, для преоб- разования по модулю 249—1 действия выполняются с 49-битовыми словами, а конечный результат представляется 42 битами. Макси- мальная длина этого преобразования равна 392, и для вычислений можно использовать алгоритмы типа БПФ по основанию 2 (3 ша- га) и по основанию 7 (2 шага). Рид и Труонг исследовали общий случай комплексных преоб- разований Мерсенна [8.19, 8.20]. Они показали, что комплексные
преобразования, которые обеспечивают циклическую свертку, мож- но определить по модулю q, q — 2p—Ь, р — простое, любой длины N, такой, что М| (q2—1). Следовательно, 7VI2P+1 (2р-‘— 1). (8.129) Для М-точечных преобразований, М=2*’+1, корни представляют- ся как g = a + jb, (8.130) где a=s=±22P-2 mod (2Р—1), (8.131) Z>s±(—3)2₽-2 mod (2^—1). (8.132) В таком случае получаются преобразования относительно боль- шой длины, для реализации которых используются арифметика в обратных кодах и алгоритм типа БПФ по основанию 2. К сожале- нию, корни уже не имеют простого представления и в вычислениях требуются умножения общего вида. 8.7. СРАВНЕНИЕ С БПФ Как видно, для вычисления сверток существует доста- точно большой выбор ТЧП. С точки зрения числа арифметических операций наиболее привлекательны ТЧП, которые вычисляются без умножений посредством алгоритма типа БПФ и при заданной дли- не машинного слова допускают максимально возможные длины преобразований. В практических задачах этим требованиям пол- нее удовлетворяют ТЧПФ и комплексные преобразования по моду- лю псевдочисел Мерсенна [8.21]. Максимальные длины преобразуемых последователей в кото- рых отсутствуют операции умножения, равны 128 для ТЧПФ по модулю 23l2+1 с 32-битовыми словами и 392 для комплексных псевдо преобразований Мерсенна по модулю 249—1 с эффективной длиной слова 42 бита. Следовательно, ТЧП наиболее пригодны для вычисления сверток последовательностей короткой и средней длины на ЭВМ, для которых операция умножения требует значи- тельно больше времени, чем операция сложения, при условии, что требуется высокая точность. Особо интересно применение ТЧП для обработки специфических данных, например таких, как фазо- вые углы, которые в силу своей природы определены по модулю некоторого целого. В этом случае нет необходимости для предот- вращения переполнения масштабировать входные данные; входные и выходные последовательности определены с одним и тем же числом битов. Во всех других случаях во избежание переполнения входная последовательность масштабируется и число битов, соответствую- щее входным данным, должно быть менее половины числа битов для выходных. Тогда для получения точного ответа при примене- нии ТЧП приходится использовать слова, длина которых пример-
но вдвое больше, чем при других методах. Однако для веществен- ных сверток ТЧП используют вещественную, а не комплексную арифметику, как для БПФ, так что аппаратурные затраты прибли- зительно одинаковы. Сравнение БПФ и ТЧПФ обсуждалось в [8.7]. Было показано, что свертки длиной от 32 до 2048 отсчетов с помощью ТЧПФ при длине слова 32 бита вычисляются пример- но в 2—4 раза быстрее на ЭВМ IBM 370/155, чем посредством эффективных программ БПФ. При этом свертки длиной более 128 вычислялись с помощью двумерных ТЧПФ. Интересен вопрос, касающийся аналогии теоретико-числовых преобразований с дискретными преобразованиями Фурье. ТЧП оп- ределяются с корнями g из единицы порядка N по модулю целого qt тогда как ДПФ определяются с комплексными корнями W из единицы порядка N в поле комплексных чисел. Следовательно, ТЧП можно представить как ДПФ, определенные в кольце чисел по модулю q. Кроме того, ТЧП можно также представить как частный случай полиномиальных преобразований, в которых би- товые слова рассматриваются как полиномы. Это особенно очевид- но для 2*+1-точечных полиномиальных преобразований, определен- ных по модулю z2t+l. Такие преобразования вычисляют 2*+1-то- чечную циклическую свертку, компонентами которой являются по- линомы с 2* коэффициентами. Если 2*+> входных полиномов опре- делены как 2*-битовые слова, то полиномиальное преобразование сводится к 2‘+1-точечным ТЧПФ по модулю 22* +1 с корнем 2. Таким образом, полиномиальные преобразования и ТЧП являются ДПФ, определенными в конечных полях и кольцах, элементами которых являются полиномы или целые. Основное их преимущест- во по сравнению с ДПФ состоит в том, что в конечных полях или кольцах можно определить корни из единицы, которые имеют простое представление, а это позволяет исключить из вычислений операции умножения и комплексную арифметику заменить вещест- венной. ПРИЛОЖЕНИЕ А. СВЯЗЬ МЕЖДУ АЛГОРИТМАМИ ВЫЧИСЛЕНИЯ ДПФ И СВЕРТКИ, ОСНОВАННЫМИ НА ПОЛИНОМИАЛЬНЫХ ПРЕОБРАЗОВАНИЯХ " В этом приложении приводится алгоритм вычисления многомерного ДПФ, использующий обратное полиномиальное преобразование (ОПП). Кроме того, показано, что алгоритмы вычисления многомерной свертки, рассмотренные в гл. 6, представляют собой комбинацию этого алгоритма и алгоритмов приве- денных ДПФ из гл. 7. Это приводит к появлению новых алгоритмов для много- мерных сверток, основанных на других комбинациях полиномиальных ДПФ-ал- горитмов, имеющих простую структуру и малую вычислительную сложность. Наконец, описывается алгоритм вычисления многомерного косинусного преобра- зования на основе обратного полиномиального преобразования.
А.1. ВЫЧИСЛЕНИЕ МНОГОМЕРНЫХ ДПФ С ПОМОЩЬЮ АЛГОРИТМОВ, ИСПОЛЬЗУЮЩИХ ОБРАТНОЕ ПОЛИНОМИАЛЬНОЕ ПРЕОБРАЗОВАНИЕ Рассмотрим двумерное ДПФ Xhl,k2 массива М—1 М,-1 xkl,ks = 2 2 nt=0 п2=0 Wzi = exp(— j зт/А\), 1^2= exp (—j л/А2), j = ~\/—1, ^=0,..., JVj—1, k2=0,..., П2 — 1. (А.1) Это двумерное ДПФ может быть вычислено одним из полиномиальных алго- ритмов, рассмотренных в гл. 7. Покажем теперь, что это ДПФ можно вычислить полиномиальным алгоритмом, подобным алгоритмам из гл. 7, но в котором все операции выполняются в обратном порядке и прямое полиномиальное преобразо- вание (ППП) заменено на обратное. А.1.1. АЛГОРИТМ, ИСПОЛЬЗУЮЩИЙ ОБРАТНОЕ ПОЛИНОМИАЛЬНОЕ ПРЕОБРАЗОВАНИЕ При описании полиномиального алгоритма будем применять модифи- цированные кольца полиномов [4.1, 4J2], как в подразд. 7.1.5. Пусть Ai = 2;i и A2=2'г. Перепишем сначала (А.1) следующим образом Xkt. k2 = «Г*2 2 ’ ’ *П1, n2 W/?"1 kl } k2 (A.2) rtt=0 rt2=0 Так как 2лг+1 — нечетное число и tit определено ото модулю 2Н, по пере- становка (2П2+1)П1 mod А\ содержит все значения ги. Учитывая эту переста- новку, получим Aftl, k2 = ’ 2 * *(2„l+1) щ, „2 (2"2+1) ”* \ (A.3) rtt=0 n2—0 Вычисление Xkl,k2 начнем с вычисления Ni нечетных ЛУ2-точечных ДПФ: = 2 ^(2„г+1) П1, „Л22П,+1> 1,2 <А‘4) п2— 0 NiN2 выходных отсчетов Xnt,k2 представляются в виде многочленов степени №-1: Л'2—1 Г М2—1 ХП1 & =2 2 ^(2п2+1) п2. П2 И2"2+1) k‘ fe2=о |_ п2—о (А.5) Покажем, что умножение Хп (z) на Ц72(2Пг'^1)йэквивалентно умножению по модулю гк2 +1 многочлена Хп (г) на z~d. Умножение Хп, (z) на z~d дает А2-1 z~4Xni(z)^ У] n2—1 "| V x ц/(2«2+1) k2 jtz—d, ft2=0 n2—1 z~dXni(z)= 2 rt2=0 r7v2-i 4 VI H7<2ft2 + O (ks+d) 2^2 _L 4J x(2n2+l)n1, n2 z । -—-d _n2=0 (А.6) 222
d-1 ГЛ’,-1 ] г У У х iw(2n2+D (й+^+ЛМ ,fe2+W2 2-1 I 2-1 x(2n24-l) nt, п2 "2 2 2‘ (А.7) kz~ о L «2=о Так как WzNz ~—1 и zN2 =—1 mod (zNs +1), то zd ХП1 (г) 5= *ХП1 (z) mod (2N‘ + 1). (А.8) Если Xni (z) вычислено, то вычисляется умножением Xnt (?) на уу2 (2 га2-|-1 )nlk1 ЛГ,—1 ХЙ1(?)=Г^ 3 Xni(2) . (А.9) nt=0 Равенство (А.8) означает, что умножение на М^2”2"*-1 >n*fe* равносильно ум- ножению на z~2nik\N2/N\ mod (zK54-1. Следовательно, (А.9) можно переписать в виде Л\-1 Xkt (z)= У] ХП1 (z) z~2n* ktNz/N1mod (zNs + 1), (A. 10) n1=0 (АЯ1) fc2=o Выражение (A. 10) представляет обратное Ni-точечное полиномиальное пре- образование, корни которого являются степенями ?, если Следова- тельно, обратное полиномиальное преобразование вычисляется без умножений, если 2A2>A’i. Таким образом, ДПФ массива NiXNz можно вычислить по схеме, представленной на рис. А.1. При этом входной массив переупорядочивается, за- тем выполняются Ni нечетных Аг-точечных ДПФ, одно обратное полиномиаль- ное преобразование последовательности длиной ЛД и наконец, AjA2 выходных умножений на ИД-*! - Легко видеть, что эта процедура вполне аналогична той. что применялась при вычислении прямого полиномиального преобразования (см. рис. 7.4), за исключением того, что обращен порядок операций и прямое поли- номиальное преобразование заменено на обратное. Следовательно, вычислитель- ная сложность ОПП-алгоритма такая же, как у ППП-алгоритма. Рис. А.1. Вычисление ДПФ массива МхАД с помощью обратного полиномиаль- ного преобразования Используя общий подход, описанный в разд. 7.1, легко показать, что про- цедура вычисления разлагается на две части, из которых одна соответствует чет- ным, а другая — нечетным пг. Метод частичной декомпозиции уменьшает число пост-умножений на до AjA2/2 и, кроме того, замещает ОПП по модулю ?кг+1 и Ai нечетных А2-точечных ДПФ на два Л'2/2-точечных ОПП. Пост-ум- ножения на могут быть устранены посредством полной декомпозиции, по- добной той, что представлена на рис. 7.2. При этом все операции выполняются 223
в обратном, по сравнению с рис. 7.2, порядке, полиномиальное преобразование заменяется на обратное и нечетно-частотные ДПФ заменяются нечетно-времен- ными ДПФ. Аналогично, обратное полиномиальное преобразование может быть обобщено до многомерного ДПФ при наличии общих множителей по крайней мере в двух размерностях. ОПП-алгоритм не дает особых преимуществ по сравнению с ППП-алгорит- мом, так как оба имеют одинаковую вычислительную сложность. Однако, как мы покажем, ОПП-алгоритм менее чувствителен к ошибкам ок- ругления и оба алгоритма в комбинации дают новые простые по структуре и ма- лотрудоемкие алгоритмы. Но сначала рассмотрим ППП-алгоритмы в кольцах многочленов по модулю zw+j и по модулю zN—j. А.1.2. КОМПЛЕКСНЫЕ ПП-АЛГОРИТМЫ В предыдущем разделе показано, что ДПФ массива /АХ-Аг, где А^1=2г1И N2=2f2, можно вычислить с помощью обратного ^-точечного полино- миального преобразования, определенного по модулю zNi 4-1. Это преобразова- ние вычисляется без умножений, если 2№»./Vi. В противном случае 2Ai>A2 и можно поменять ролями строки и столбцы. Однако, если условия 2Nt^N2 и выполняются одновременно, т. е. вычисляем ДПФ 'массивов 2Д'хА, AXA или АХ2А, то алгоритм можно реализовать либо /А-точечным ОПП, опреде- ленным по модулю zNi+l, либо Аг-точечным ОПП — по модулю aw'+l. В пер- вом случае ДПФ преобразуется в Nt нечетно-временных Аг-точечных ДПФ, тогда как во втором случае — в N2 нечетно-временных .Ai-точечных ДПФ, Ясно, что нужно выбрать алгоритм с наименьшим N для полиномиального преобразования с тем, чтобы уменьшить длину N нечетно-временных ДПФ. Покажем теперь, что условие 2N2^Ni может быть ослаблено до 4N2^Nt использованием комплекс- ного полиномиального преобразования, которое также .можно вычислить без умножений [А.2] и которое преобразует ДПФ более эффективно, чем вещест- венные полиномиальные преобразования. Проиллюстрируем это для случая ДПФ массива АХ4А, вычисляемого с помощью ОПП-алгоритма. Пусть N—21, W7 = ехр (— j2n/4Af)> ]=1/— Ь 4W—1 N— 1 ^„А2 = 2 2 ^n1.n^ntk‘^4nikl’ nt=0 n2=0 ^ = 0... , 4N — 1, £2 = 0.........N— 1- (A.12) Вводя пост-умножения на и используя перестановку (4и24-1)«2, ДПФ можно определить в виде 4N— 1 ff~ 1 ^.,к,= ^*2 2 x(4n2+l)n1.n!W(4n‘+1)''‘>' (A.13) n1=0 nz—0 Начнем вычисление с вычисления 4N нечетных A-точечных ДПФ, пред- ставляя выходные отсчеты 4N полиномами степени N—1: N—1 / Д'—1 \ 2 2 fe2=0 \л2=0 > (А.14)
Так как IF л’ — j, то умножение ХП1 (?) на z-d по модулю zN—j эквивалент- но умножению Xnjz) на ЦЖщЛ-Ш и fe.no думается изАДх) по (А.15), (А.16): 4N—1 Xki(z)^ 5 (z) mod (z* — j), (А.15) ЛГ—1 __ **.(*) = S хк. k^k2^ <АЛ6) fe2=0 где (А.15) определяет обратное полиномиальное преобразование по модулю zN—j. Процедура вычисления изображена на рис. А.2. Вычисление ОПП из (А.15) выполняется с полиномиальными сложениями и умножениями на степе- ни z по модулю zN—j. Так как эти умножения являются просто полиномиаль- Рис. А.2. Вычисление ДПФ массива NX4N с помощью комплексного обратного полиномиального преобразования ными сдвигами с умножениями на j в случае переполнения, то ОПП по моду- лю zN—j не требует нетривиальных умножений. Легко показать [А.2], что если нечетные ДПФ вычисляются обычным БПФ-алгаритмом по основанию 2, в ко- тором тривиальные умножения на ±1 и ±j в первых двух шагах не учитыва- ются, то комплексный ПП-алгоритм вычисляет ДПФ массива АХ4А с 8A2(2+lpg2A) вещественными умножениями и 4A2(6+51og2A) (Вещественными сложениями. Если используется алгоритм с вещественным полиномиальным пре- образованием, описанным в предыдущем разделе, то ДПФ массива АХ4А пре- образуется в N нечетных 4А-точечных ДПФ посредством A-точечного полино- миального преобразования, определенного по модулю z4w+l. В этом случае ДПФ массива АХ4А вычисляется с 8№(4+log2A) вещественными умножения- ми и 4A2(84-51og2A) вещественными сложениями. Таким образом, использова- ние комплексного 4А-точечного полиномиального преобразования вместо веще- ственного A-точечного полиномиального преобразования экономит 16А2 веще- ственных умножений н 8А2 вещественных сложений. Комплексное полиномиальное преобразование может быть использовано аналогичным образом для алгоритма прямого полиномиального преобразования и в методе частичной или полной декомпозиции. А. 1.3. АНАЛИЗ ОШИБКИ ОКРУГЛЕНИЯ Если двумерное ДПФ массива А,ХАг вычисляется ППП- или ОПП-алгоритмом с полной декомпозицией, как на рис. 7.2, то процесс вычис- ления аналогичен построчно-столбцовой процедуре, в которой ДПФ строк и столбцов заменены полиномиальными преобразованиями. Следовательно, ана- лиз ошибки округления может быть проведен так же, как <в подразд. 4.2.4, для log2 Ai+loga А2 шагов декомпозиции БПФ. Однако, поскольку полиномиаль- ные преобразования выполняются лишь с тривиальными умножениями, то 225
ошибки округления связаны лишь с операциями сложения. Это значит, что об- щая ошибка, порождаемая полиномиальным алгоритмом, меньше, чем в случае построчно-столбцевого метода. Анализ ошибки округления метода неподвиж- ной точки проведен в [А.2]. Можно показать, что ОПП-алгоритм менее чувст- вителен к округлениям, чем ППП-алгоритм. Это объясняется тем, что при вы- числении ДПФ методом неподвижной точки первые шаги алгоритма дают от- носительно меньший вклад в общую погрешность округления из-за операций масштабирования на каждом шаге. Поэтому с точки зрения ошибки округле- ния выгоднее переместить полиномиальное преобразование в конец алгоритма, как это имеет место в ОПП-алгоритме. В случае ДПФ массива NxN, N=2{, и больших значений N анализ показывает, что отношение о (ошибки)/^ (сигна- ла) примерно в 1,7 раза меньше при ОПП-.алгоритме, чем при построчно- столбцовом. А.2. ВЫЧИСЛЕНИЕ МНОГОМЕРНОЙ СВЕРТКИ С ПОМОЩЬЮ КОМБИНАЦИИ МЕТОДОВ ПРЯМОГО И ОБРАТНОГО ПОЛИНОМИАЛЬНОГО ПРЕОБРАЗОВАНИЯ Рассмотрим процедуру вычисления двумерной циклической сверт- ки массива А^Х№: A'i—1 n2—1 Vu и = У У „ X,. „ „ „ . (A..17) nt=0 n2—0 Для простоты изложения ограничимся случаем A'i=24 А2=2!2, хотя предла- гаемый метод годится для любых циклических сверток, имеющих общие множи- тели по крайней мере в двух размерностях. Циклическую свертку (А.17) можно вычислить, используя двумерные ДПФ •Аъ,,/г2и Hhl,k2 входных последовательностей xmt,m2 и hni,n2. При этом уи2,ч2 получается с помощью обратного ДПФ произведений Xk2,k2 Fh,,k2. Посколь- ку двумерные преобразования ДПФ массива Ni'X.Nz и двумерное обратное пре- образование массива Д^ХАг имеют общие множители в обеих размерностях, то их вычисление можно упростить, если использовать полиномиальный алго- ритм, т. е. алгоритм основанный на полиномиальном преобразовании. В дальнейшем покажем, что использование различных комбинаций полиномиальных алгоритмов для вычисления .прямых и обратных ДПФ позволяет получить ряд полиномиаль- ных алгоритмов вычисления сверток. Начнем с обсуждения связи полиномиаль- ных алгоритмов свертки с полиномиальными алгоритмами ДПФ. А.2.1. ВЫЧИСЛЕНЫ^ CStPidk ПОЛИНОМИАЛЬНЫМИ АЛГОРИТМАМИ ДПФ Предположим, что двумерная циклическая свертка массива AjXAs вычисляется двумя ДПФ массива N^Nz и одним обратным ДПФ массива A'iX^. При этом ДПФ вычисляются алгоритмами с прямыми полиномиальны- ми преобразованиями (см. подразд. 7.1.5), а обратное ДПФ вычисляется алго- ритмом ДПФ с обратным полиномиальным преобразованием (см. подразц. А.1.1.). При этих условиях выходные отсчеты H(2k2+i)k1,k2преобразования по- следовательности hni,n2 получаются согласно выражениям Нп (г) = п ^2Пггп\ (А-18) га2=0 226
н (2кг+1) fe, И = 5 НП, (г) г2"1 ** Л'2/Л'1 mod (z^ + 1), (А. 19) Ht—О ^(2A2-f-l) ft,. k2 s ^(2/г2+1) k2 (z) mod (z — W^*2+1 )f (A.20) где IP71 = exp(—jn/Aj), BZ2=exp(—jn/N2). Аналогичные выражения подключа- ются и для ДПФ X(2fex+i Jfej.fej последовательности xTO11m2 . Вычислим теперь обратное ДПФ произведений Hhi,k2 Xkl,k2c помощью обратного полиноми- ального преобразования из подразд. А.1.1: Ykt (z) — 2j S n n H(2k2+i) k2, k2 x(2k2+i) k2, h2 Га <2ftl+1> "2 «2—0 Lfe2=0 /vi iV2 Nt— 1 Уи (z) == 2 Yk (z) z~2tl‘ kl mod (zN* + 1), fex=o z"2, (A.21) (A.22) Yu2 И = S Ущ, u2 W2Ui z"2- (A.23) u2=0 Поскольку выходные- перестановки строк и столбцов в (А.20) идентичные входным перестановкам строк и столбцов в (А.2|1), то они могут игнориро- ваться. Таким образом, свертка массива вычисляется с 2Nty.N2 умно- жениями на 1^2“”2 и W2~m2, с двумя полиномиальными преобразованиями по модулю zNz -f-1, 2N} нечетно-частотными Д2-точечными ДПФ, NiN2 умножени- ями, Л’, Л^г-точечяыми нечетно-временными ДПФ, обратным полиномиальным преобразованием и NtN2 умножениями на Wu2. Легко видеть, что этот алго- ритм вычисления свертки аналогичен методу, описанному в разд. 6.5 и изоб- раженному на рис. 6.6. Единственное отличие этих двух методов состоит в том, что полиномиальные произведения в алгоритме, описанном выше, вычис- ляются нечетными ДПФ. Легко показать, что и другие методы вычисления сверток, основанные на полиномиальных преобразованиях и описанные в гл. 6, получаются из полино- миальных ДПФ-алгоритмов. Покажем теперь, что использование полиномиаль- ных алгоритмов прямого и обратного ДПФ приводит к новым методам вычис- ления сверток, которые обладают интересными свойствами. А.2.2. АЛГОРИТМЫ ВЫЧИСЛЕНИЯ СВЕРТОК, ОСНОВАННЫЕ НА ПОЛИНОМИАЛЬНЫХ ПРЕОБРАЗОВАНИЯХ И ПЕРЕСТАНОВКАХ В предыдущем разделе двумерные свертки вычислялись с помощью ДПФ-алгоритмов, основанных на прямых и. обратных полиномиальных преобра- зованиях. Выбор прямого полиномиального преобразования для прямого ДПФ и обратного полиномиального преобразования для обратного ДПФ совершенно произволен, и -можно было бы выбрать любое из двух полиномиальных преоб- разований для вычисления двумерных прямых и обратных ДПФ. Далее, любой алгоритм вычисления ДПФ может использовать полиномиальные преобразова- ния, определенные либо на столбцах, либо на строках массивов данных. Это приводит к большому числу возможных алгоритмов вычисления сверток. По- кажем теперь, что пред-умножения и пост-умножения в алгоритме из преды- дущего раздела можно заменить на простые перестановки, если прямые ДПФ 227
вычисляются с помощью обратных полиномиальных преобразований, а обрат- ное ДПФ-посредством прямого полиномиального преобразования. В этом слу- чае ДПФ входной последовательности хт1,т, вычисляется как в подразд. А. 1.1: W2—1 rw2—1 (z) = У У X,Q ... Ц7(2т2+1) ьг k2 m, ' / ,XJ Z_ (2m2-pi) mt, m2 w * ’ Ar£=0 L m2—0 W,-l Xki & 2 Xmt (z) z-2m* * N>'N> mod (zN> + 1), mt—Xi (A.24) (A.25) n2—i _ ^2 =2 Ч.*21Г2гА *2=0 №Д = ехр(— jn/ЛД), 1Г2==ехр( — jn/lV2), *1 = 0,..., Nt— I, *2 = 0,..., N2—\. ИА.26) Аналогичные соотношения выполняются и для ДПФ l4kl,k., входной после- довательности hni,n2. Используя метод прямого полиномиального преобразова- ния для обратного (AGXWz)-точечного ДПФ произведения Hhl,k2 АД ^получаем г». ">=X * *• (А-27) У (2«а+1) «. (z) = s" (z) z2“* fc* N‘/N' mod (zN> + 1), (A.28) *j=0 ^(2uj+1)u1,«2 = K(2Us+1)Ki (z) mod(z — U/g2^1). (A.29) Поскольку пост-умножения на в (A.26) и предумножения на в (А.27) взаимно сокращаются, то двумерная сверт- ка массива Ni'XN-z может быть вычислена так, как показано на рис. АЗ Если по- следовательность hni,n2 фиксирована, то ДПФ Hhi.k,, может быть вычислено зара- нее и умножения на степени ИД устра- няются. Алгоритм замещает эти умноже- ния соответствующими перестановками. Так как перестановки могут быть выполнены с помощью поразрядных перестановок в ДПФ, их стоимость меньше, чем стои- мость вспомогательных умножений, и по- тому этот метод более быстрый, чем ме- тод, описанный в предыдущем разделе. Рис. 4.3. Вычисление двумерной цикличес- кой свертки посредством полиномиальных преобразований и перестановок
А.З. ВЫЧИСЛЕНИЕ МНОГОМЕРНЫХ ДИСКРЕТНЫХ КОСИНУСНЫХ ПРЕОБРАЗОВАНИИ С ПОМОЩЬЮ ПОЛИНОМИАЛЬНЫХ ПРЕОБРАЗОВАНИИ Многомерные дискретные косинусные преобразования (ДКП) обыч- но используются при сжатии данных. В этом разделе покажем, что вычисления многомерных ДКП упрощаются, если применяются прямые и обратные поли- номиальные преобразования. А.3.1. ВЫЧИСЛЕНИЕ ПРЯМЫХ МНОГОМЕРНЫХ ДКП Двумерное ДКП Хь2,к2 последовательности х„,,и2 с МХАг эле- ментами задается выражением М-1 М-1 Xfe1,fc2=4S Ё xn,,n2cos nt=0 nz~l fc1 = 0,. Ах— 1, ft2==0,..., A2—1, л (2nx + 1) 2M COS it kz (2пг -[- 1) 2A2 (А.ЗО) где xn, ,n2 может быть вещественной или комплексной последовательностью. В дальнейшем будем считать A)=2Ji и Аг—24 На первом шаге .используем слегка модифицированную версию метода, из- ложенного в [АД], для преобразования (7ViXA2)-точечного ДКП в (МХАг)- точечное ДПФ. Это может быть сделано введением вспомогательной последо- вательности Уп2.п2, которая получается из хП1.п2 следующим образом: x2nt, 2п2> 0^гп1<А1/2, 0^п2<А2/2, п2 х2М—2«1—1. 2п2> А1/2^п1<А1, 0г^П2 <А2/2, х2п1, 2М—2«2—1> 0^пх<А/2, (А2/2) ^л2<А2, Х2М—2«1—1. 2М—2«г—1 > (Ах/2) лх < Ах, (А2/2) =^и2 <А2. (А.31) Теперь вычислим нечетно-временное ДПФ yk k последовательности Уп^п2- М-1 М-1 = S УП1,пг ^In‘ks пх=0 п2~0 ^х = ехр( —j2n/4Ax), W2 = ехр (—j л/4А2) - (А-32) ДКП Xkltk2 получается из согласно следующим простым выражени- ям: ^o.o = 4,o- ^.k2 = 2(yO.k2 + iyo.N2-k2)> Ъ*0’ (A-34) 0 = 2^fe,. o+j^M—*1. o)’ *15* °- (A.35) Эти выражения легко проверить подстановкой Уk2,k2 из (А-32) в (А.ЗЗ) (А.35). Наиболее трудная часть процедуры нахождения Xki ki состоит в вычи- слении у^ h . Вычисление у^ ,k2 сильно упрощается, если использовать обрат- ное полиномиальное преобразование [А.4]. Для этого сначала выполняются пе- 229
рестановка (4«i+il)n2 mod N2 элементов двумерного массива и N2 нечетных ДПФ по строкам: Уп2 & = 2 ’ Г 2 ’ УП1. (4n1+l) п, И4",+1) ki fet=0 [_n1=0 (А 36) После этого У/11,ьг получается с помощью обратного полиномиального пре- образования Ws-i Yk, <г> — 2 Yn2 (2) 2“4"2 k* N1/N‘ lnod (z7V* — j)’ (A.37) n2—0 (A.38) fe.=0 Схема процедуры вычисления представлена на рис. А.4. Если 4Wi^A^2> то обратное полиномиальное преобразование выполняется без умножений и этот метод для больших ДКП экономит около 50% умножений и 15% сложений по сравнению с обычным построчно-столбцовом методом. Рис. А.4. Вычисление двумерного ДКП с помощью обратного полиномиального преобразования А.3.2. ВЫЧИСЛЕНИЕ ОБРАТНЫХ МНОГОМЕРНЫХ ДКП Обратное ДКП входной последовательности Xkl,k2 определяется выражением ] А\-1 п1,п2 = л/ 2 2 Л1Л2 fe.=0 fe2=0 vkt.k2 cos [л (2n1 -[- 1) I |~ л (2na -|~ 1) k2 L 2Л\ J L 2tfa Xkt, k2, *1> *2 5й 0, v0,0 = X0.0^’ Vkt. 0 = Xk2.0 /2> vo, *г = xo, kj%- (A.39) Обратное ДКП вычисляется посредством процедуры, аналогичной опи- санной в предыдущем разделе. Сначала вычисляется обратное нечетное ДПФ Vn,,«2 вспомогательной последовательности Yh2,k2, где yki,k2==Xkl,k2 — iXNt-ki,k2~iXkt,N2-ks, — XNl~kt. N2-k2’ *i.*s*°, (А.40) го, о = *о, о. (А-41) ^,Л1 = Ао.Л2-^О,.^.’ (А42) ^,.0 = 4,0-^-^,О- *1*0, . (А.43) =---у у F. . wrk^k‘WTin^W^h>. (А.44) fe1=0 fe2=0
Легко показать, подставляя (А.40) - (А.43) в (А.44), что выходные отсчеты дкп xnt, п2 получаются из yni_ следующим образом: х2пг, 2п2~ УП1, nj^' nlt п2 = 0,... ,N/2—1, x2nt—1 , 2ns ~ VNt—nt, n.J^' x2n1, 2n2— 1 Уп2, Nг—nJ Х2П2—1 , 2пг—1 = У.М2~П1, N^—nJ4' (А.45) Вычисление нечетного по частоте ДПФ у п может быть упрощено с по- мощью прямого полиномиального преобразования: 1 Л'2-1 Ч<г) = Т 2 yki.k2wTki^> (А.46) 4 к2=0 Nt—1 У(4п2+1)П2^= 5 Vftt (z) г4п‘**л'г/л'> mod (гл'2 — j), (А.47) kt-=o г/(4«2+1)щ, щ (г) mod (z- W'7<4^+1>). (А.48) Это показывает, что так как при 4A2^Ai полиномиальное преобразование вычисляется без умножений, то единственными умножениями, требуемыми при вычислении двумерного ДКП, являются NiN2 умножений на Wi~hi и умноже- ния, соответствующие Nt нечетным А2-точечным ДПФ, определенные в (А.47). ПРИЛОЖЕНИЕ Б. АЛГОРИТМЫ ВЫЧИСЛЕНИЯ ПРОИЗВЕДЕНИЙ КОРОТКИХ ПОЛИНОМОВ Это приложение дополняет множество алгоритмов из разд. 3.7 алгоритмами, вычисляющими произведение полиномов по модулю z4+l и по модулю (zs—l)/(z—1) за 7 умножений. Приводятся также алгоритмы произ- ведения двумерных полиномов, определенных по модулю (z21-J-z1-]-1) (zs2— —1)/(Z2—1), по модулю (Z41 + 1) (zM-Zs+l) и по модулю (z2i+l)(z52—1)/ /(z2—1). Как и в разд. 3.7, входные последовательности обозначаются через А'ш, hn для одномерных полиномиальных произведений и xmi,m21 ЛИ1,п2для двумерных полиномиальных произведений. Так как hn и hKi,n2 предполагают- ся фиксированными, то выражения, содержащие hn и hni,n2, считаются вычи- сленными заранее и запомненными. Выходной последовательностью для одно- мерных'полиномиальных произведений является yi, для двумерных yit,l2- Вход- ные и выходные сложения вычисляются в порядке возрастания индексов. Б.1. ПРОИЗВЕДЕНИЕ ПОЛИНОМОВ ПО МОДУЛЮ z4+l 7 умножений, 41 сложение Оо=А'о+^2, fi7 = Xi+«5, 01 = %14~Л-з, 0!8 = Хо + -^о + -^1, G-2~X2~\~X2, Cl9~Cls~^~Cls-^X2f fi3 = 6Z2+&2, + + «4=%з + -^3, = fib = fi4 + fi*,' 0512 = %0, 05б==А5о+^з, 0513 = ^3, 0514 = О!о +051, 0515 = fio—Д1, 0516 = 05в +fill, 0517 = 056—fill, 0518 = 0510,
bo — (36 о—106i + 562+663)/4, 61= (106o—56i—662+ 363)/2, b2 — (6©—961—462+263)/6, Ьз— (360+76i-—1262+663)/18, 64 = (—36o+4fti+3A2)/72, 65 = (—560+562—463)/120, 6e=(56i—З63)/9О, mh=cih+izbii, 6=0, ио=те + т6, Ill = 11о + Ио, и2—т2 + т3+и1, u3=mi + m5, и1=(из + из)+2и3, Уо — mo+uz+us+ut, у i — —mt + Us + us—ms, 6, Us=—т2 + тз. Us ——m^ + ms, U7 = Us+U6, Us = (u7+117) +21/7, y2—1—u2—U4+U0, Уз=и5+и7—ut. Б.2. ПРОИЗВЕДЕНИЕ ПОЛИНОМОВ ПО МОДУЛЮ (z5—l)/(z—1) сложений и to = Us + Us—x3, utt=u7+u7, Ut2=Xo, U13 — X3, Un = Uo + Ut, O15 ^Oo^Oi, и76=и6+иц, 017 = Об-Oil, П18 = Ою, 7 умножений, 46 Ho=Xo+x2, U1—X1+X3, и2=х2+х2, Us—uz+uz, Ui = X3~^X3, U5=Ui + Ut, Us=Xo+U3, u7—xt~bus, Us=Xo+Xo—xt, Us — Us-t-Us-t-x2, bo — (660+61—1062—56з)/4, bi— (60—IO61—562+863) /2, b2= (—286o—336i+ 1762 + 426з)/18, Ьз= (26o—61—-962 + 463) /6, 64=(26o+561—562)/120, 65 = (—26o+361+4'62—36з)/72, b6=(_ 60+562)/90, Л1*=^*+1г6*, Uo—mi + mi, ut = Uo + mi, U2 = Ut + Ut, U3^=m5 + ms, Ui=U3 + ms, US = Ul + Ul, Us = U2—Us, Уо=Uis—Ul+Uto+Utz, У1=— u7—1113—m2+m3—uz—uz+m$—m6, 6=0, I,.... 6 ut=mt + Us, us = ms+ms, Us=u9+me, Uto = Us + Us, иц — тз+тз, Utz — Utt + Uio + Us, Ut3=m0—mi, 1/2 = U, + Us, ys = Ut2 + Uo. Б.З. ПРОИЗВЕДЕНИЕ ПОЛИНОМОВ ПО МОДУЛЮ (z21+z1+1)(zs2—l)/(z2—1) 21 умножение, 83 HO = Jfo,o+X3io, ai=xo,i+x3,i, ^2=Xo,O--^3,0, аз=Хо,1—*3,1, Us =Х1,о + %2,О, сложения Us = Xt,l + Xz.l, Us—Xl,o—Xz,0, U7—Xi,t—Xz,l, Us=Ut~hUs, 232
«19 = «18“—«17, «20 = «б+«Г—#1,1, «21 = «О--«7---#2,0» «22 — «21-«20, «23 ='--«4 + «3 + #1,1, «24 —‘«2 4" «5-#2,0, «25 = «24—'«23, «26 — «6 4" «1 #2,1, «27 =«о + «7---#1,0» «28 = «27’—«26, «9 = «о+«4, «10 = «9-*?8, «11 = «3--«7, «12 = «2--«6, «13 = «12--«11, «14 —#0,1, «15 = #0,0, «16 = «15-«14* «17 =#3,1, «18 = #3,0, Ьо = (’47*0,0-/*1,0-'4/*1,1-6/*2,о + /*2,1-/*3,о + 6/*з,1-4/*0,1)/6, 61 = (4/*о,1 + 561,0--/*1,1 + 5/22,0-6/*2,1-5/*з,0-/*3,1) /6, &2 = Ьо+ bi, Ьз— (/*1,о—2/21,1—2/22,0 +/*2,i—/*3,0 + 2/13,1)/6, 64= (/21,q + /21ii4'/*2,O—2/*2,1 /2з,О-/*3,1)/6, &5 = 'Ьз + Ь4, Ье=' /*О,о + /2о,1 + /*2,о + /*1,1 + ^*3,О 2/2з,1, bj =----/lo,l /*1,0 ^2,0+^2,1+/*3,0+ ^3,1, Ьв = Ьб + ^7, Ьд =----/*0,0+ /2о,1+^1,1 + 2/12,0-/*2,1-^/*3,1, Ью=-----/*0,1 hi,О /*2,0 +2/*2,l+/*3,0, &11 = Ь9 + /?Ю, bi2= (2/2о,о’-2/*0,1--/*1,0-/*1,1 +/*2,1---/*2,0-/*3,0 4"/*3,1) /6, bi3 = (2/*o,i+2/zi,o—hifi—h2,r—/*з,1)/6, Ь14“Ь12+&13, bi5= (---/*1,0“—/*1,1 /*2,0-/*2,1 + /*3,о + /*3,1)/6, biG~ (^hi,0---hi,i + 2/*2,0-/*2,1'-2/23,0 + /*3,1)/6, bl7 = bi5 + fei6, 618= (/*0,0--/*0,1—/*2,0 + /*3,1) /3, 619= (/*0,1+/*2,0---/*2,1-63,0)/3, 620 = ^18 + 619, Uq =<Ш\2 + «*14, «1—77*12 + «*13, «2 = «*15 + «*17, «3 = «*15 Ь«*16, «4 =77218 + «*20, «5 = «*1в +«*19, «О = «2 4“ «2, «6 = «з+ «3, «7 = Uq->«0, «8 = «о + «4, «9 = «14-П5, «10 = то 4- «7, «11 =«ю + «*2, О12=Ою4-«11, «13 = «*з + «*5, У о.о=«гз 4- 017 4Н «а, У 0,1 = «24 4“ «18 4“ Од Об, £/1.0 = 021—«25 4- «3 «5, У 1,1 = «22-«28--«О, mk=ah+bbky А=0, ..., 20 «14 = «гз4-77г4, «15 = «*6 + «*8 + «8 «16= «26 4-0*7 4-«9, «17 = «*9+ «*11, «18 = «*9+ «*Ю, «19 = «11 + «15 + «17, «20 = «12 + «16 + «18, «21 = «19+ «13, «22 = «20+ «14, «23 = «19--«13, «24 = «20--«14, «25 = «О--«1, О26 = «2 + «3, «27 = «4—«5, «28 = «26-«27, £/2,0 = «23 + «28"—«1, У 2,1 = «24 + «25~«2-«4, £/з,0 = «21 + «15 + «0, У 3,1 = «22 + «16- Б.4. ПРОИЗВЕДЕНИЕ ПОЛИНОМОВ ПО МОДУЛЮ (24i4-1)(z224-Z24-1) 21 умножение, 76 сложений «о=#о,о+#2,о, «1=#1,0 4-#з,о, «2 =#0,1+#2,1, «з=#1,14-#з,1, «4 =#2,1—#2,0, «5=#1,0—#1,1» «6 = «4+#0,0» «7=0#+#3,1» «8 = #3,0 #1,1» «9 = #2,0-#0,1»
аю=«2+«з, «11=£Хо + «1, «12 = «11-«10, «13 = «2-«3, ац—ао—ait «15 = 014-«13, «16 = «7-«9, «17=«б + «8, «18 = «17-«16, OlQ — —«7-Og, «20 = «6—Os, «21 = «20---«19, «22 = Хо,1, 023 = -*0,0, «24 = «23---«22, «25 = Л-3,1, «26 = Лз.О, 027=026-----О 25, «28 = ХЗ, 1 «4 Xi, 0 + %0,1, «29 —Хо,о О$—-%2,1 + %3,0, О30 = «29---«28, 6ю = (26о,о—бод—26i,i + 26i,o+62,o—2/22,1—/23,0—63,1) /6, 611 = (•—60,0 + 260,1 + 261,1 + 62,0 + 62,1 + 263,0—63,1)/6, 612=610 +611, 613= (26о,о—60,1 + 62,0—262,1—63,0—63,1) /6, 614= (—60,0 + 260,1 + 62,0+62,1+263,0—63,1) /6, 615 = 613 + 614, 616 = (60,0+60,1—26i,i + 261,0—62,0—62,1) /6, 617= (—26о,о+60,1 +26i,i+.262;o—62,1) /6, 618 = 61б + 617, 619= (60,0+60,1—62,0—62,1—26з,о—2бз,1)/6, 620 = (—26о,о + 60,1 + 26г,о—62,1 + 46з,о—26з,1) /6, 621 = 619 + 620, 622=—26о,о+6о,1 + 61,1—61,0+62,1+63,0+63,1, 623=6о,о—26о, 1"^*61,1—62,0—2бз,о+63,1, 624 = 622 + 623, 625 = —60,0+61,1—61,0—62,0 + 262,1+63,0 + 63,1, 620=60,0—60,1—61,г—62,0—62,1—263,0+63,1, 627 = 625 + 626, 628= (61,0--61,1-6з,0--6з,1)73, 629= (61,1+263,0—63,1) /3, 630 = 628 + 629, mfe=«ft+io6fe+io, 6=0, 20 «о — то + m2, Ui = mo+mi, и2 — тз+т5, U3 — /«3+/«4, «4 =«*6 + ^8, «5 = /Пб + т7, «в=+ та, U7=тд + тю, «8 = ^12 + ^14, «9 =‘«112+ «113, «10 = «*15+ «*17, «ц = «115+‘77216, «12 = «*18 +/«20, «i3 = zni8 + mi9, «14 = «О + «2, «15 = «1+«3, «16 = «О-«2, «17 = «Г~«3, «18 = «4 +«6, «19 = «5 +«7, «20 = «4-«6, «21 = «5-«7, «22= «12--«13, У 0,0 = «14 «18 «8 «12, Уо,1 = «15 «19 «9 «13, #1,0 = «16 + «1о+ «20 + «12, #1,1 = «17 +«21 + «1Г+ «13, #2,0 = «14 + «19--«18---«13, #2,1 = «15“—«18 + «22, #3,0 = «16--«21---«22, #3,1 = «17--«21 + «20---«12- Б.5. ПРОИЗВЕДЕНИЕ ПОЛИНОМОВ ПО МОДУЛЮ (22i + 1)(z52—1)/(г2—1) 21 умножейие, 76 сложений «О = Хо,о + Х2,О, «1 =Хо,О“~Г%2,0, «2 = ^1,о+Хз,О, «з=Х1,о—Хз,о, «4i=Xo,l+X2,l, 234 «5 = Хо,1---^2,11 «6 = Л1,1 +Хз,1, 07—Xi, 1---Хз,1, «8 =«4 +«6, «9 = «о + 02,
«Ю = «з + «9, «14 = %0,1, «1 1 =«4—Об, «15 = Хо,О> а 12=«о—«2» «16 = Ло,о + Хо,1» «i3 = «n+at2, «17 = ^3.!, «1в=-£з,о, «24 = «1 +«7, «19 =#3,o + #3,i, «25 = «23+ «24, Й20 = «5 + «3, «26 = CL12 «24 + -*0,1 + Хз, 1 Х3, о, а21 = «г—«7, «27 = «11 + «23+-#0,0+ «19, «22 = «20 + «21, «23 = «26+«27, «23 = «5“«3, bo — (6o,o+hoti~^hito-^h\ti—262,1—Збз.о—63,1)/4, bi — (—60,0+60,1—61,0+61,1 + 262,0+63,0—36з,1)/4, 62=(6o-61)/2, 63= (-‘-ho,о-—Ao,i+64,0+61,1—2/22,1—63,0 + /23,1) /4, bk—tfho.o—ho,1—6t,o+6i,i + 262,o—ha,o—~/2 3,1)/4, 65=(6з— b^/2, bs= (2^2,1+2Аз,о)/2, bj= (—2/22,0 + 2/23,1)/2, 68=(66—67)/2, bd~ —hito—hi,i—62,0 + 62,1 +2/23,0, bio — h.1,0—hi,i—/22,o’—/22,1 + 2/23,1, bn=(bo—b\o)l2t biz — (56o,O—5/2o,f—-5/21,0—5/21,1-4/22,0 + 2/22,1—hs,0 + 3/l3,l) /20, 613= (5/2o,o + 5/2o,i + 5/21,0—5/2i,i—2/22,0-—4/22,1—3/2з,о—/23,1) /20, 614 = (612-61з)/2, 6 15= (—60,0+60,1— h i,o—hi,\—2hz,i +/23.0+63,1)/4, 6 i6= (—ho,o—60,1 + 61,0—/2i,i + 2/22,o—63,0+63,1)/4, 617 = (615-61б)/2, 618= (262,o—h.2,1—2/23,0+63,i)/5, 619= (62,0 + 262,1-63,0—26з,1) /5, 620= (6i8—Ью)/2, mk=all+8bk, 6 = 0, 20 «о = /«2—m0. «14 = /«20 + ГП19, «1 = т2 + /П1, «15=«? + «13 «14, и3^-т5—т3, «16 = «в + «1з + «14, u^=m5 + in^ «17 = «о + «б + «15, и5 ^т3~те, «18 = «1 + «б + «16, UQ—m^mj, «19 = «17 + «3, и7^ти—т9, «20 = «1б + «4, И3 = Ш\1 + /«10, «21 =«17 «з + «14, «9 = «22 = «18 «4 «13, UtO = «ll4 + «Xt3, М23 = «э + «11, «11 = Ш17 Ш15, «24 = «10 + «12, И12 = /«17 + «Х16, «25 = «Э «11, «13 = /«20 «Х[8, «26 = «Ю «12, У 0,0 — «21 + «15 + «23, */2,0 = «2! «26. У 0,1 = «22+ «16 «25, У2,1 = «22 +«25, //1.0 = «1Э-—«23 «13, У 3,0 = «13 + «5 + «23, f/1,1 = «20 «21 «14, У$ 1 = «20 + «G + «24- ЗАДАЧИ К главе 2 *2.1. Найти НОД чисел 65 и 104, используя алгоритм Евклида. Решить Ди- офантово уравнение 6бх-|-104^= 143. 2.2. Найти вычет числа З62 но модулю 19. 235
2.3. Доказать, что 226—1 делится на 601. 2.4. Доказать, что 3 является делителем каждого числа вида 2®4-1, где v — нечетное. 2.5. Вычислитель <р (2205). 2.6. Найти максимальный показатель, которому принадлежат целые числа по модулю 11. Привести пример такого числа. 2.7. Выяснить, является ли 63 квадратичным вычетом по модулю 209. 2.8. Найти число п, определенное по модулю 902, такое, что n=29 mod 32 и n=5 mod 31.. 2.9. Найти вычет полинома z32—5z13+z4+3z2+l по модулю z2+z-|-,li. 2.10. Найти полином А (г), определенный по модулю z4—1, если известно, что A(z)=2z—2mod(z2+l), A(z) = 16mod(z—1), A(z) --8mod (z+1). Сна- чала применить непосредственно китайскую теорему об остатках. Затем показать, что вычисления можно упростить двукратным ее применением. К главе 3 ЗЛ. Показать, как вычисляется циклическая 60-точечйая свертка послойно- гнездовым методом. Найти вычислительную сложность приведенного метода, используя короткие алгоритмы разд. 3.7. 3.2. Привести структурную схему алгоритма Агарвала — Кули для вычис- ления циклической 6-точечной свертки. Использовать алгоритмы коротких свер- ток .из разд. 3.7. Найти с помощью этого алгоритма свертку последовательно- стей {хто}={13 2, 0, 3, 1, 4} н {М={0, 2, 1, 0, 3, 4}. 3.3. Показать, как вычислить двумерное полиномиальное произведение по модулю (х3—1)/(х—1), (г/6—1)/(р—1) с 21 умножением, используя короткие алгоритмы из разд. 3.7. Найти требуемое число сложений. 3.4. Используя алгоритм произведения полиномов по модулю (z3—l)/(z—1) из разд. 3.7, привести алгоритм произведения полиномов по модулю z2—z+1. 3.5. Если непериодическая свертка двух последовательностей длинами Ai и А2 вычисляется посредством циклической A-точечной свертки, то входные по- следовательности дополняются нулями до длины A^Ai+A2—1. Показать, что если A=Ai+A2—2 или N=Nt+N2—3, то этот же метод может быть приме- нен с незначительными изменениями в этом случае. Используя этот метод, вы- числить непериодическую свертку 3-точечных последовательностей. 3.6. Показать, что непериодическую свертку двух последовательностей дли- нами и Ьг можно вычислить двумя циклическими Nt- и А2-точечными сверт- ками, такими, что N1+N2—L1+L2 и (А1( А2) = 1. 3.7. Разложить многочлен z4+l над полем вещественных чисел в произве- дении двух полиномов степени 2. Используя это разложение, привести алгоритм умножения полиномов по модулю z44-l, требующий 12 умножений. Найти чи- сло умножений при гнездовании этого алгоритма циклическими А-точечными свертками по методу Агарвала — Кули. Сравнить вычислительную сложность полученного алгоритма со сложностью алгоритма умножения полиномов по мо- дулю z4+l из подразд. 3.7.2. 3.8. Привести два алгоритма умножения полиномов по модулю Z®+2z+2 и по модулю z2—2z-|-2, требующих по три умножения каждый. 3.9. Используя решение задачи 3.8, привести алгоритм, вычисляющий непе- риодическую свертку двух 4-точечных последовательностей за 9 умножении. 236
3.10. Найти вычислительную сложность алгоритма Агарвала — Кули дпя 60-точечной циклической свертки, использующего распределенную арифметику для 4-точечных циклических сверток. К главе 4 4.1. Показать, как вычисляется ДПФ вещественных последовательностей длиной N с помощью (7V/2)-точечного ДПФ вспомогательными операциями W=2‘. 4.2. Для вещественной входной последовательности хп разработать метод вычисления N-точечного ДПФ Xh с помощью (7V/2) -точечного ДПФ. При этом считать, что ДПФ Хк содержит лишь нечетные гармоники (Xh=Q для четных k). N=2*. 4.3. Показать, как вычислить ДПФ последовательности длиной А,=2г, по- средством БПФ-алгоритма, используя последовательно основания ....Найти требуемое число операций. 4.4. Показать, как вычислить ДПФ массива NXN N=2‘, с помощью БПФ- алгоритма по основанию 2, который работает одновременно со строками и столбцами. Найти вычислительную сложность такого алгоритма и сравнить ее со сложностью обычного построчно-столбцевого метода. 4.5. Преобразовать №-точечное в двумерное ДПФ-массива WXA'. Указание: Начать, с БПФ-декомпозиции. 4.6. Входная последовательность ДПФ, используемого при вычислении апе- риодической свертки перекрытием с суммированием, имеет нулевые последние элементы. Рассмотреть Л^-точечное ДПФ, N=2*^ в котором N/2 последних чле- нов входной последовательности равны 0, и показать, как в этом случае мож- но упростить вычисления. 4.7. Указать, какие могут быть сделаны упрощения при одновременном вы- числении циклической свертки и циклической корреляции двух Л^-точечпых по- следовательностей хт и hn посредством Л^-точсчного ДПФ. 4.8. При вычислении TV-точечного ДПФ, W=2f, по методу Рейдера — Брен- нера комплексные фазовые множители заменяются на вещественные фазовые множители 1/соз(2лА/ЛТ). Если N — большое, то умножения на l/cos(2n/e//V) приводят к значительным погрешностям округления. Показать, применяя теоре- му о циклическом сдвиге, что комплексные фазовые множители можно заме- нить на вещественные фазовые множители cos (2зтй/ЛТ) вместо 1/сО5(2яЛ/ЛП. Найти погрешность округления для такого метода. 4.9. Вычисление 3-точечного ДПФ требует нетривиальных умножений, если вычисления проводятся в поле комплексных чисел. Показать, что 3-точечное БПФ вычисляется лишь с тривиальными умножениями, если операции выпол- няются в J?(p), где р — первообразный кубический -корень нз единицы, так что числа представляются в виде а-рбр. Найти вычислительную сложность 3(-то- чечиого ДПФ, использующего этот метод вычисления. 4.10. Найти вычислительную сложность БПФ-алгоритма по основанию 16. Сравнить ее с вычислительной сложностью алгоритмов по основаниям 2 и 4. К главе 5 5.1 Показать, что 272-точечное ДПФ можно вычислить с помощью 17 16- точечных ДПФ и одного ДПФ массива 16X6. 237
5.2. Найти алгоритм, вычисляющий Л'^2^-точечное ДПФ с помощью NiNz Аз-точечных ДПФ, /V2TV3 TVi-точечных ДПФ, NiNs циклических Аг-то-чечных сверток и 2А1А2А3 комплексных умножений. 5.3. Определить (N—1)-точечное прямое и обратное преобразования, вычи сляющие произведения полиномов по модулю (zw—l)/(z—Г), где N — простое. Указание: TV-точечная циклическая свертка вычисляется посредством TV-то- чечных прямого и обратного ДПФ. 5.4. Используя ЛЧМ z-преобразования, показать, что №-точечное ДПФ можно свести к 2TV TV-точечным сверткам. 5.5. Алгоритм преобразования Винограда — Фурье обычно реализуется с с помощью алгоритмов коротких ДПФ, в которых все умножения находятся в середине алгоритма. Показать, что это условие необязательно и что алгоритм Винограда можно скомбинировать с БПФ-алгоритмом. Найти вычислительную сложность этого' гибридного метода для 400-точечного ДПФ. Сравнить полу- ченные результаты с обычным методом Винограда. 5.6. При вычислении TV-точечного ДПФ посредством ЛЧМ z-преобразова- ния ДПФ сводится к TV-точечной циклической комплексной свертке с вспомо- гательными умножениями. Показать, что в этом случае большинство комплек- сных умножений в комплексной TV-точечной свертке могут быть выполнены с двумя вещественными умножениями, А=2'. 5.7. Привести алгоритм преобразования Винограда — Фурье, использую- щий ЛЧМ 2-преобразо.вание для малых ДПФ. Сравнить с обычным методом, основанным на алгоритме Рейдера. 5.8. ВФП-алгоритм обычно использует алгоритмы коротких ДПФ, которые реализуются с умножениями либо на вещественные, либо на чисто мнвмые чи- сла. Преобразуйте алгоритмы из разд. 5.5. для 3-, 5- и 16-точечных ДПФ в новые алгоритмы, требующие соответственно 3, 5 и 16 комплексных умноже- ний. Указать число операций для 240-точечного ДПФ, вычисляемого алгорит- мом Винограда., использующим эт.и короткие ДПФ. Сравнить с обычным ме- тодом. 5.9. Вывести из алгоритма Рейдера алгоритм 11-точечного БПФ. 5.10. Показать, как построить алгоритм 13-точечного ДПФ с помощью ал- горитма Рейдера. Найти вычислительную сложность полученного алгоритма. К главе 6 6.1. Написать программу (на ПЛ/1, Фортране) алгоритма типа БПФ, вы- числяющего полиномиальное TV-точечное преобразование по модулю zK-|-l, А=2. 6.2. Написать АПЛ-программу алгоритма типа БПФ для полиномиально- го N- или '2А-точечного преобразования, определенного' по модулю zA + l, А=2‘. 6.3. Показать, как можно описать алгоритм комплексной свертки из под- разд. 3.3.3 в терминах полиномиальных преобразований. 6.4. Показать, как вычислить произведение полиномов по модулю z4—1, z42-f-4 с помощью двух 4-точечных полиномиальных преобразований. Указание: Разложить z42+4 над полем вещественных чисел. 6.5. Найти максимальную длину полиномиальной свертки по модулю zs—z7+z5—z4+z3—z+1, которую можно вычислить посредством полиномиаль- 238
ных преобразований без выполнения умножений. Указать эти полиномиальные преобразования. Предложить простой метод их вычисления. 6.6. Двумерную циклическую свертку массива 15X15 можно вычислить ли- бо посредством двух сверток массивов 3X3 и 5X5, вычисляемых полиноми- альным преобразованием, либо непосредственным использованием полиномиаль- ного 15-точечного преобразования. Сравнить оба метода по сложности вычис- лений. 6.7. Показать, что полиномиальное A-точечное преобразование с корнем z, Л'=6р, преобразует свертку в произведение, если оно определено по модулю z2p—zp-l-\t р=2‘. 6.8. Показать, как одновременно вычислить две 6-точечные свертки с по- мощью полиномиального преобразования по модулю z2—z+1. Сравнить по вы- числительной сложности этот метод с прямым вычислением по алгоритму Агар- вала — Кули. 6.9. Показать, как вычислить полиномиальное p-точечное преобразование, р — простое, посредством алгоритма Рейдера. Сравнить сложность такого вычи- сления с данными табл. 6.2. при р = о. К главе 7 7.1,. Написать программу (на ПЛ-1 или Фортране), вычисляющую ДПФ массива АХ А, А=2*, методом полиномиального преобразования, представлен- ного на рис. 7.5. 7.2. Привести алгоритм (см. рис. 7.4), вычисляющий ДПФ массива AiXA2, Z'/i = 2,ij M2=2*2 с помощью полиномиального преобразования. Показать, что для некоторых значений Nt и А2 возможны два метода с различной вычисли- тельной сложностью. 7.3. Привести алгоритм, вычисляющий модифицированное ДПФ Xkt,k2 мас- сива А1ХА2 с помощью одного полиномиального Агточечного преобразования. Указать случаи, когда полиномиальное преобразование можно вычислить без нетривиальных умножений в зависимости от значений Ai и А2; Ni=2‘>, Мг—211. N2=2*2 , Л', —1 Л'2—1 2 nWnik'WniWNintkt’Nt, = exp (—j2jt//V1). п1=0 nz=0 7.4. Вычислить гибридное двумерное преобразование Д7_ 1 Д7_j Xklr k2 = 2 2 хп2, n2wn'kl соз(2лп2А2/М), nt=0 n2=0 W=exp(—j 2n/N), с помощью полиномиальных преобразований. 7.5. Найти вычислительную сложность алгоритма для 8'5-точечного ДПФ, вычисляемого по методу из разд. 7.2. Сравнить с обычным методом Винограда для 120-точечного ДПФ. 7.6. Показать, как можно вычислить 272-точечное ДПФ, используя полино- миальный алгоритм (рис. 7.2). Указание: Использовать алгоритм Гуда. 7.7. Описать алгоритм, вычисляющий ДПФ массива 15X15 (по методу из разд. 7.1) с помощью полиномиального 15-точечного преобразования. 7.8. Алгоритм, описанный в подразд. 7.1.2. (см. рис. 7.2), может рассма- триваться как алгоритм по основанию 2, который на каждом шаге преобразу- 239
ет ДПФ массива 2*Х2{ в ДПФ массива 2i~1X2i-1 посредством полиномиаль- ного преобразования. Привести алгоритм по основанию 4, который на каждом шаге преобразует ДПФ массива 2*Х2! в ДПФ массива 2‘-2Х2’-2. К главе 8 8.1. Показать, как вычисляется 117-точечное преобразование Ферма1. Найти вычислительную сложность метода. 8.2. Привести алгоритм, комбинирующий полиномиальные и теоретико-чис- ловые преобразования, для вычисления двумерной свертки массива ЗЙХ32. Указать вычислительную- сложность метода. 8.3. Предполагая, что вычисления производятся в троичной арифметике (так что умножения на степени 3 — «простые»), определить обобщенное псев- домерсенновское преобразование по модулю Зр—-li. 8.4. Предполагая, что вычисления производятся в троичной арифметике (так что умножения на степени 3 — «простые»), определить обобщенное псев- допреобразование Ферма по модулю Зр + 1. 8.5. Указать способ выполнения сложений и умножений по модулю р2, ког- да числа х задаются дву.цифровым представлением х=ра+Ь, а, Ь — 0 р—1. Показать, что умножение по модулю р2 можно реализовать табличным спосо- бом с двумя таблицами по 2р элементов каждая. 8.6. Показать, что 6-точечное ТПЧ с корнем 2 преобразует свертку в про- изведение, если оно определено по модулю 22р—2р+1, р=2‘.
СПИСОК ЛИТЕРАТУРЫ 2.1 Т. Nagel!: Introduction to Number Theory, 2nd ed. (Chelsea, New York 1964) 2.2 G. H. Hardy, E. M. Wright: An Introduction to the Theory of Numbers, 4th ed. (Oxford University Press, Ely House, London 1960) 2.3 N. H. McCoy: The Theory of Numbers (MacMillan, New York 1965) 2.4 J. H. McClellan, С. M. Rader: Number Theory in Digital Signal Processing (Prentice- Hall, Englewood Cliffs, N. J. 1979) 2.5 M. Abramowitz, I. Stegun: Handbook of Mathematical Functions, 7th ed. (Dover, New York 1970) pp. 864-869 2.6 W. Sierpinski: Elementary Theory of Numbers (Polska Akademia Nauk Monographic Matematyczne, Warszawa 1964) 2.7 I. M. Vinogradov: Elements of Number Theory, (Dover, New York 1954) 2.8 D. J. W'inter: The Structure of Fields, Graduate Texts in Mathematics, Vol. 16 (Springer, Berlin, New York, Heidelberg 1974) 2.9 R. C. Agarwal, J. W. Cooley: New algorithms for digital convolution. IEEE Trans. ASSP-25, 392-410 (1977) 2.10 J. H. Griesmer, R. D. Jenks: “SCRATCHPAD I. An Interactive Facility for Symbolic Mathematics”, in Proc. Second Symposium on Symbolic and Algebraic Manipulation, ACM, New York, 42-58 (1971) 2.11 S. Winograd: On computing the discrete Fourier transform. Math. Comput. 32,175-199 (1978) 2.12 S. Winograd: Some bilinear forms whose multiplicative complexity depends on the field of constants.- Math. Syst. Th., 10, 169-180 (1977) 3.1 T. G. Stockham: “Highspeed Convolution and Correlation”, in 1966 Spring Joint Com- puter Conf., AFIPS Proc. 28, 229-233 3.2 B. Gold, С. M. Rader, A. V. Oppenheim, T. G. Stockham: Digital Processing of Signals, (McGraw-Hill, New York 1969) pp. 203-213 3.3 R. C. Agarwal, J. W, Cooley: “New Algorithms for Digital Convolution”, in 1977 Intern. Conf., Acoust., Speech, Signal Processing Proc., p. 360 3.4 I. J. Good: The relationship between two fast fourier Transforms. IEEE Trans. C-20. 310-317(1971) 3.5 R. C. Agarwal, J. W. Cooley: New algorithms for digital convolution. IEEE ASSP-25, 392-410 (1977) 3.6 H. J. Nussbaumer: “New Algorithms for Convolution and DFT Based on Polynomial Transforms”, in IEEE 1978 Intern. Conf. Acoust., Speech, Signal Processing Proc., pp. 638-641 3.7 H. J. Nussbaumer, P. Quandalle: Computation of convolutions and discrete Fourier transforms by polynomial transforms. IBM J. Res. Dev., 22, 134-144 (1978) 3.8 R. C. Agarwal, C. S. Burrus: Fast one-dimensional digital convolution by multidimen- sional techniques. IEEE Trans. ASSP-22, 1-10 (1974) 3.9 H. J. Nussbaumer: Fast polynomial transform algorithms for digital convolution. IEEE Trans. ASSP-28,205-215, (1980) 3.10 A. Croisier, D. J. Esteban, M. E. Levilion, V. Riso: Digital Filter for PCM Encoded Signals, US Patent 3777130, Dec..4, 1973
.3.11 C. S. Burrus: Digital filter structures described by distributed arithmetic. IEEE Trans. CAS-24, 674-680 (1977) 3.12 D. E. Knuth: The Art of Computer Programming, Vol. 2, Semi-Numerical Algorithms (Addison-Wesley. New York 1969) 4.1 B. Gold, С. M. Rader: Digital Processing of Signals (McGraw-Hill, New York 1969) 4.2 E. O. Brigham: The Fast Fourier Transform (Prentice-Hall, Englewood Cliffs, N. J. 1974) 4.3 L. R. Rabiner, B. Gold: Theory and Application of Digital Signal Processing (Prentice- Hall, Englewood Cliffs, N. J. 1975) 4.4 A. V. Oppenheim, R. W. Schafer: Digital Signal Processing (Prentice-Hall, Englewood Cliffs, N. J. 1975) 4.5 A. E. Siegman: How to compute two complex even Fourier transforms with one trans- form step. Proc. IEEE 63, 544 (1975) 4.6 J. W. Cooley, J. W. Tukey: An algorithm for machine computation of complex Fourier series. Math. Comput. 19, 297-301 (1965) 4.7 G. D. Bergland: A fast Fourier transform algorithm using base 8 iterations. Math. Com- put. 22, 275-279 (1968) 4.8 R. C. Singleton: An algorithm for computing the mixed radix fast Fourier transform. IEEE Trans. AU-17, 93-103 (1969) 4.9 R. P. Polivka, S. Pakin: APL: the Language and Its Usage (Prentice-Hall, Englewood Cliffs, N. J. 1975) 4.10 P. D. Welch: A fixed-point fast Fourier transform error analysis. IEEE Trans. AU-17, 151-157 (1969) 4.11 T. К. Kaneko, B. Liu: Accumulation of round-off errors in fast Fourier transforms. J. Assoc. Comput. Mach. 17, 637-654 (1970) 4.12 C. J. Weinstein: Roundoff noise in floating point fast Fourier transform computation. I EEE Trans. AU-17, 209-215(1969) 4.13 С. M. Rader, N. M. Brenner: A new principle for fast Fourier transformation. IEEE Trans. ASSP-24, 264-265 (1976) 4.14 S. Winograd: On computing the discrete Fourier transform. Math, comput. 32, 175-199 (1978) 4.15 К. M. Cho, G. C. Temes: “Real-factor FFT algorithms”, in IEEE 1978 Intern. Conf. A.coust., Speech, Signal Processing, pp. 634-637 4.16 H. J. bJussbaumer, P. Quandalle: Fast computation of discrete Fourier-transforms using polynomial transforms. IEEE Trans. ASSP-27, 169-181 (1979) 4.17 G.-Bonnerot, M. Bellanger: Odd-time odd-frequency discrete Fourier transform for sym- metric real-valued series. Proc. IEEE 64, 392-393 (1976) 4.18 G. Bruun: z-transform DFT filters and FFTs. IEEE Trans. ASSP-26, 56-63 (1978) 4.19 G. K. McAuliffe: “Fourier Digital Filter or Equalizer and Method of Operation There- fore”, US Patent No. 3 679 882, July 25, 1972 5.1 L. 1. Bluestein: “A Linear Filtering Approach to the Computation of the Discrete Fourier Transform”, in 1968 Northeast Electronics Research and. Engineering Meeting Rec., pp. 218-219 5.2 L. 1. Bluestein: A linear filtering approach to the computation of the discrete Fourier ' transform. IEEE Trans. AU-18, 451-455 (1970) 5.3 С. M. Rader: Discrete Fourier transforms when the number of data samples is prime. Proc. IEEE 56, 1107-1108 (1968) 5.4 S. Winograd: On computing the discrete Fourier transform. Proc. Nat. Acad. Sci. USA 73, 1005-1006 (1976)
5.5 L. R. Rabiner, R. W. Schafer, С. M. Rader: The Chirp z-transform algorithm and its application. Beil Syst. Tech. J. 48, 1249-1292 (1969) 5.6 G. R. Nudd, O. W. Otto: Real-time Fourier analysis of spread spectrum signals Using surface-wave-implemented Chrip-z transformation. IEEE Trans. MTT-24. 54-56 (1975) 5.7 M. J. Narasimha, K. Shenoi, A. M. Peterson: “Quadratic Residues: Application to Chirp Filters and Discrete Fourier Transforms”, in IEEE 1976 Acoust., Speech, Signal Pro- cessing Proc., pp. 376-378 5.8 M. J. Narasimha: “Techniques in Digital Signal Processing”, Tech. Rpt. 3208-3, Stanford Electronics Laboratory, Stanford University (1975) 5.9 J. H. McClellan, С. M. Rader: Number Theory in Digital Signal Processing (Prentice-Hall, Englewood Cliffs, N. J. 1979) 5.10 H. J. Nussbaumer, P. Quandalle: Fast computation of discrete Fourier transforms using polynomial transforms. IEEE Trans. ASSP-27, 169-181 (1979) 5.11 I. J. Good: The interaction algorithm and practical Fourier analysis. J. Roy. Stat. Soc. B-20, 361-372 (1958); 22, 372-375 (1960) 5.12 1. J. Good: The relationship between two fast Fourier transforms. IEEE Trans. C-20, 310-317(1971) 5.13 D. P. Kolba, T. W. Parks: A prime factor FFT algorithm using high-speed convolution. IEEE Trans. ASSP-25, 90-103 (1977) 5.14 C. S. Burrus: “Index Mappings for Multidimensional Formulation of the DFT and Con- volution”, in 1977 IEEE Intern. Symp. on Circuits and Systetns Proc., pp. 662-664 5.15 S. Winograd: “A New Method for Computing DFT”, in 1977 IEEE Intern. Conf. Acoust., Speech and Signal Processing Proc., pp. 366-368 5.16 S. Winograd: On computing the discrete Fourier transform. Math. Comput. 32, 175— 199 (1978) 5.17 H. F. Silverman: An introduction to programming the Winograd Fourier transform algorithm (WFTA). IEEE Trans. ASSP-25, 152-165 (1977) 5.18 R. W. Patterson, J. H. McClellan: Fixed-point error analysis of Winograd Fourier trans- form algorithms. IEEE Trans. ASSP-26, 447-455 (1978) 5.19 L. R. Morris: A comparative study of time efficient FFT and WFTA programs for general purpose computers. IEEE Trans. ASSP-26, 141-150(1978) 6.1 H. J. Nussbaumer: Digital filtering using polynomial transforms. Electron. Lett. 13, 386- 387(1977) 6.2 H. J. Nussbaumer, P. Quandalle: Computation of convolutions and discrete Fourier transforms by polynomial transforms. IBM J. Res. Dev. 22, 134-144 (1978) 6.3 P. Quandalle: “Filtrage numerique rapide par transformees de Fourier et transformees polyndmiales—Etude de 1’implantation sur microprocesseurs” These de Doctoral de Speciality, University of Nice, France (18 mai 1979) 6.4 R. C. Agarwal, J. W. Cooley: New algorithms for digital convolution. IEEE Trans. ASSP- 25, 392-410(1977) 6.5 B. Arambepola, P. J. W. Rayner: Efficient transforms for multidimensional convolutions. Electron. Lett. 15, 189-190 (1979) 7.1 H. J. Nussbaumer, P. Quandalle: Fast compulation of discrete Fourier transforms using polynomial transforms. IEEE Trans. ASSP-27, 169-181 (1979) 7.2 H. J. Nussbaumer, P. Quandalle: “New Polynomial Transform Algorithms for Fast DFT Computation”, in IEEE 1979 Intern. Acoustics, Speech and Signal Processing Conf. Proc., pp. 510-513 243
7.3 С. М. Rader: Discrete Fourier transforms when the number of data samples is prime Proc. IEEE 56, 1107-1108 (1968) 7.4 G. Bonnerot, M. Bellanger: Odd-time odd-frequency discrete Fourier transform for sym- metric real-valued series. Proc. IEEE 64, 392-393 (1976) 7.5 С. M. Rader, N. M. Brenner: A new principle for fast Fourier transformation. IEEE Trans. ASSP-24, 264-266 (1976) 7.6 I. J. Good': The relationship between two fast Fourier transforms. IEEE Trans. C-20, 310-317(1971) 7.7 S. Winograd: On computing the discrete Fourier transform. Math. Comput. 32, 175-199 (1978) 7.8 H. J. Nussbaumer: DFT computation by fast polynomial transform algorithms. Electron. Lett. 15,701-702(1979) 7.9 H. J. Nussbaumer, P. Quandalle: Computation of convolutions and discrete Fourier transforms by polynomial transforms. IBM J. Res. Dev. 22, 134-144 (1978) 7.10 R.C. Agarwal, J. W. Cooley: Newalgorithmsfor digital convolution. IEEE Trans. ASSP- 25, 392-410(1977) 8.1 1. J. Good: The relationship between two fast Fourier transforms. IEEE Trans. C-20, 310-317 (1971) 8.2 J. M. Pollard: The fast Fourier transform in a finiteJield. Math. Comput. 25, 365-374 (1971) 8.3 P. J. Nicholson: Algebraic theory of finite Fourier transforms. J. Comput. Syst. Sci. 5, 524-547 (1971) 8.4 P. J. Erdelsky: “Exact convolutions by number-theoretic transforms”; Rept. No. AD- A013 395, San Diego, Calif. Naval Undersea Center (1975) 8.5 С. M. Rader: Discrete convolutions via Mersenne transforms. IEEE Trans; C-21, 1269- 1273 (1972) 8.6 R. C. Agarwal, C. S. Burrus: Fast convolution using Fermat number transforms with applications to digital filtering. IEEE Trans. ASSP-22, 87-97 (1974) 8.7 R. C. Agarwal, C. S. Burrus: Number theoretic transforms to implement fast digital con- volution. Proc. IEEE 63, 550-560 (1975) 8.8 L. M. Leibowitz: A simplified binary arithmetic for the Fermat number transform. IEEE Trans. ASSP-24, 356-359(1976) 8.9 J. H. McClellan: Hardware realization of a Fermat number, transform. 1ЁЕЕ Trans. ASSP-24, 216-225 (1976) 8.10 H. J. Nussbaumer: Linear filtering technique for computing Mersenne and Fermat num- ber transforms. IBM J. Res. Dev. 21, 334-339 (1977) 8.11 H. J. Nussbaumer: Complex convolutions via Fermat number transforms. IBM J. Res. Dev. 20,282-284 (1976) 8.12 E. Vegh, L. M. Leibowitz: Fast complex convolutions in finite rings. IEEE Trans. ASSP- 24, 343-344 (1976) 8.13 L. B. Jackson: On the interaction of round-off noise and dynamic range in digital filters. Bell Syst. Tech. J. 49, 159-184 (1970) 8.14 P. R. Chevillat, F. H. Closs: “Signal processing with number theoretic transforms and limited word lengths”, in IEEE 1978 Intern. Acoustics, Speech and Signal Processing Conf. Proc., pp. 619-623 8.15 H. J. Nussbaumer: Digital filtering using complex Mersenne transforms. IBM J. Res. Dev. 20,498-504 (1976) 8.16 H. J. Nussbaumer: Digital filtering using pseudo Fermat number transforms. IEEE Trans. ASSP-26, 79-83 (1977) 244
8.17 E. Dubois, A. N. Venetsanopoulos: “Number theoretic transforms with modulus 2гя — 2’ + 1 , in IEEE 1978 Intern. Acoustics, Speech and Signal Processing Conf. Proc., pp. 624—627 8.18 H. J. Nussbaumer: Overflow detection in the computation of convolutions by some num- ber theoretic transforms. IEEE Trans. ASSP-26, 108-109 (1978) 8.19 I. S. Reed, T. K. Truong: The use of finite fields to compute convolutions. IEEE Trans. IT-21,208-213(1975) 8.20 I. S. Reed, T. K. Truong; Complex integer convolutions over a direct sum of Galois fields. IEEE Trans. IT-21, 657-661 (1975) 8.21 H. J. Nussbaumer: Relative evaluation of various number theoretic transforms for digital filtering applications. IEEE Trans. ASSP-26, 88-93 (1978) К приложению A A.l H. J. Nussbaumer: "Inverse Polynomial Transform Algorithms for DFTs and Convolu- tions", tn IEEE 1981 Intern. Acoustics, Speech and Signa] Processing Conf. Proc pp 315-318 • A.2 H. J. Nussbaumer: New polynomial transform algorithms for multidimensional DFTs and convolutions. IEEE Trans. ASSP-29, 74-83 (1981) A.3 J. Makhoul: A fast cosine transform in one and two dimensions. IEEE Trans. ASSP-28 27 - 33 (1980) A.4 H. J. Nussbaumer: “Fast polynomial transform computation of the 2-D DCT”, in 1981 intern. Conf, on Digital Signal Processing, pp. 276 - 283 СПИСОК ЛИТЕРАТУРЫ, ПЕРЕВЕДЕННОЙ НА РУССКИЙ ЯЗЫК 2.4. Макклеллан Дж. X., Рейдер Ч. М. Применение теории чисел в цифро- вой обработке сигналов: Пер. с англ. — М.: Радио и связь, 1'983.— 264 с. 2.7. Виноградов И. М. Основы теории чисел: Пер. с англ.— М.: Наука, 1'965,—-1172 с. 3.112. Кнут Д. Е. Искусство программирования для ЭВМ. Т. 2: Пер. с. англ. — М.: Мир, '1978.—7'24 с. 4.3-. Рабинер Л. Р., Гоулд Б. Теория и применение цифровой обработки сигналов: Пер. с англ. — М.: Мир, 1'978.—848 с. 4.5. Зигман А. Е. Вычисление двух комплексных четных преобразований Фурье в один этап. — ТИИЭР, 1975, т. 63, № 6, с. 544. 4.17. Боннеро Г., Беланже М. Дискретное преобразование Фурье для нечет- ного числа отсчетов и симметричной действительной последовательности. — ТИИЭР, 1976, т. 64, № 3, с. 392—393. 5.3. Рейдер Ч. М. Дискретное преобразование Фурье в случае простого числа отсчетов. — ТИИЭР, 1968, т. 56, № 4, с. 1107—1108. 7.3. Рейдер Ч. М. Дискретное преобразование Фурье в случае простого числа отсчетов. — ТИИЭР, 1968, т, 56, № 4, с. 1107—1108. 7.4. Боннеро Г., Беланже М. Дискретное преобразование Фурье для нечет- ного числа отсчетов и симметричной действительной последовательности. — ТИИЭР, 1976, т. 64, № 3, с. 392—393. 8.7. Агарвал Р. Ч„ Баррас Ч. С. Теоретико-числовые преобразования для быстрого вычисления цифровой свертки. — ТИИЭР, 1975, т. 63, № 5, с. 550—560. 245
ДОПОЛНИТЕЛЬНЫЙ СПИСОК ЛИТЕРАТУРЫ 1*. Thomas L. Н. Using of computer to solve problems in physics. — In: Applica- tions of digital computers.. — Boston: Ginn and Co., 1963. 2*. Burrus C. S,, Eschenbacher P. W. An in-place, in-order prime factor FFT al- gorithm.— IEEE Trans., 1981, v. ASSP-29, No 4, p. 806. 3*. Truong T. K., Reed I. S., Lipes R. G., Wu C. On the application of a fast po- linomial transform and the Chinese remainder theorem to compute a two-di- mensional convolution. — IEEE Trans., 1981, v. ASSP-29, No, 1, p. 91. 4*. Reed I. S., Shao H. M., Truong T. K. Fast polinomial transform and its im- plementation by computer. — Proc. IEE, 1981, v. 128, Pt. E, No 1, p. 50. 5*. Капорин И. E. Новый алгоритм быстрого преобразования Фурье. — Журнал вычислительной математики и математической физики, 1980, № 4, с. 1054— 1058. 6*. Капорин И. Е., Быстрый алгоритм для класса унитарных преобразований. — Доклады АН СССР, 1983, т. 272, № 1, с. 23—26.
ОГЛАВЛЕНИЕ Предисловие Предисловие Стр. Редакторов перевода g ГЛАВА 1. ВВЕДЕНИЕ ....... ............... 8 ! о Вводные замечания....................................... 2 1-3. Структура книги.......................................... ш ГЛАВА 2. ЭЛЕМЕНТЫ ТЕОРИИ ЧИСЕЛ И ПОЛИНОМИАЛЬНОЙ АЛГЕБРЫ 10 2.1 Элементарная теория чисел .... - И 2.2. Полиномиальная алгебра ......... 2э ГЛАВА 3. АЛГОРИТМЫ БЫСТРОЙ СВЕРТКИ ....... 33 3.1. Цифровая фильтрация, использующая циклическую свертку . 34 3.2. Вычисление коротких сверток и произведений полиномов . . 35 3.3. Вычисление больших сверток с помощью вложения коротких сверток ..................................................... 43 3.4. Цифровая фильтрация, использующая многомерное преобразо- вание ...................................................«• 56 3.5. Вычисление сверток рекурсивным вложением полиномов . 60 3.6. Распределенная арифметика............................... 64 3.7. Алгоритмы вычисления коротких сверток н произведений поли- номов ....................................................... 66 ГЛАВА 4. БЫСТРОЕ ПРЕОБРАЗОВАНИЕ ФУРЬЕ .................................... 75 4.1. Дискретное преобразование Фурье 75 4.2. Алгоритм быстрого преобразования Фурье . . ' . . . 80 4.3. БПФ Рейдера — Бреннера .... 91 4.4. Многомерные БПФ . . . 94 4.5. Алгоритм Бруна.......................................... 96 4.6. Вычисление сверток с помощью БПФ - ................ 99 ГЛАВА 5. ВЫЧИСЛЕНИЕ ДИСКРЕТНОГО ПРЕОБРАЗОВАНИЯ ФУРЬЕ НА ОС- НОВЕ ЛИНЕЙНОЙ ФИЛЬТРАЦИИ..................................................102 5.1. Алгоритм ЛЧМ 2-преобразования 103 5.2. Алгоритм Рейдера............................................ Ц)7 5.3. БПФ с простыми множителями....................................114 5.4. Алгоритм Винограда преобразования Фурье........................122 5.5. Алгоритмы малоточечных ДПФ.....................................132 ГЛАВА 6. ПОЛИНОМИАЛЬНЫЕ ПРЕОБРАЗОВАНИЯ.................................137 6.1. Введение в полиномиальные преобразования .... 138 6.2, Общее определение полиномиальных преобразований . . . 142 6.3. Вычисление полиномиальных преобразований и операций приве- дения ....................>................................ 149 6.4. Двумерная фильтрация с использованием полиномиальных пре- образований ................................................152 6.5. Полиномиальные преобразования, определенные в модифициро- ванных кольцах..............................................159 6.6. Комплексные свертки.............................. ... 163 6.7. Многомерные полиномиальные преобразования . . . . 163 ГЛАВА 7. ВЫЧИСЛЕНИЕ ДИСКРЕТНЫХ ПРЕОБРАЗОВАНИЙ ФУРЬЕ С ПО- МОЩЬЮ ПОЛИНОМИАЛЬНЫХ ПРЕОБРАЗОВАНИЙ....................................165 7.1. Вычисление многомерных ДПФ с помощью полиномиальных пре- образований ......................................................166 7.2. Вычисление ДПФ с помощью многомерных корреляций и полино- миальных преобразований ......................................... 185 7.3. Сравнение с БПФ-алгоритмом...................................190 7.4. Алгоритмы нечетных ДПФ ......................................191 ГЛАВА 8. ТЕОРЕТИКО-ЧИСЛОВЫЕ ПРЕОБРАЗОВАНИЯ . 194 8.1. Определение теоретико-числовых преобразований . . 194 8.2. Преобразования Мерсенна................................... 8.3. Преобразования Ферма.........................................2®4 8.4. Ограничения, связанные с длиной машинного слова и длиной преобразования .................................................. 210 8.5. Псевдопреобразования 212 8.6. Комплексные ТЧП..............................................2I? 8.7. Сравнение с БПФ........................................... 22(J Приложение А. Связь между алгоритмами вычисления ДПФ и свертки, осно- ванными на полиномиальных преобразованиях.....................................221 АЛ. Вычисление многомерных ДПФ с помощью алгоритмов, исполь- зующие обратное полиномиальное преобразование.....................222 247
А.2. Вычисление многомерной свертки с помощью комбинации ме- тодов прямого и обратного полиномиального преобразования . . . 226 А.З. Вычисление многомерных дискретных косинусных преобразований с помощью полиномиальных преобразований........................ 229 Приложение Б. Алгоритмы вычисления произведений коротких полиномов 231 Б.1. Произведение полиномов по модулю z4+I..........................231 Б.2. Произведение полиномов по модулю (z5—l)/(z—1) .... 232 Б.З. Произведение полиномов по модулю 4-Zj Ч-1) (z52—I )/(zr2—1) 232 Б.4. Произведение полиномов по модулю (z4j-!-i) (z22+z2+l) . 233 Б.5. Произведение полиномов по модулю (z2i + l) (z\— 1)/(Z2— 1) 234 3аДачи.......................................................... 235 Список литературы 241 Список литературы, переведенной на русский язык . . 245 Дополнительный список литературы . . ... 246 Нуссбаумер Г. Н90 Быстрое преобразование Фурье и алгоритмы вы- числения сверток: Пер. с англ. — М.: Радио и связь, 1985. — 248 .с., ил. 1 р. 10 к. Изложены вопросы, связанные с дискретными преобразованиями, ко- торые применяются при цифровой обработке сигналов. Основное внимание уделено развитию теории и практическим алгоритмам выполнения цикли- ческой свертки и быстрого преобразования Фурье иа основе линейных полиномиальных преобразований. Изучены различные модификации пред- ложенных алгоритмов и их взаимосвязи. Для инженерно-технических работников, занимающихся решением прикладных задач цифровой обработки сигналов. 2402020000-032 л< ББК 32.81 п —7777---------104-84 046(01)-85 6Ф1 ГЕНРИ НУССБАУМЕР БЫСТРОЕ ПРЕОБРАЗОВАНИЕ ФУРЬЕ И АЛГОРИТМЫ ВЫЧИСЛЕНИЯ СВЕРТОК Редактор Е. А. Засядько. Художественный редактор Л. И. Сильянов. Художник Г. С. Студеникина. Технический редактор И. Л. Ткаченко. Корректор Т. Г. Захарова ИБ № 463 Сдано в набор 16.09.83 Подписано в печать 29.03.81 Формат 60х90/|6 Бумага кн. журнальная Гарнитура литературная Печать бфс, Усл. печ. л. 15,5 Усл. кр.-отт. 15,5 Уч.-изд. л. 15,92 Тираж 7000 экз. Изд. № 20344 Зак. № 522 Цена I р. 10 к. Издательство «Радио и связь». 101000 Москва, Почтамт, а/я 693 Набрано в московской типографии № 5 ВГО ’’Союзучетиздат” 101000, Москва, ул. Кирова, д- 40 Отпечатано в московской типографии № 4 Союзполиграфпрома при Государственном комитете СССР по делам издательств, полиграфии и книжной торговли 129041, Москва, Б. Переяславская ул., д. 46