Текст
                    В. В. ЛОСЕВ
МИКРО-
ПРОЦЕССОРНЫЕ
УСТРОЙСТВА
ОБРАБОТКИ
ИНФОРМАЦИИ
АЛГОРИТМЫ
цифровой
ОБРАБОТКИ
Допущено
Министерством народного образования БССР
в качестве учебного пособия для студентов
радиотехнических специальностей вузов
Минск ’’Вышэйшая школа” 1990

ББК 32.973.2я73 Л 79 УДК 681.325.5.068(075.8) Рецензенты: кафедра радиосистем Ленинградского электротехнического инете1 тута нм. В.И. Ульянова (Ленина); доктор технических наук, профессор, заведующий кафедрой радиосистем Одесского политехнического института М.Б. Свердлин 1 БИБЛИОТЕКА i' W:’’ -. •Г:'! | РДДИОге. .’CHG.fr> J Института ! Лосев В.В. Л79 Микропроцессорные устройства обработки информации. Алгоритмы цифровой обработки: Учеб, пособие для вузов. — Мн.: Выш. шк., 1990. 132 с.: ил. ISBN 5-339-00348-5. Описываются наиболее употребительные алгоритмы цифровой обработки сиге лов с помощью микропроцессоров и микроЭВМ. Рассматриваются вопросы повыш ния эффективности вычислительного процесса, быстрые алгоритмы вычислений нЛ более важных выражений и функций, применение этих алгоритмов в радиотехник с к их системах. Для студентов радиотехнических специальностей. Может быть полезно инжен рам, занимающимся вопросами обработки цифровой информации. 2404090000 - 034 Л ----------------- 30-90 М304(03) -90 ISBN 5-339-00348-5 ББК 32.973-2Я* © В.В. Лосев, 19^ ПРЕДИСЛОВИЕ В настоящее время цифровая обработка информации находит все более широкое применение в различных областях науки и техники. Можно с уверен- ностью утверждать, что она выделилась и оформилась в самостоятельное науч- ное и техническое направление, которое уже сейчас позволило получить результаты, ранее считавшиеся недостижимыми. Развитие указанного направления идет по двум основным путям: 1) раз- работки эффективных алгоритмов вычислений, минимизирующих количество элементарных операций (сложения, умножения, пересылки); 2) создания элементной базы в виде наборов микропроцессорных комплектов и микроЭВМ с соответствующим математическим обеспечением. Первое направление до недавнего времени полностью относилось к компе- тенции математиков, второе — развивалось усилиями специалистов по техни- ческим наукам. Интенсивное внедрение математических методов в технику, появление микропроцессоров и микроЭВМ, приведшее к компьютеризации многих сфер человеческой деятельности, в значительной степени стерло эти границы. Доступность и удобство вычислительных средств и увеличение слож- ности алгоритмов обработки потребовали от инженера глубокого владения арсеналом экономных вычислительных методов й умения использовать их при проектировании радиоэлектронной аппаратуры с применением микропроцес- соров и микроЭВМ. Незнание эффективных алгоритмов приводит к созданию вычислительных систем низкой производительности, что не только экономи- чески невыгодно, но в ряде случаев (например, при обработке сигналов в ре- альном масштабе времени) просто неприемлемо. В то же время прогресс в области совершенствования элементной базы и методов проектирования позволил значительно расширить возможности как программной, так и аппаратной реализации, открыть дополнительнее резервы повышения точности, помехоустойчивости, быстродействия и других показа- телей эффективности. Все это привело к значительной ревизии представлений о радиоэлектронных устройствах и процедуре их проектирования. Предлагаемое учебное пособие ставит перед собой цель объединить указан- ные направления и осветить наиболее важные проблемы цифровой обработки сигналов с единых методических позиций в простой и доступной для первона- чального изучения форме. Книга содержит материал, отраженный в учебных программах для радиотехнических специальностей. Она может &ять полезна также инженерам, занимающимся разработкой и эксплуатацией систем обра- ботки дискретной информации. В основу пособия положены курсы лекций, прочитанные автором на протяжении ряда лет в Минском радиотехническом институте, материалы практических занятий и лабораторных работ. От читате- ля требуются математическая подготовка и знание основ цифровой техники в объеме, не превышающем вузовские программы. 3
Автор благодарит рецензентов - кафедру радиосистем Ленинградского электротехнического-института им. В.И.Ульянова (Ленина) (зав. кафедрой доктор технических наук, профессор Ю.М. Казаринов) и М.Б.Свердлика.док тора технических наук, профессора, заведующего кафедрой радиосистем Одес ского политехнического института, - за замечания, способствовавшие улучше нию книги. Все отзывы и пожелания просим присылать по адресу: 220048, Минск, проспект Машерова, 11, издательство ”Вышэйшая школа”. Автор
СПИСОК ОСНОВНЫХ СОКРАЩЕНИЙ АЦП Б ПА БПФ ВКФ ДПФ ДОФ НОД нп О ДПФ ПИД тчп ЦДЛ ЦВУ аналого-цифровой преобразователь быстрое преобразование Адамара быстрое преобразование Фурье функция ВилеНкина-Крестеясона дискретное преобразование Фурье дискретная экспоненциальная функция наибольший общий делитель неветвящаяся программа обратное дискретное преобразование Фурье последовательность максимальной длины теоретико-числовое преобразование цифроаналоговый преобразователь цифровое вычислительное устройство
1. МИКРОПРОЦЕССОРНАЯ ОБРАБОТКА ДИСКРЕТНЫХ СИГНАЛОВ 1.1. АНАЛОГОВЫЕ И ДИСКРЕТНЫЕ СИГНАЛЫ о Электрические сигналы, с помощью которых передается информация, я» ляются аналоговыми и описываются непрерывными функциями, т. е. функ циями, заданными на несчетном множестве точек. В наиболее распространен ных случаях аргументами функций являются время t и частота f. Как аргу мент, так и сама функция s (?) могут принимать любые значения из некого рых интервалов ?0 < t < ?г , s0(?) <$(?)< (г). Пример аналогового сигнал: показан на рис. 1.1. В отличие от аналогового сигнала дискретный сигнал S (и) — решетчата: функция дискретной переменной п , принимающей только фиксированны значения. В большинстве практических приложений эти значения являютс равноотстоящими, поэтому можно пронумеровать их целыми числами п - = 0,1, 2, ... (см. рис. 1.1). В данном случае величина ид(п) называетсяотсчс том сигнала в точке и. Конечная последовательность отсчетов в //точках обе значается £s_'(n)} = s (1) s 1)}или в векторной форм 5д = [ад(0), ад(1).. sa(N~ Г)] . Для обработки в цифровых вычислительных устройствах (ЦВУ) дискре: . ные сигналы должны быть проквантованы по амплитуде, т. е. представлены: виде последовательности чисел с ограниченным количеством разрядов. Таки сигналы называются цифровыми. ‘ Цифровой сигнал обозначается {з(п)1 - — {«(0), ® О)» —> s(N— 1)} или в векторной форме S = [ s(0), s(l).s(N- - 1) ] . Преобразование сигналов в цифровую форму производится с пс мощью аналого-цифрового преобразователя (АЦП). Полученная в вычислительном устройстве информация выдается потр бителю в цифровой или аналоговой форме. В последнем случае между потр бителем и вычислительным устройством ставится цифроаналоговый преобр* зователъ (ЦАП). Рис. 1.1. Аналоговый и дискре1 ный сигналы. Рис. 1.2. Схема цифровой обработки. Таким образом, общая схема обработки информации принимает вид, по казанный на рис. 1.2. 1.2. ДИСКРЕТИЗАЦИЯ И КВАНТОВАНИЕ Преобразование аналогового сигнала в цифровую форму приводит к потерям информации. Поэтому при проектировании системы цифровой обра- ботки возникает задача оптимального выбора интервалов дискретизаций и квантования, минимизирующих эти потери и позволяющих получить устройст- во обработки приемлемой сложности. Для сигналов с ограниченным спектром по теореме Котельникова интер- вал дискретизации Т должен выбираться из условия Т < 1/24ах ’ (1'Л) где /тах - верхняя граничная частота спектра исходного сигнала. Условие (1.1) означает, что на период верхней гармоники сигнала должно приходиться не менее двух отсчетов. При этом потерь информации нет и аналоговый сигнал может быть восстановлен точно по своим дискретным отсчетам. Для нестационарных процессов с неограниченным спектром условие (1.1) выполнить невозможно. В. этом случае интервал дискретизации выбирается так, чтобы его длительность не превышала времени корреляции ткор (време- ни, за которое практически исчезает статистическая связь между соседними значениями сигнала). Ошибка в воспроизведении исходного сигнала оценива- ется выражением [ 7] a2 — (6а — 1)/12аг , где а — ткор /Г - отношение времени корреляции к интервалу дискретизации. Для квантования сигнала используется нелинейный элемент со ступенча- той амплитудной характеристикой. Входному сигналу, лежащему в интерва- ле Дху, соответствует одно значение выходного сигнала х.. Шаг квантования может быть как равномерным, так и неравномерным. Исходный сигнал искажается в любом случае. Искажения характеризуются шумом квантования. Наиболее употребительным является равношаговое квантование. Шум кван- тования чаще всего описывается нормальным случайным процессом, корре- ляционная функция которого зависит от числа уровней квантования. С увели- чением числа уровней квантования шум приближается к белому. 7
Для оценки потерь можно использовать соотношения, устанавливающие связь между моментами т. исходного непрерывного распределения и момен- тами этого распределения, полученными по сгруппированным на интерва- лах длиной Дх выборочным значениям. Для первого и второго центрального моментов эти соотношения имеют следующий вид [ 7]; ^,-^ = 0; -т2 = Дх2/12 . Другой подход дает использование теоремы Котельникова. Предположим, что последовательные значения амплитуд дискретизированного сигнала стати- стически независимы и описываются одномерной плотностью вероятности w(x). Преобразование Фурье функции w(x) называется характеристической функцией. Она является спектральным образом плотности вероятности. Огра- ничим характеристическую функцию некоторой "частотой” , т. е. будем рассматривать плотность вероятности w(x) как функцию с ограниченным спектром. По теореме Котельникова такая функция однозначно представляет- ся своими выборочными отсчетами, взятыми с интервалом '«‘«/„„.При замене сигнала его плотностью вероятности задача воспроизведения сигнала сводится к восстановлению моментов по его квантованным выборкам. Поэто- му число уровней квантования обусловлено важностью восстановления или сохранения моментов. Часто (например, в задачах обнаружения) достаточно эффективным бывает грубое квантование с интервалом h >а вплоть до дво- ичного. 1.3. МИКРОПРОЦЕССОРНАЯ ОБРАБОТКА СИГНАЛОВ 13.1. Представление чисел Числа в микропроцессорных системах представляются в виде совокупно- сти цифр. При этом количество двоичных разрядов называется форматом дан- ных. Наиболее употребительными являются следующие форматы: 1 символ - бит; 8 символов — байт; 16 символов - полуслово; 32 символа - слово; 64 символа - двойное слово. В большинстве микропроцессорных систем используется арифметика с фиксированной запятой (как более простая и быстродействующая при техни- ческой реализации по сравнению с арифметикой с плавающей запятой). При этом данные могут кодироваться тремя способами: 1) двоичным числом со знаком; 2) двоичным числом без знака; 3) двоично-десятичным числом со знаком или без него. Рассмотрим эти способы на примере 8-разряднрго микропроцессора. При первом способе старший разряд, называемый знаковым, содержит информа- цию о знаке, остальные разряды дают абсолютное значение числа. Положитель- ные числа имеют в знаковом разряде 0, а отрицательные числа — 1. Существуеь три разновидности такой записи -прямой код, обратный и дополнительный- Числа, записанные в виде абсолютного значения с добавлением знакового разряда, образуют прямой код. Например, числа 125 и —125 запишутся в пря- мом коде следующим образом: [125]^ = 0.1111101, [-125]^=!. 1111101. Прямые коды используются в операциях хранения, умножения и делени> чисел. В прямых кеДах удобно также суммировать числа с одинаковыми зна ками. При этом абсолютные значения складываются, а сумме присваивается код знака слагаемых. Однако, если слагаемые имеют разные знаки, то опера ция сложения в прямых кодах затруднена, так как в этом случае следует опре делить большее по модулю число, выполнить вычитание и присвоить разность знак большего по модулю числа. Поэтому для выполнения операции сложения используется обратный или дополнительный код. Для образования обратного кода отрицательного числа из прямого кода т знаковом разряде следует сохранить единицу, а во всех остальных разряда? заменить единицы на нули, а нули на единицы. Например, число -125 в обрат ном коде запишется так: [ 125]о = 1.0000010. Обратный код является допол нением модуля исходного числа до наибольшего числа без знака, пбмещакнце гося в разрядную сетку. Для нашего примере 1111161 + 0000010= 1111111 = = 27 -1. Дополнительный код получается из обратного, если к младшему разряд} прибавить единицу. В частности, дополнительный код числа —125 равет [-125] = 1.0000011 .Дополнительный код без знакового разряда является дополнением модуля числа до величины 2”~1 , где л — количество разрядов i формате. Если операция сложения выполняется с использованием дополни тельного кода, то и в памяти удобно хранить числа в дополнительном коде. Использование знакового разряда позволяет в л-разрядном процессора работать с числами в диапазоне ±(2"~1 - 1). Приведем этот диапазон для 8 разрядного процессора (отрицательные числа записаны в дополнительноь коде): 10 0. . . 01 -127 1 1 1 ... 1 1 -1 0 0 0 ...... 0 0 0 0 ... 0 1 1 011... 11 +127 При втором способе представления знаковый разряд отсутствует, поэтом; считается, что 0—(2*—1); все числа положительные и принимают значения в диапазон! 0 0 0 ... 0 0 0 0 0 0 ... 0 1 1 0 О 0 ... 1 0 2 1 1 1 ... 1 0 254 1 1 1 ... 1 1 255 Двоично-десятичное представление сострит из тетрад, каждая из которы представляет собой двоичное число со значениями от 0 до 9. Для 8-разрядноп процессора количество тетрад равно двум. При этом диапазон представлени чисел равен 0—99: 8 9
00000000 о 00000001 1 00010000 10 1 0 0 1 1 0 0 1 99 Способ представления определяется программистом. Каких-либо особых сигналов, указывающих на тот или иной способ представления чисел,микро- процессор, как правило, не вырабатывает. 13.2. Арифметические и логические операции Обработка информации в микропроцессорных системах выполняется при помощи набора одноместных или двухместных операций (сложения, вычита- ния, умножения, деления, левого и правого сдвигов, конъюнкции, дизъюнк- ции и т. д.). Эти операции либо предусмотрены системой команд микропро- цессора, либо организуются программистом. В последнем случае длительность выполнения операции зависит от качества программы и на ее составление сле- дует обратить особое внимание. Операцию будем называть простой, если она имеется в системе команд микропроцессора, и сложной , если она организуется программистом. Просты- ми являются операции сложения, вычитания, сдвига, конъюнкции, дизъюнк- ции. К сложным отно^пся, например, операции умножения и деления, образу- ющиеся путем комбинации простых и требующие для своей реализации значи- тельно больших временных затрат. В ряде случаев сложная операция выполня- ется специализированным высокоскоростным модулем, однако включение та- ких модулей в систему требует дополнительных энергетических затрат, про- граммного н аппаратного сопряжения с основным вычислителем. Поэтому в любом случае сложная операция дороже простой по временным и материаль- ным затратам и количество таких операций в вычислительном процессе следует оптимизировать. Сказанное в первую очередь относится к операции умножения. Существует много способов выполнения умножения. Рассмотрим наибо- лее употребительный и получивший название алгоритма Бута. Алгоритм Бута ' основан на одновременном анализе двух соседних разрядов множителя и мо- жет быть использован для чисел, заданных в дополнительных кодах. При этом произведение получается также в дополнительном коде сразу со знаком. Для вывода алгоритма Бута рассмотрим множитель В , записанный в до- полнительном коде в виде и-разрядного числа, старший разряд которого явля- ется знаковым: (Ч=Л-Л-2-йо- Истинное значение числа равно В = -2й-1 Ьп_1 + 2я-2/>и_2 +...+ 2ЬГ + bQ . Добавим к В величину (Z>n22"~2 - &п22"-2) +... + (b0 ~ b0) +b_ j , где 10
=0. Прибавленная величина равна нулю и не меняет значения В, но поз- воляет записать: -Л-»)2"’2 +-+ (»<, -»,)2* + (*., -».)• Отсюда следует, что умножение сводится к умножению множимого на коэф- фициенты множителя (b._i ~b{) = 0,1 ,-1 и суммированию частных произве- дений по правилу, состоящему из трех частей: 1) если Ь^ - Ь{ = 0, то накап- ливается не множимое, а нулевая строка, т. е. суммирование как таковое от- сутствует; 2) если Ь{_. ~ 1, то множимое добавляется в накопитель; 3) если t - b. = —1, то множимое вычитается из накопителя. При сдвиге освобождающаяся позиция заполняется значением знакового разряда. Пример 1.1. Перемножить числа Л = -3 я В = -5. Прямые и дополнительные ко- ды этих чисел равны: (Л|пр = 1.011; (-4 1д = i.iOl; [Я]пр = 1.101; 1*1Д = i.Oll. Найдем значения Д = Ь{. Оки равны 13 2 1 0 Д -1 10 -1 Процедура умножения для 8-разрядного процессора со сдвигом частичных произве- дений вправе выглядит следующим образом: Шаг 1 00000000 Начальное состояние регистра произведения. Так как Д = -1 , + ООП 00110000 00011000 производится вычитание числа -3, т. е. суммирование числа 3 и по- следующий сдвиг. Шаг 2 ШагЗ 00001100 + 1101 Так как Д = 0, производится только сдвиг. Так как Д = 1, произ- водится суммирование числа -3, записанного в дополнительном ко- де, и сдвиг. 11011100 Шаг 4 июню + ООН Так как Д = -1, производится вычитание числа -3, т. е. прибав- ление числа 3 и последующий сдвиг. 00011110 0000Ш1 Перенос из знакового разряда теряется. 13.3. Масштабирование и округление результатов счета Использование арифметики с фиксированной запятой приводит к ограни чению динамического диапазона обрабатываемых чисел. Поэтому при выпои 11
нении вычислений следует своевременно производить масштабирование, т. е. исключать часть разрядов, выходящих за пределы разрядной сетки рабочих регистров. При этом возникает ошибка, равная 8 = X - X', где X —исходноечисло; X1 -преобразованноечисло. Существует два метода выполнения этой операции - усечение и округле- ние. При усечении т-разрядного числа до п разрядов младшие т ~п разрядов исходного числа отбрасываются. Ошибка усечения Sy удовлетворяет неравен- ству 2 > 6у > 0.. При округлении m-разрядного числа до «-разрядного исходное число за- меняется на ближайшее «-разрядное число. Практически это выполняется сле- дующем образом. Если старший отбрасываемый разряд прямого кода равен нулю, то оставляются только первые «разрядов. Если же старший отбрасывае- мый разряд равен единице, то к оставшемуся числу добавляется единица. Ошибка округления 5 удовлетворяет неравенству —2-"-1 <6о <2 Округление является более точным способом, чем усечение, поскольку при округлении максимальная ошибка равна половине шага квантования. Однако усечение имеет преимущество в скорости. Следует отметить, что масштабирование результатов счета допустимо дале- ко не всегда. Например, если выполняются арифметические операции над смесью сигнала й шума при малом отношении сигнал/шум, то исключение младших разрядов приведет к потере информации о сигнале и получению не- верного результата. В такой ситуации разрядная сетка процессора должна вы- бираться с учетом Возможных значений сигнала и шума. КОНТРОЛЬНЫЕ ВОПРОСЫ И ЗАДАЧИ 1.1. Что общего у дискретного и цифрового сигналов и в чем заключаются их разли- чия? 1Д. Продискретизир?йте и запишите в виде последовательности отсчетов в восьми Точках следующие функции: а) прямоугольный видеоимпульс с единичной амплитудой и длительностью, равной половине интервала наблюдения^ ,т.е. Г1, при 0 < г < / /2 ; т(Г) = 5 ^0, при Г> fj/2 ; б) гармонические функции sincot, ata2(*», <с=2я//1; в) прямоугольный радиоимпульс с единичной амплитудой и длительностью, равной t j /2, с частотой заполнения 0^ =4w, 13. Какую частоту дискретизации следует выбрать для сигнала, прошедшего фильтр иижних частот с частотой среза 200 Гц? 1.4 . Запишите в формате 1 байт числа —117, -103 в прямом, обратном и дополни- тельном кодах. U. Перемножьте числа 7 (множимое) и (множитель) по алгоритму Бута. . / 2. ЭФФЕКТИВНЫЕ АЛГОРИТМЫ ВЫПОЛНЕНИЯ БАЗОВЫХ ОПЕРАЦИЙ 2.1. ЭФФЕКТИВНОСТЬ АЛГОРИТМОВ И ОЦЕНКА ИХ ВЫЧИСЛИТЕЛЬНОЙ СЛОЖНОСТИ Вопросы сложности алгоритмов и устройств всегда были в центре внима- ния инженеров. Само понятие сложности эволюционировало с развитием тех- ники и имеет много различных трактовок, отражающих как специфику устройства, так и уровень технического развития. Так, сложность первых ра- диоэлектронных устройств оценивали количеством содержащихся в них функ- циональных элементов. С развитием микроэлектроники отдельный элемент стал заменяться модулем — прибором, содержащим много элементов. Понятие сложности алгоритма также допускает различные трактовки. Здесь могут учитываться или не учитываться такие факторы, как размер ма- шинного слова, емкость памяти, различие в длительности выполнения отдель- ных команд и т. д. К настоящему времени не существует достаточно универсального понятия сложности, которым можно, пользоваться в любой ситуации. Вместе с тем соз- дан ряд моделей вычислительного процесса, позволяющих раскрыть вычисли- тельную сложность отдельных задач и сравнить различные алгоритмы. Наибо- лее употребительной является модель иеветвящейся программы. Деветвящаяся программа представляет собой программу без циклов, в которой цикл заменяется копированием повторяющейся команды соответст- вующее число раз. Число шагов такой программы как функция от размера входа N называется временной сложностью, а число переменных, участвую- щих в вычислениях, — емкостной сложностью. Пример 2.1. Рассмотримвычислошеполинома р(х) = aNiN + + ... +«0 . Можно записать: «1» + «0 , N= 1; (a2z +в(), ,tf= 2; ((«Зх +«2)т +ej)x +я0 ,.N= 3. Неветвящаяся программа приведена в табл. 2.1. Табл ица 2.1 лг=1 У=2 t*~ a{z P*-t+a0 t *-t + а2 13 12
Окончание табп. 2.1 У=1 Л'=2 А=3 (HI Г+-М р - t+ «0 Г+-Г + Г+-ГЗ Р*-Г+ «0 Временная сложность этой программы равна 2N, а емкостная N+ 4 . Дадим формальное определение неветвящейся программы. Пусть заданы: 1) набор входных переменных х0 , ->xN-i > 2) кольцо К (или поле F). Будем считать, что кольцо и поле - это некото- рое множество элементов, с которыми выполняются операции сложения и умножения (строгое определение кольца и поля дано в § 3.5); 3) множество Р базисных операций Р = {+ , х , /} и £х у} , где + , х , / - двухместные арифметические операции сложения, умножения, деления, ху - одноместная операция умножения на элемент кольца или поля. Неветвящаяся программа (НП) представляет собой последовательность строк (команд), /-я из которых имеет вид zl~ ffat ,xj • — >xj )» * ‘ ’i ‘u 'i 'v где i, < I, ... ,iu< I, fie P- Для любой базисной операции из множества Р фиксируется число Х(/), называемое сложностью этой операции. Сложностью Я/7называется сумма всех X (JJ) по всем строкам этой программы. Рассмотрим ряд модификаций этого понятия. 1 . Пусть Х(/) = 1 для всякой /еР . Тогда соответствующая сложное» ’’считает” число всех операций НП и называется тотальной сложностью. Обо- значим ее С{. 2 .Пусть Х(+) = 1, Х(х ) = Х(/) = Х(ху) = 0,т. е.учитываются только операции сложения. Соответствующая сложность называется аддитивной. Обо значим ее Са . 3. Пусть Х(х) = Х(/) = 1, а Х(+) = Х(ху) = 0, т. е. учитываются только нелинейные операции — умножение и деление. Сложность-такого рода называ ется мультипликативной. Обозначим ее Ст . Аддитивная сложность является хорошим критерием качества алгоритм* при обработке бинарных или троичных сигналов, элементы которых кодирУ ются в алфавитах (0,1), (1,-1), (1,0,-1). В этих случаях операции умножений и деления отсутствуют. Мультипликативная сложность обычно используете* тогда, когда операции умножения существенно дороже операции сложений При тотальной сложности все операции оцениваются одинаково. Она исполь- зуется при анализе вычислителя, построенного на матричных процессорах. Заметим также, что сложность существенно зависит от выбора кольца К или поля F . Например, для вычисления выражениях2 + у2 в поле веществен- ных чисел необходимо выполнить два умножения, а в поле комплексных чи- сел только одно, так какх2 +у2 = (х +/у) (х При оценке качества алгоритма обычно оперируют асимптотической слож- ностью, т. е. величиной, которая получается при неограниченном увеличении размера входа. Она в итоге определяет размер задач, которые можно решить алгоритмом. Асимптотическая сложность оценивается порядком роста функ- ции без учета мультипликативных коистант. Например, если N входных пере- менных обрабатываются за время с№ , где с — некоторая постоянная, то вре- менная сложность этого алгоритма есть О(№) (читается: порядка А2). Ошибочно думать, что значение эффективных алгоритмов уменьшится с ростом быстродействия вычислительных машин. В качестве примера рассмот- рим пять алгоритмов A1-AJ различной сложности для решения одной и той же задачи: Алгоритм Временная сложность Ai А2 - Alog^A А3 ' N2 А4 N3 Л, 2* В этих алгоритмах под временной сложностью будем понимать число еди- ниц времени, требуемого для обработки входа размером А. Пусть, например, единицей времени будет одна миллисекунда. Тогда алгоритм А { обработает за 1 с вход размером 1000, в то время как алгоритм А - вход размером не более 9. В табл. 2.2 приведены размеры задач, которые можно решить за раз- личное время этими алгоритмами. Таблица 2.2 Алгоритм Временная Максимальный размер задачи сложность 1 с 1 мин 1 ч А1 АГ 1000 6«104 3,6-106 А2 AlogjA 140 4893 20 "10s Аз № 31 244 1897 № 10 39 153 Л 9 15 21 в 1п^едпопожим’ что быстродействие вычислительной машины увеличилось О раз. В табл. 2.3 показано, как при этом возрастут размеры задач. 14 15
Таблица 2.3 Алгоритм Временная сложность Максимальный размер задачи до ускорения после ускорения А1 N lOSj А2 Nloi2N 10S2 (при больших S2) А3 N2 S3 З,16$3 А4 N3 S4 2Д5 S4 А3 2N Ss $s + 3,3 Видно, что увеличение быстродействия приводит к существенному увели- чению размера задачи только в алгоритмах с малой временной сложностью. Предположим, что вместо увеличения быстродействия мы будем совер- шенствовать алгоритм. Рассмотрим табл. 2.2, взяв для сравнения колонку с временем решения 1 мин. Тогда, заменив алгоритм А 4 алгоритмом Л э , мож- но получить шестикратное увеличение размера задачи,.а при замене алгоритма А4 иа алгоритм Л2 размер задачи возрастает в 125 раз. Если выполнить срав- нение за 1 ч, то различие окажется еще более существенным. Приведенные примеры показывают, что асимптотическая сложность слу- жит важной мерой качества алгоритма. В практических приложениях все задачи имеют ограниченный размер. По- этому, кроме порядка роста, следует учитывать и мультипликативную кон- станту. Иногда больший порядок роста может иметь меньшую мультиплика- тивную константу, и в этом случае такой алгоритм окажется предпочтитель- ным при малых размерах задачи. Например, предположим, что временные сложности алгоритмов Л , Л4 , А* равны соответственно 100QV, 100/VlogjW, 10№ , № и 2^ . Тогда алгоритм А будет наилучшим для задач размером 2 </V<9, А3 - для задач размера 10 <2V<58,43 для задач раз- мером 59 1024 и A j для задач размером N > 1024. 2.2. ВЫЧИСЛЕНИЯ С КОМПЛЕКСНЫМИ ЧИСЛАМИ Рассмотрим два комплексных числа а + jb и с+jd, где/ = . Сумма этих чисел равна (д + с) + / (i + d), и ее вычисление йе представляет труд- ностей. . Для произведения обычно используется общеизвестная классическая фор- мула (а + /Ь) (с + jd) -(ас ~ bd) + / (ad + be) . Она позволяет найти действительную и мнимую части за четыре операции умножения (ас , bd , ad , be) и две операции сложения (ас - bd , ad + be). Другой способ состоит в следующем. Вычислим сначала промежуточные величины: т1 = (а + b) (с + </) - ас + ad + be + bd; т2 = ас ; т3 = bd . Дейст- вительная часть произведения равна ас - bd - т2 - т3 , а мнимая ad + be s = ~ т2 - т3 . Прн этом выполняются три операции умножения и пять one рации сложения. Алгоритм вычислений имеет следующий вид: 16
Dl*~ a,D2+- b , Ев*- c ,D4*-d ; S\-*~D\ + D2= a+b ; S2*-D3 + D4 = c + d ; 53*-51-52 = (a +b)(c + d); S4 *~D1'D3 = ac; S5 >-D2-D4 - bd; S6 *- S4 - S5 - ac - bd (действительная часть); 57 *-S3 ~ S4 = ad + be + bd ; SS*-S7~S5=ad+bc (ьяимаячасть). Пусть M и А — время, требуемое для выполнения операции умножения и сложения соответственно. Тогда второй способ лучше первого, если ЗМ + 5Л < <4Af + 24, Af/Л > 3. Как уже указывалось, длительность операции умножения в микропроцес- сорах существенно больше длительности операции сложения. Поэтому приме- нение этого способа в задачах с большим числом комплексных умножений да- ет заметное сокращение времени вычислений. Рассмотрим еще один алгоритм. Его выгодно использовать, когда одно из чисел известно заранее. Вычислим: т1 =с(а + Л); т2 = b(c + d); тз = a(d~c). Действительная и мнимая части равны: ас ~ bd ?= т} - т2; ad + be = Wj + m3 . Алгоритм требует выполнения трех операций умножения и пяти операций сложения. Однако если число с +/d известно заранее, то можно предваритель- но вычислить суммы с + d nd - с. При этом получается алгоритм с тремя опе- рациями уьшожения и тремя операциями сложения. 23. ВЫЧИСЛЕНИЕ СТЕПЕНЕЙ Рассмотрим задачу нахождения N-й степени некоторого действительного числа х , т. е. вычисление выражения х^, где N - целое число. Прямой путь со- стоит в последовательном получении степеней х2 ; х3 , xN путем многократного умножения на х . Для вычисления АФ степени следует выпоп- Нить N— 1 умножений. _ Можно построить более экономичные алгоритмы. Предположим, что N — — 2 . Тогда для вычисления №к степени nocTaTO4Ha.ebfflOHHHTbA^4ogJV -умножений. Например, х32 можно вычислить за сл(@дУ1ш^О13№Н]&игав: X , X* г® „1® „32 .. I ’ * ’ х •х • Минского f к- 5302 радиотехнического института ii 17
Рассмотренный метод носит название бинарного (он был известен еще в древней Индии) н может быть обобщен на произвольное значение числа N. Для этого запишем Nв двоичном коде, например #= 19 = (10011),. Исклю- чим цифру старшего разряда, которая всегда равна единице, а в остальных раз- рядах произведем замену нулей и единиц буквами X и SX по правилу: 1-+SX, 0 -* S . Для числа # = 19 получим SSSXSX. Эта последовательность букв дает правило вычисления хЛ? , если по букве S результат предыдущего шага возво- дить в квадрат, а по букве X умножать на х . Для нашего примера получим по- 2 4 8 9 18 19 следовательиость шагов х , х ,х ,х ,х ,х , Оценим количество умножений. Двоичное представление числа # содержит Llog,A'J + 1 бит, где LaJ - наименьшее целое, не превосходящее а - Пусть в этом представлении содержится v единиц. Буква S появляется при замене каждого бита, кроме первого, а буква X — при замене каждой единицы, кроме первой. Поэтому общее количество умножений равно Llog#J + v - 1. Вели- чина v имеет максимальное значение, равное Ртах = Llog,WJ+ 1, если двоич- ное представление состоит из одних единиц, поэтому максимальное количест- во умножений равно 2Ltog,#J - Если N равно степени двойки, io v = 1, и в этом случае колтесхвххумцожений минимально и равно log,#._____ *Ри1ырный'~м>иод 1юзволяет~^т>кратйТь^количьС'1ЪО умножений, однако не гарантирует минимума. Покажем зто на примере. Пусть N = 15 = (1111), -» -> SXSXSX, что дает последовательность х1 , х3, х6 , х7, х14 , х15 > на вычисле- ние которой затрачивается шесть операций умножения. То же самое можно сделать за пять операций следующим образом:х2, х3, х6 > х11, xIS . Сокращение количества умножений стало возможным благодаря тому, что число 15 имеет своими множителями числа 3 и 5. В общем случае составное число можно записать как #= pq . При таком представлении сначала вычисля- ется число у - хр , а затем число у = (х₽)? = х" . Описанный алгоритм называется методом множителей и формулируется следующим образом: • 1) если #= 1, то вычислений не требуется; 2) если # - простое, то для получения хлг сначала по методу множителе! вычисляется хЛГ_ 1 , а затем результат умножается на х; 3) в остальных случаях число N представляется в виде # = pq , где р - наименьший простой делитель Nnq > 1. С помощью метода множителей сначала находится у = хр , а затем у9 - = х*. —ftjuwreip 2.2. Пусп^= 21 = 3¥7. Тогда получим х2 , х3 , х® , х12 , х18 , х21 . Хотя' метод множителей дает в среднем лучшие результаты do сравнению' бинарными, в некоторых случаях он может проигрывать последнему. Напри мер, при N = 33 метод множителей требует семи операций умножения, а бл нариый - только шести. В ряде случаев оба рассмотренных метода оказываются неоптимальными Например, если N = 23, то оба метода требуют семи операций; умножений однако х23 можно вычислить за шесть операций умножения следующим обр* эом: х2 , х3, Xs, х’° , х20, х23 . Поскольку использование любого из рассмотренных методов не гарант# рует минимального количества умножений, для оценки степени их оптимал» 18
ности полезно определить абсолютный минимум, который может быть достиг- нут независимо от применяемого метода. Обозначим эту величину /(ЛЭ. Из предыдущих рассуждений легко получить, что l(N) > riog2An , где ГаП - наименьшее целое, большееили равное а . Другими словами, в любом случае необходимо затратить не менее riog2 АП умножений. Однако этого количест- ва умножений может оказаться недостаточно. Бинарный метод гарантирует окончание вычислений за 21_log2AU умножений, а метод множителей за l(N) < 1(р) + /(</) умножений. На рис. 2.1 показаны оптимальные алгоритмы с минимальным количест- вом умножений для N <С 100 [ 6]. Эти алгоритмы изображены в виде дерева. Путь сверху вниз соответствует цепочке умножений. Например, для N = 31 получим путь 1—2—3—5—10—11—21—31, который соответствует последова- тельности операций: х • х = х1; х2- х = х3; х3- х2 = xs; xs- xs = х10: х10- х= = х“; xII-xio = x21; х21-х1О = х31 . Сравним рассмотренные методы с точки зрения загрузки памяти. Бинар- ный метод является самым экономичным, так как требует хранения в памяти только значения х и текущего промежуточного результата. Все остальные ме- тоды требуют хранения ряда промежуточных степеней переменной х . В заключение заметим, что под х может пониматься не только действи- тельное число, но н более сложный объект, например многочлен или мя трипа Рис. 2.J. Дерево, минимизирующее число умножений для всех Д'< too. 2.4. ВЫЧИСЛЕНИЕ ПОЛИНОМОВ 2.4J. Меуод Горнера Произвольный полином степени N может быть записан как 19
p(z) = cnzn + cy_1zJV * + ... + ciz +c0 . (2.1) Наша цель состоит в определении величины р (z) при фиксированных коэффи- циентах cN, cN_x,...*, с0 и переменной z . При непосредственном использовании формулы (2.1) следует выполнить TV—1 умножений для вычисления всех степеней z , N умножений дня определе- ния произведений этих степеней на коэффициенты cN, cN_ ,.... сг и N сложе- ний для суммирования произведений. Таким образом, вычислительная слож- ность равна 2N - 1 операциям умножения н Nоперациям сложения. Более экономичный способ дает метод Горнера. Метод был описан Вилья- мом Горнером в 1819 г., хотя фактически использовался еще Исааком Ньюто- ном в 1711 г. Представим полином p(z) в виде p(z) - (...((cjyZ + cN ^z + + cn_2)2 + ... + ct) z + с0 . Вычисления начнем с определения произведения , затем суммы c^z + cN_t , далее произведения (c^z + c^ ^z и т. д. Не- трудно подсчитать, что метод Горнера требует не более N операций умноже- ния и N операций сложения. Если полином не имеет каких-либо особенностей, то метод Горнера является оптимальным как по числу умножений, так и по числу сложений. Полиномы специального вида можно вычислить и за меньшее количество операций. Например, рассмотрим полином p(z) ? 2 = ^+_1J2 (г + 2)• Прямой метой требует?чет&рех операций ^м^ожеяия и трех операций сложе- ния. Если воспользоваться разложением на множители, то полином p(z) мож- но вычислить только'едцдве операции умножения и две операции сложения. 2.4.2. Вычисление полинома в точках Рассмотрим задачу вычисления полинома в Нескольких точках а, , аг,.... ак , k<N. Положим сначала z = . Можно записатьp(z) = (z -a,) <j,(z) + + r(z), где q(z) и r(z) - частное и остаток от деления p(z) на z - 4^ . Этот ре- зультат можно распространить на большее число точек. Рассмотрим произведе- ние к m(z)= П (z - аЛ i~i 1 и запишем р (z) = m (z)q (z) + r(z). В точке z = ai полином m (z) равен нулю, поэтому p (a;) = r(aj). Теперь проблема вычисления полинома р (z ) свелась к вычислению полинома г (г), степень которого меньше. Используем этот подход для построения быстрого алгоритма вычисления полинома степени N — 1 в N точках, полагая для простоты N — 21. Раздели»1 N точек на две половины и образуем полиномы N/2 N <г)= П ~ ai> • =. П -i ai> 1 /=0 ' j=()V/2)+l , t Разделим p(z) на m (z) и m2(z). При этом получим остатки г^) иг2(г) сте- 20
пени N(2. Теперь проблема свелась к вычислению этих остатков в NI2 точках. Для вычисления остатков можно воспользоваться аналогичным приемом, по- вторяя его многократно. Пример 2.3. Пусть требуется вычислить полином p(z) = г3 - 2z2 + 3z + 1 вточ- Kjxi, равных -1,0,1, 2. Образуем т, (я) - (г + 1)» = , т2 (z) = (z-1) (z-2) = z1 - 3z + 2. После деле- ния p(z) на т, («) и т2(з)получим z1(z) = 6z+l, (z) = 4z - 1. Разделив г (z) на j- +1 и z, запишем р(-1) =-5, р(0) = 1. Аналогично, разделив r2 (z)Haz - 1 и z-2, найдем р(1) = 3, р(2) = 7. Может показаться, что описанный алгоритм сложен из-за необходимости выполнять довольно трудоемкие операции деления н вычисления остатков. В действительности этот процесс оказывается весьма простым, если воспользо- ваться теорией сравнений. 2.4.3. Сравнения и вычеты Пусть акт — целые числа, причем т — положительное. При делении числа а на число т получаются частное q и остаток г. Число а связано с ними соот- ношением а = qm + г, 0 < г < m . Если а н b дают при делении на т один и тот же остаток, то говорят, что а сравнимо с Ъ по модулю т . Число т называется модулем. При этом при- нята следующая запись: а = b mod т. Пример 2.4. Справедливы следующие сравнения: 5=lmod2, 8^3mod5, 8 = з —2 mod 5 . Числа, сравнимые по модулю т , образуют класс сравнимых чисел. Всем числам этого класса соответствует один и тот же остаток. Этот остаток назы- вается вычетом по модулю т н обозначается < * ">. Если а = bmodm ,то <а >= = <Ь >. Всего имеется т вычетов. Любой вычет, кроме нулевого, имеет два пред- ставления- положительное н отрицательное. Полная система вычетов может строиться как система неотрицательных вычетов и как система абсолютно ми- нимальных вычетов. Пример 2’.5. Пусть т - S. Вычеты равны: <0>=t<0>,<l> = <-4>,<2> = = <—3> , <3> = <-2> ,<4> = <—1> . Система неотрицательных вычетов содержит чис- ла 0, 1, 2, 3, 4, Система абсолютно минимальных вычетов представляется рядоьГ^2, —1, 0.1,2. Из определения вычета следует, что <х±у > = «х>±<у » ; <ху >. = «х>*<у». Во всех приведенных определениях слово "число” можно заменить сло- вом ’’полином”. При этом получим систему полиномов, сравнимых по моду- лю некоторого полинома. Теория полиномиальных сравнений во многом аналогична теории число- вых сравнений. Приведем основные определения. ‘Полином P(z) делит полином Я(г), если существует полиномD(z), ra- il
кой, что H(z) = P(z)£>(z). Если P(z) не является делителем Я(г), то в ре- зультате деления H(z) на P(z) получается частное и остаток R (z): H(z) = = P(z)D(z) + R (z). Степень остатка меньше степени полинома/’(z) (записы- вается deg/? (z) < degP(z)).Bce попиномы, дающие при делении на P(z) один и тот же остаток, называются сравнимыми по модулю Р(г). Записывается /?(z) = //(z)modP(z), а сам остаток называется полиномиальным вычетом. Вернемся теперь к задаче вычисления полиномов - остатков. Она сводит- ся к приведению полинома р(г) по модулю полинома m(z). Пусть щ(г) = ' N-i R-i = z" + Z т.21. Тогда по свойству сравнений m(z) =0, т. е. z = — Б m.z; 1=0 1 i=i 1 N-i к, следовательно, z^ можно заменить полиномом — Б 1=0 m/z/ . В частном слу- чае, когда т (z) = z - а, имеемp(z)mod(z - а ) = р(в) . Пример 2. (^Вычислим остатки отделения пол жома p(j) = а3 - 2х2 + Зг+1 (из примера 2.3) на полжомы т1 (а) = а2+ а, (а) = а3 - За + 2. Учитывая, что г2 = -а для т1 (а), получаем р (zjmodffij (а) = а2 (а - 2) + За + 1 = -а (а-2) + За + 1 = -а2 + 2а + За + + 1 = ба + 1. Аналогично для т2 (а) записываем: р (a )modm2 (а)= а2 (а -2) + За + 1 = (За - 2) X X (а - 2) + За + 1 = За2 -5а+ 5 = 9а - 6 - 5а+5= 4а - 1. 25. УМНОЖЕНИЕ ПОЛИНОМОВ 25.1. Алгоритм "разделяй и властвуй” Для решения той или иной задачи ее разбивают на части и из их решения строят общее решение. Данный прием можно использовать рекурсивно, что позволяет получить довольно эффективное решение. Примером этого может служить рассмотренная в § 2.4 процедура вычисления полинома в точках. Описанный способ часто называют алгоритмом "разделяй и властвуй". Приме- ним его для вычисления произведения двух полиномов. Рассмотрим два полинома степени N— 1: Я-1 , Я-1 , p(z) = Б afzf; q(z)= Б b.z'. l=o i=o ‘ Их произведение равно 2ЛГ-2 p(z)<?(z)= Б скг, к=о к Где ск = Б ак.Ь.. К i=0 1 Вычисление произведения p(z)<?(z) фактически сводится к определению коэффициентов ск , каждый из которых равен сумме произведений af>. с усло- вием i + / = к . 22
Число различных произведений вида ab. равно N2 , а полином-произведе- ние имеет 2N- 1 коэффициентов. Поэтому сложность реализации прямого ме- тода равна № операциям умножения,№ - 2N + 1 операциям сложения. На- пример, если p(z) -alz-^ao в q(z)^b\z + b0 ,топроизведение этих поли- номов равно + («,&<> +«0^) z + «Д На вычисление затрачивается четыре операции умножения (a, ft, , alb0 ,aQbv а0&0)иодна операция сложе- ния + aobi ‘ Для построения более эффективного алгоритма рассмотрим сначала умно- жение полиномов первой степени p(z) = «,z+e0,<?(z) = 6,z + 6Q .Произ- ведение этих полиномов можно вычислить за три операции умножения (вмес- то четырех) по следующему алгоритму: =в0Ь0 - т2 = «А > тз =<.«! +во) (Ь! +Ьо)-> p(zk(z) = m2z2 + (m? - т2 - m1)z + ml . Нетрудно увидеть, что этот алгоритм совпадает с алгоритмом умножения комплексных чисел, если заменить z на / . Хотя в данном случае требуется че- тыре операции сложения (вместо одной), алгоритм оказывается полезным при умножении полиномов более высоких степеней. Для иллюстрации рас- смотрим случай,когдаN= 4,т.е. p(z) = a3z3 + a2z2 + a,z +aQ ,q(z) = b3z3 + + b2z2 + b'Z+b0. Прямой метод требует 16 операций умножения и 9 операций сложения. Разделим оба сомножителя на две части и представим их в виде: p(z) = s(z)z2 + r(z); q(z) = u(z)z2 +e(z) , где s(z) = a3z +a2; u(z) = ft3z+62; t(z)=a,z +a0; e(z) = 6,z + 60. Произведение этих полиномов равно p(z)q(z) = s(z)u(z)z* + (s(z)o(z) + + t(z)u(z)) z2 + t(z)o(z). Воспользуемся теперь рассмотренным способом умножения полиномов первой степени за три операции умножения. Запишем произведения: Wj =t(z)»(z) , т2 = s(z)u(z); т3 = (s(z) +r(z))(u(z) +e(z)). Искомый полином равен P(z)q(z)= m2z* + (m3 ~m2 -m^z2 + m, = = C6Z* +cszS +c4z4 +c3z3 + c2z2 +c,z +c0 . Полный алгоритм запишется следующим образом:
M2^aibi’ dx А+яо •- d - d^3 ; M, <- d-M, ~M„ .1 JO вычисление полинома m1 =M2z2 +Мгг+М0 ; Л» ^ejbj5 L2 *• вЗЬ3 5 Л ^e3 + eji Л ^Ьз+Ьз> p 4 ^P-Lz-L* вычисление полинома т2 =L2z1+L1z+ Lq ; li *• ai + a3 > 'o ^a2+a0' \ ^Ь3 + Ь1' Ao ^bz + bo’ Q. ~loho-> e2 -/Д; «! "ЧН; 4,3 *A + Ao; <7 0, ^-c2~e0 вычисление полинома . w3=G2z2 + G,z+0o ; Н» ^о ~ ’ вычисление полинома Hi m~m^m=Hz2+Hz+Hn. нг ^q2~l2~m2-, Иактъзуя полученные выражения, можно записать: с6 -^L2=a9b3', С5 4" Ll=a3b3+ азЬ2> С4 Ч + Я2 ^аЗА1 + flJ63+ а1АЭ; С3 *• Я!=вз\+ °2Ь1 + а1Ь2 + а0Ь3> С2 ^Н^М2=а2Ь^а1Ь^ а0Ь2> С1 =в1А0+в061> со ^Mo=Vo' 24
Рис. 2.2. Схема умножения полиномов третьей степени На вычисление затрачивается 9 операций умножений и 24 операции слож ния. Заметим, что алгоритм содержит три идентичных блока для вычислен? те , те2 , тез . Поэтому программа, написанная для одного блока с неболып ми изменениями, может быть использована и для вычисления остальных бл ков. Схема, построенная по синтезированному алгоритму, приведена на рис. 2 Чтобы обобщить этот метод на полиномы произвольной степени, положи для простоты, что N равно степени двух (с небольшими изменениями мете может быть использован для произвольного АО * Опять разделим полиномы i две части, т. е. p(z) = z(z)z^2 + f(z), q (z) = «(z)?^/2 + о(z) , и образуем величины: ml = r(z>(z); те2 = z(z)u(z); m3=(»/(z)+- r(z)) («(z) +»(z)). Для их вычисления можно повторять описанную процедуру деления вплоть) N= 1. Искомый результат имеет вид ₽(z)<7(z) = WjZ^ + (те3 - те2 - те1 )zAr/2 + те, . Таким образом, алгоритм сводит задачу большого размера к подзадач! меньшего размера с последующим объединением результатов. В свою очере, каждую из подзадач можно далее делить до самого простейшего случа Оценим эффективность этого алгоритма. Пусть M(N) обозначает коли» ство скалярных умножений, необходимых для вычисления произведения да; полиномов с N коэффициентами. Используя на каждом шаге деления алг ритм с тремя умножениями, получаем 25
M(N) = 3M(N12) = 32M(NI4) = ... = 3kM(Nj2k) . Процесс деления прекращается, когда к = fog N . На последнем шаге ис- пользуют только одну операцию умножения, т. е. М(1) = 1. С учетом этого по- лучим tog-TV log. 3 . M(N) =3 2 -N 2 Nl,S9 . Подсчитаем теперь количество операций сложений, обозначив эту величи- ну A (N). В иее входят: а) операции при нахождении трех произведений поли- номов с N/2 коэффициентами. Количество их равно ЗА (NI2); б) два сложе- ния полиномов с N(2 коэффициентами (s(z) + f(z) и u(z) +u(z)) и два вы- читания полиномов с N—1 коэффициентами (т - mt - mi), что дает 2 (NI2) + + 2(jV-1) = 3N-2 операций; в) операции образования коэффициентов про- изведения из результатов предварительных вычислений. На это затрачивается N-2 сложений. Суммируя приведенные величины, получим Л (N) = ЗА (N/2) + 4N - 4 При начальном условии А (1)= 0 последнее уравнение имеет решение А (Л) = k>g,3 = 6У 2 -&V+2. Приведенный анализ показывает, что как мультипликативная, так и адди- тивная сложности операции умножения двух полиномов оцениваются величи- ной O(№,S9). В то же время порядок роста сложности прямого метода умно- жения равен <?(№). В табл. 2.4 приведены значения М(N)w A (N) для прямого метода умноже- ния и алгоритма ’’разделяй и властвуй”. Таблица 2.4 Прямой метод Алгоритм "разделяй властвуй” M(JV) AW) М(ЛГ)+Л(ЛГ) M(2V) AW) M(N) +AW) 2 4 1 5 3 4 7 4 16 9 25 9 24 33 8 64 49 113 27 100 127 16 256 225 481 81 360 441 32 1024 961 1985 243 1204 1447 64 4096 3969 8065 729 3864 4593 Из табл. 2.4 видно, что мультипликативная сложность алгоритма ’’разде- ляй и властвуй” существенно меньше. При больших меньше также и общая (тотальная) сложность. 25 2.kmfm Тоома-Кука и преобразование Фурье Любой полином степени N— 1 можно задать либо коэффициентами, либо значениями в N точках. Произведение двух полиномов степени ЛГ-1 и М-1 со- ответственно является полиномом степени N+M—2 и может быть задано эначе- 26
ниями в N+ M -1 точках. Это приводит к другому методу умножения полино- мов. Пусть полином p(z) имеет степень ЛМ, а полином q(z) - степень AC— 1. Найдем значения p(zf), tf(z.) полиномов в выбранных точках z., i = 0, 1. (N + М - 2). Затем вычислим произведения у (z {) = р (zf) q (zf). Искомый по- лином у (г) ~ полностью определяется этими значениями и может быть восстановлен по величинам у (zy). Процедура восстановления называется жтерполяцией и производится при помощи интерполяционной формулы Ла- у(г) - S 1=0 Полиномы £.(z) называются интерполяционными и имеют вид Z - Zy £,(z)= П —=—. ' i+iz.-z. Вычисление у(z.) требует одного умножения у(zf) - p(z.)<?(z(.), если из- вестны р (Zj) и q (z j. Таким образом, можно получить алгоритм, который тре- бует только N + М - 1 умножений, если интерполяция по формуле Лагранжа выполняется без умножений и вычисление р (z(.), q (z.) также де требует умно- жений. Как правило, эти условия не выполняются. Однако для полиномов малой степени количество умножений можно минимизировать путем удачного выбо- ра точек интерполяции z0 , z ,zN+ м 2. Кроме того, данные операции умножения представляют собой умножения на фиксированные константы, по- этому выполняются просто. Пример 2.7. Вычислим произведение полиномов У (») = X, где Х(1) = *2»2 + *1z + *0 ; Я(а) = Л2»2 + + ло. Для применения интерполяционной формулы Лагранжа выберем следующие точки интер- поляции: zQ = 0; ij =1;«2 = -1; »3 = 2; *4 = -2. Значения полинома У(*) в этих точ- ках равны : У (0) ±= 2Г(0)Я(0)=хоЛо; У (» = WH(1) = (х2 + *!+*„) (*2 +*i+*,>); У (-1)= ЛГ(-1)Я(-1) = &2-Х1 +*0)(Л2-Л1+Л0); Г(2) = Х(2)Я(2)= (4*2+2x^*0) (4*2+2*^*^; У (-2)= Х(-2)Н(-2) = (4x2-2x1+x0)(4h2-2h1 + h0). Интерполяционные полиномы имеют следующий вад: (z-l)(z+l)(z-2)(z+2) 1 . , Ло(») =------------------------ (z4 -5z2 +4); (0-1) (ОН) (0-2) (0*2) (z-0) (»+1) (z-2) (z+2) L. (а) = -------;-------- (1-0) (1+1) (1-2) (1+2) ----(z4+ z3 — 4z2 - 4z). 6 27
Рис. 2.3. Граф вычислите^ ного процесса по алгоритм Тоома-Кука. Аналогично получим: L- (z) =---(z*-^ z3 — 4z2 + 4z); 2 6 L,(z) = —(z* + 2z3 - zJ - 2z); 3 24 £x(z)- — (z* - 2z3-z2 + 2z). * 24 После подстановки У(х.) и £((z) в интерполяционную формулу и группировки чш нов по степеням запишем: 1 у0 = У(0), У, =— (16Г(1) -16У(-1) - 2У(2) + 2У(-2)>, 24 5 1 уг = - - У(0) + — (16У(1) + 16У(-1) - У(2) - У(-2)/; 4 24 1 у,= — (~4У(1) +4У(-1) + 2У(2) -2У(-2)П 3 24 1 1 у.= — У(0) + — (-4У(1) — 4У(-1) + У(2) + У(-2». * 4 24 В алгоритме используются пять операций умножения при вычислении У(тр, умно» ние на масштабные коэффициенты 1/24, 5/4 и 1/4 и одна операция умножения Y{i.) t фиксированные константы. Эти константы удалось организовать так, что они являют* степенями двойки, поэтому умножение на них сводится к сдвигу. Во многих случаях один из сомножителей (например,Н(z)) известен заранее. Э1 может быть, например, импульсная характеристика линейного фильтра (см. гл. 4). Той H(z{) вычисляется заранее и масштабные коэффициенты учитываются при этих вычисл ниях. На рис. 2.3 приведенный алгоритм показан в виде графа. Рассмотренный метод синтеза алгоритма достаточно общий, а сам ал!1 ритм получил название алгоритма Тоома-Кука. Его центральной часть* определяющей эффективность, является выбор точек интерполяции. Один1 возможных вариантов следующий: 28
2ir = exp(-f M 0, ‘ = 0,l,...,N+M-2. 1 N+ M — I 3 этом случае алгоритм Тоома-Кука эквивалентен умножению полиномов при помощи дискретного преобразования Фурье и может быть интерпретиро- ван следующим образом. Вычисление полиномов p(z;) и<?(г.) в точках ин- терполяции z. является просто преобразованием Фурье для коэффициентов этих полиномов. Далее найденные преобразования перемножаются поточечно, в результате чего получается N + М - 1 произведений p(z^)q (z.). Интерполя- ция по формуле Лагранжа эквивалентна выполнению обратного преобразова- ния Фурье. П^пее покажем (см. гл. 3), что сложность вычисления преобразования Фурье равна O(N+M -l)k>g2GV+ М -Г), что дает такую же асимптотическую сложность для произведения двух полиномов. Эта оценка асимптотически луч- шая, но в практических приложениях следует всегда помнить о мультиплика- тивных константах. Поэтому при не очень больших N, М предпочтительнее может оказаться алгоритм ’’разделяй и властвуй”. 2.6. ВЕКТОРНО-МАТРИЧНОЕ И МАТРИЧНОЕ УМНОЖЕНИЕ Пусть дана матрица А, состоящая из А строки N столбцов (матрица раз- мером А.хЛ).Для вычисления произведения АХ, гдеХ= [х(0),х($, -. x(A-l) ] *, стандартным строчно-столбцовым алгоритмом требуется затратить NN^ операций умножения и (А—1) А операций сложения. В ряде случаев эту величину можно существенно уменьшить, если учесть особенности структуры матрицы А. Пусть, например, вычисляется произведе- ние 1 1 1-1 х(0) ЯО) -1 1 1 1 х(1) ЯО 1-1 ы х(2) Я2) 1 1 -1 1 х(3) ЯЗ) Найдем предварительно суммы и разности: д = х(0) + х(1); с = х(2) + х(3); b = х(0) -х(1); d = x(2) -х(3) . Используя эти промежуточные результаты, получаем: у(0) = a + d; у (2) = Ь +с, у(1) = ~й + с; у(3) = a-d. На вычисление затрачивается 8 операций вместо 12 при обычном способе Умножения. Д^им примером может служить матрица полного кода. Она имеет раз- мер 2 х N и содержит в качестве строк все двоичные числа от 0 до 2ЛГ - 1. ез потери общности эти числа можно упорядочить по коду Грея, т. е. распо- ложить так, чтобы соседние строки отличались только в одной позиции. Тогда 29
вычисление у (;+1) по у(1) требует не более двух операций сложения, а обще, количество операций не превышает величины 2 • 2ЛГ. При прямом методе необ ходимо (N — 1)2^ операций. Несколько усложнив алгоритм, можно асимпто тически довести число операций до величины 2N~1 [ 9]. Важную роль в цифровой обработке сигналов играют матрицы Адама# порядка N= 21. Они строятся рекурсивно: В главе 3 построен алгоритм, позволяющий выполнить умножение векто ра на матрицу Адамара за Mog2 N операций сложения. Перейдем к умножению матриц. Известно, что для вычисления произведе ния двух квадратных матриц порядка N требуется затратить N3 операции умножения и N\N - 1) mN3 операций сложения. Штрассен предложил боле эффективный алгоритм, позволяющий асимптотически сократить количестве операций умножения и сложения до величины (Л2*®1). В основе алгоритм Штрассена лежит способ перемножения матриц второго порядка за 7 операцй умножения и 15 операций сложения. Заметим, что обычный метод требуе 8 умножений и 4 сложения. Алгоритм Штрассена состоит в следующем. Рассмотрим произведение мат риц второго порядка Ьп . Ь21 Ь22 Сначала вычисляются: = а21 + а22 ’ mj=w S2 = S1-alt> *2=4* П<' *3 ~ «П ~~ Я21 ’ тз ~ Д12^21’ S4=an ~S2> m4=W si = bl2~btl> • Ч = Ь22-ЬП> m6=Sib22> S8 = S6~621’ m->=<W Элементы произведения получаются по формулам: сп=тг + тэ; с9|-г9~т7; cn=f1 + m5+me’ c22=f2+ms- Будем применять этот способ для вычисления произведения матриц К° рядка N. Для простоты рассуждений положим N = 21. Разобьем каждую * матриц на четыре равные подматрицы порядка АГ/2 и для вычисления исков*1 го произведения воспользуемся приведенными равенствами. Аналогично м*1 рицы порядка N/2 можно разбить на подматрицы порядка N/4 и т. д. й12 а22 ffu Д21 С11 С12 С21 С22 30
Пусть М(М обозначает мультипликативную сложность вычисления произ- ведения двух матриц порядка jV. Тогда можно записать, что M(N) = 7M(N/2) = 72M(N/4) = ... = 7kM(NI2k) = ... = 71Ов2ЛГМ(1) =A^2,Af(l). Так как log27 = 2,81 йЛ/(1) = 1,то M(N) = rf2*1 . Рассмотрим теперь аддитивную сложность, обозначив ее A (7V). Для A (N) справедливо рекуррентное соотношение A(N) =7А (Nil) + 15 (N/2)2. При на- чальном условии Л (1) =0 решение этого уравнения равно А (Л) = 5 (Л5,81 - -N1)- : Если интересоваться только скоростью роста, то получим M(N) = A(N) = О(№’81). Если N не является степенью числа два, то можно вложить исходную мат- рицу в матрицу, порядок которой равен наименьшей степени числа два, боль- шей N. Это увеличит порядок матриц не более чем вдвое и отразится на муль- типликативной константе, которая возрастает не более чем до семи. Однако порядок роста функций M(N) kA(N) сохранится прежним. Приведенные границы сложности являются асимптотическими. Поэтому возникает вопрос, при каких значениях N метод Штрассена может быть реко- мендован для практических расчетов. Ответ на этот вопрос можно получить лишь после конкретизации типа процессора. Были предприняты многочисленные попытки улучшить границы Штрассена по порядку. Лучшим результатом является оценка Af(/V) «^(TV2,376). К сожале- нию, она представляет лишь теоретический интерес из-за большого размера матриц и мультипликативной константы. КОНТРОЛЬНЫЕ ВОПРОСЫ И ЗАДАЧИ 2.1. (Оставьте иеветвящуюся программу для умножения двух матриц второго по- рядка. 2-2- Приведите примеры вычислительных процессов, эффективность которых удобно оценивать аддитивной, мультипликативной и тотальной сложюстыо. 2.3. Какой выигрыш во времени можно иолучить, если для вычислений использовать алгоритм со сложностью TVlog-ДГ вместо алгоритма со сложностью № при N, равном 128 и 1024? 2Л. Когда выгодно использовать алгоритм умножения комплексных чисел с тремя операциями сложения и тремя операциями умножения? 2Л. Вычислите степени х39, х51 бинарным методом и методом множителей. Резуль- таты сравните с рис. 2.1. 2.6. Докажите, что метод Горнера требует не более АГ умножений и N сложений для ВЬ1числеяия полинома степени N. 2-7- Найдите вычеты: 47S0mod3,362modl9, (10101110011110)2mod31. 2-8. Найдите вычеты: S e.z*mod(z3- 1), z8 + 2z3 + 2z2 + z + lmodz4 + z + 1. 1=1 ' 31
2.9. Постройте иеветвящиеся программы умножения двух полиномов второй степей) используя прямой метод и алгоритм "разделяй и властвуй”. Сравните полученные резутд таты с результатами примера 2.6. 2.10. Перемножьте два полинома третьей степени при помощи алгоритма Тоома-Кук* 2.11. Постройте алгоритм умножжия вектора на матрицу полного кода длины 4, с» держащий Не более 12 операций сложения (вычитания). 2.12. Используя алгоритм Штрассена, перемножьте две матрицы четвертого порядит
з ОБРАБОТКА СИГНАЛОВ С ПОМОЩЬЮ ДИСКРЕТНЫХ ОРТОГОНАЛЬНЫХ ПРЕОБРАЗОВАНИЙ 3.1. ПРЕДСТАВЛЕНИЕ СИГНАЛОВ ФУНКЦИОНАЛЬНЫМИ РЯДАМИ Дискретный сигнал з(и), заданный на интервале из А' точек 0, 1, 2, jV-i, можно записать в виде а(л) = S с(к)цк(л), (3.1) к=о где с(к)= ф *S*s(n)i}k(n) (3.2) Здесь (и) } ~ совокупность базисных функций, определенных на том же интервале;{с(&)}- коэффициенты разложения сигнала по базису(n)J , на- зываемые спектром сигнала; — энергия к-й базисной функции. Из выражений (3.1), (3.2) следует, что сигнал можно задать либо его от- счетами в дискретных точках, либо набором спектральных коэффициентов, причем спектральное представление неоднозначно и зависит от выбранной сис- темы базисных функций. Выбор системы (л) } определяется соображения- ми практического или математического удобства. Наибольший интерес для задач цифровой обработки представляет случай, когда число базисных функций конечно и равно размерности сигнала, т. е. N. Далее будем рассматривать только такие системы. В разложении (3.1) необходимо, чтобы базисная система удовлетворяла следующим требованиям [ 12]. 1. Функции системы должны быть линейно независимыми: Мо(") +М((л) + -+ * О при любых значениях коэффициентов а{ , кроме случая, когда ао = д( = ... = ^йиболее часто в качестве базисной системы линейно независимых функ- ций выбирают ортогональные функции, т. е. функции, для которых выполня- ется условие А-1 Д о П* 0») 4f(n) = О, k^l . В зтом случае сигнал £$(л)} можно рассматривать как вектор в декарто- й системе координат, осями которой являются базисные функции. Спект- ральные коэффициенты равны проекциям векторов на соответствующие оси 33
Рис. 3.1. Представление сигнала S (л) в пространстве ба- зисных функций. 2. Система {рд. (n)J должна быть упорядоченной. Это значит, что на множь стве индексов к введено отношение порядка, показывающее, какая из функ ций предыдущая и какая последующая. Например, синусоидальные и косину, соидальные функции обычно располагают в порядке возрастания аргумент) (частоты): 1, cosx , cos2x ,..., cosfcx. От введенного отношения порядка заве сят форма спектра и удобство работы с ним. Например, при спектральном а» лизе по Фурье систем с ограниченной полосой пропускания часто отбрасывают, ся составляющие спектра с высокими частотами. 3. Базисные функции на интервале ортогональности должны иметь конст ную энергию, т. е. N-1 , т£(п) < ~ . 4. Система функций [г?*, (и) ] должна быть полной. Это означает, что к неё больше нельзя добавить ни одной функции, которая была бы ортогональн всем остальным функциям системы. Э2. ДИСКРЕТНОЕ ПРЕОБРАЗОВАНИЕ ФУРЬЕ 3.2.1. Дискретные экспоненциальные функции (Дискретное преобразование Фурье (ДПФ) устанавливает связь между вр меннйм и частотным представлениями-сигнала при разложении его в р* (3.1) по гармошгтеским функциям. Оно имеет многочисленные приложения спектральном и корреляционном анализе, ж синтезе.филиров, устройств Ы наружения или оценки параметров сигналов.уК настоящему времени разраб) таны зффективныемётоды вычисления ДПФ, позволяющие решать задачи, Р нее считавшиеся недоступными из-за своей вычислительной сложности. В дискретном преобразовании Фурье используется система дискретнь экспоненциальных функций (ДЭФ), определяемых следующим выражение1 2я 2я 2я def(Jt, и) = ехр(~/ —кп) = cos— кп - /sin— кп. (3- N N N 34
_ з 2. Поворачивающие множители ДПФ. •л‘* Обе переменные кип принимают дискретные значения 0, 1,2,ЛМ. Переменную к , как правило, отождествляют с номером функции, а перемен- ную и — с номером отсчета. Обозначим W = ехр (-/ — ). Тогда def(Л, и) = И^л . Величина обьгч- N но называется поворачивающим множителем и представляет собой вектор на комплексной плоскости (рис. 3.2). Всю систему ДЭФ можно записать в виде матрицы V , строки которой ну- меруются переменной к , столбцы переменной л, а в пересечении Л-й строки и л-го столбца записана величина Wkn: (3.4) Например, для #= 8 матрица V имеет следующий вид: В'0 V® № № W° w° w° w° w® w1 w2 w3 w* w5 w6 w7 'I W2 w* W6 W® И'* ° И'12 И’1* W* W3 1У* w9 W*3 H'15 W19 W21 w° w* W9 W12 w16 W30 И*2* jpia W° Ws W10 fpls W20 И*3® И'35 И*® w6 w13 fy1S W2* |p3O |y3« W° W7 Wi9 НЯ1 ИР» V3S W93 W" 35
И'0 ц/О J^O WO WO WO WO WO W° И'1 И'2 W3 W4 Ws W6 W2 W° W2 И*4 W6 W° W2 W4 W6 _ w° w3 w6 и" w4 w2 w2 w5 w° w4 w° w4 w° w4 w° w4 w° ws w2 w2 w4 wl w6 tv3 JV° w6 w4 w2 w° wb w4 w2 w° w2 w6 ws w4 w3 w2 wl a В теории и практических приложениях ДПФ одинаково важно как экспо ненциальное (3.3), так и матричное представление (3.4), поэтому в дальней- шем эти две формы записи будем рассматривать совместно. Системе ДЭФ присуши следующие свойства. 1. Ортогональность: еспи(к' 0 = OmodJV; n=o 1 0, если (к - О A OmodW. (3.6) Свойство ортогональности показывает, что скалярное произведение лю бых двух строк матрицы V , одна из которых взята с комплексно сопряжев ными элементами, равно нулю, если строки различны, и равно N, если они сов падают. Матричная запись этого свойства имеет следующий вид: VCv’J’-jVl, (3.7) где знак * означает взятие комплексного сопряжения дйя Всех элементов мп рицы: I — единичная матрица. ‘ 2. Периодичность. Если кп = N! + т, то = W1", что позволяв записать элементы матрицы V с минимальными степенями (фазами), как эн сделано в (3.5). 3. Симметричность; V = V7. (3.8) Свойство симметричности позволяет легко найти обратную матрицу ди матрщы V . С учетом (3.8) матричное выражение для ортогональности зал шется так: W* = М. Умножив обе части этого равенства справа на V1 , Ш лучим У1=лг1 V*. (35) 4. Мультипликативность: def(fc , n)def(k, п) = def(fc +к ,п); (З.Ю def(k, n,)def(k, »2) = def(k, nt + n2) . Свойство (3.8) означает, что при умножении любых двух строк (стоя1 36
ч матрицы V получается соответственно строка (столбец) той же матри- цы Номер строки (столбца) равен сумме номеров сомножителей. 322. Дискретное преобразование Фурье и его свойства ф Паря дискретного преобразования Фурье последовательности £s(n)J = _ £j(0), j(l), s (AT-l)J определяется следующими равенствами: = JS~1j(w)^, Л = 0,1,...,ЛГ-1; (3.11) 0^1^s(n) = N~l^f(k)W~kn , n = O,l,...,N-l. (3.12) Последовательность [s(ri)} представляет собой отсчеты сигнала, а после- довательность {/(£)} -дискретный спектр. Выражение (3.11) называется прямым преобразованием, г выражение (3.12) - обратным. Взаимная обра- тимость этих преобразований доказывается полстаноях-пй ffk) в ттрпш-чп™ (WJ^aT^hajMeHHo: ГГ* Ni1 (s(0) + j(1) Wk + ... + «(л)И'*" +... + s(/V—1) Ipw-D) w~kn= fc=o В силу ортогональности ДЭФ (см. (3.6), (3.7)) вторая сумма отлична от нуля и равна Л’, если только Z - п = 0, что дает s(n). Равенства (3.11), (3.12) представляют собой'экспоненциальную форму за- писи ДПФ. Соответствующее матричное представление имеет вод: F=VS; (3.13) S=V*V*F, (3.14) «» S = [j(0), J(l),...» т(ЛМ)]г; F = [/(0), Д1),..., /^-1)]7-векторы- столбцы отсчетов сигнала и спектральных коэффициентов соответственно. Ра- венство (3.14) получается иэ равенства (3.13), если воспользоваться выраже- нием (3.9),а именно: S = V'1 F =ЛГ1 V*F . Рассмотрим наиболее важные свойства ДПФ. %1. Периодичность. В силу периодичности ДЭФ функции /(&) и т(п) также периодичны, т. е. fl.Nl ± k)=f(±k)-, s(Nl±n) = s(±n). (3.15) боат’ С0ЯЗЬ с коэФФиЦиентами ряда Фурье. Если частота дискретизации вы- дР ® соответствии с теоремой Котельникова, то при дискретизации перио- сп«с^0^АНаЛОГОВОЯ_^’ункции ДПФ позволяет по выборкам j(n) найти гр J\k), который на интервале 0 < к < N — 1 равен спектру исходной 37
а Рис. 3.3. Соотношение между коэфф* циоггами ряда Фурье (а) и ДПФ (б), функции s(r). При этом первые (N/2 — 1) точек функции/(fc) соответствую спектральным линиям на положительных частотах (рис. 3.3), а последни (N/2 — 1) точек /(fc) - спектральным линиям иа отрицательных частотах В обратном преобразовании первые (N/2 — 1) линий функции s(n) coo? ветствуют области положительных времен, а последние (N/2 - 1) линий - области отрицательных времен. 3. Линейность. Пусть даиы последовательности х(л) и у (и), для которы ДПФ равны соответственно Д (й) и fy(k). Рассмотрим взвешенную сумму этих последовательностей г (п) = ах(п) • + by (и). Спектр последовательности z (п) равен аналогичной взвешенной су» меспектров последовательностейх(л) иу(л),т. е. . г 4W- «/,<*> O4w. (М 3.. 4. Инвариантность относительно сдвига по времени и частоте. Пусть досл( довательность z(n) образована сдвигом по времени последовательное: s(n), т. е. z(n)= j(n±Л).Тотда £(*) = »’**//*) . (3.17 Свойство (3.17) показывает, что при сдвиге по времени амплитуднь спектр (величина амплитуд отдельных гармоник) не меняется. Изменения подвергаются только фазы гармонических составляющих (фазовый спектр; Аналогичное свойство справедливо и для обратного преобразования, именно: если l(k) = ftk ± й), то зр(п)= Winh st(n). (3.U Выражение (3.18) является аналогом (3.17) для временной области. 5. Теорема о свертке. Рассмотрим две последовательности {«(и)} и {й(х Циклической сверткой этих последовательностей называется последователь- ность £у(л)} , значения которой определяются следующими равенства** у(п) = V^OsOi-O, »= 0,1...........АГ-1 , (3.1* 1=0 38
[де номера отсчете последовательное! АН») = h(N -_ J Равенства £3.] )в берутся по модулю М. Последнее эквивалентно тому, что пи £s(n)} и {ft (n)J периодические. Поэтому s(-ri) = s(N~n). 0 • 9) можно записать и в матржной форме: |^(0) | Г Уй(О) Л(1) ... й (М-1) |й(1) А (2) ... А (0) /(2) 7 ДО) s(M-l) s(M-2) . (320) Liw-i Ьй(М-1)Л (0) ... А (М-2) _ J(1) Пр им ер 3.1. Пусть W= 4. Тогда • >(0) = A(0)s(0)+ Л(1М-1)+Л(2Ъ(-2)+Й(3)Н-3) = = A(0)i(O) +A(l)j(3) + й (2)i (2) + A (3)j(l); i у(1) = A(0)s(-3)+A(1)j(0)+Л(2}*(-1)+A(3)j(-2) = Л = ft(l)j(O)+ A(2)s(3)+A(3)s(2)+ft(0)j(l). Аналогично .' I j,(2) = h (2) j (0) + h (3)s (3) + h (0) s (2) + h (1) s (1); ll y(3) = h(3)s(0)+h(0)j(3)+fc(l)s(2)+ h(2)s(l). , /Пусть {fs Qc)}v.[fh (й)| --спектры последовательностей fs (n) J и {ft (n)j со- ответственно. Хдщ^^^цщ^утверждает, что спектр свертки равен произ! ведению спектров сворачиваемых последовательностей, т. е. | 4<*)»/,(*)£(*) - (3.2i) Теорема (321) позволяет вычислить свертку при помощи ДПФ по форму- ле {у(и)} = ДПФ'* (ДПф£(л)} ДПФ{Л (и)} ) . (3.22) Так как для вычисления ДПФ существуют быстрые алгоритмы, то этот спо- соб часто оказывается более экономичным, чем прямое вычисление с исполь- зованием формул (3.19), (3.20). 6. Теорема о корреляции. Периодическая корреляционная функция двух последовательностей {s(n)j и {ft(n)J равна М-т r(n) = Е ft(/)s(n+ /), и= 0,1.....М-1 , (323) 1=0 ГДе аналогично п.5 номера отсчетов берутся по модулю N. Соответствующее матржное представление имеет вид r(0) " Л(0) Л (1) ... й (М-1) “ Г «(0) 1 '(1) л (М-1) А (0) ... Л (М-2) s(l) .(3.24) /(М-1) Л(1) й (2) ... й(0) s(M-l) 39
Корреляционную функцию можно рассматривать как свертку, в которое одна из последовательностей обращена во времени, т. е. прочитана в обратись порядке, за исключением нулевого отсчета. Спектр корреляционной функции последовательностей {Л (л)} и {г (n)Jpi вен произведению их спектров, причем один из спектров берется в комплек( ном сопряжении, т. е. /,(*)“ fh (k)fs (к)~ fh(k) fs* (к) . (3.2! Аналогично предыдущему для вычисления корреляционной функции ц основе равенства (3.25) можно использовать ДПФ, что часто оказывается 6g лее эффективным, чем прямое вычисление по формулам (3.23), (3.24). 7. ДПФ вещественных последовательностей. Во многих случаях преобра$ емая последовательность (л)] вещественная. Бе ДПФ равно N-i 2ir N-i 2я f(k) - S s(n)cos( — кп) -} S т(л)яп(— кп). n=o N n=o N Отсюда можно сделать следующие выводы: а) спектральные коэффициенты комплексно сопряжены относительно и счета N/2 , т. е. /(A/2 + Z) = /*(М2-/), / = 0,1,...,Л72, (3.26 а коэффициент f(N}2) для четных Nвсегда действителен; б) если последовательность (s(n)j четная, т. е. {s (л) | = (j(—n)J , то е ДПФ { f(k) J — вещественная последовательность. Аналогично, если (s (л)} в четная, т.е. {$(«)} — —'{«(—н)} , то ее ДПФ f(k) есть чисто мнимая л сл едовательиость. \ 8. Равенство Парсеваля: АГ-1 , , АГ-1 , S ?(«)= АГ» S »/(*)!’ . (3.21 л=0 к=о Соотношение (3.27) показывает, что энергия сигнала равна суммарной энергии спектральных компонент. Понятие ДПФ можно обобщить, если вместо последовательности {s(n)j рассматривать многомерный массив. В частности, для случая двух измерен! преобразуется массив г (0,0) т(0,1) ... s(O,Nt-1) s(l,0) т(1,1) ... j(1,AT2-1) s=6(»1.»2)}= ........................................... ’ «(АГ,—1,0) s^-l.l) . •. J^-l^-l) Его ДПФ равно A',-i ь лг.-т 2 ‘ „ п.к, f(kvk2)“ S W2 21? *0»1,из)й'1 ‘ ’ л =о л,=о 40
2ir 2я W _eXp(-J — ), - exp (-/' — ). Матричная форма этого выра- жения запишется так. F= V.SV,, ще V , V2 - мзтрВДЫ одномерных ДПФ с числом отсчетов Nx и N2 соответст- венно»а Л0.0) /(0.1) ... /(0,^-1) /(1> 0) <(1,1). ... Л1,лг4-1) Я^-1,0) ... f(Nx-\,N2-\) Нетрудно видеть,что для получения двухмерного преобразования сначала вы- полняется преобразование столбцов массива S , а затем преобразование V2 строк массива V2 S . 3.3. БЫСТРЫЕ МЕТОДЫ ВЫЧИСЛЕНИЯ ДПФ 3.3.1. Алгоритм с прореживанием по времени ^Вычисление ДПФ по формулам (3.11)-(3.14) требует выполнения №опе- радай умножения и N(N — 1) операций сложения комплексных чисел. Квадра- тичная зависимость объема вычислений от размера входной реализации явля- ется существенным препятствием при практическом использовании ДПФ. Из- вестны более эффективные алгоритмы, чем прямой счет по указанным форму- лам. Они позволяют снизить вычислительную сложность до величины порядка Mog JV и даже У. Эти алгоритмы получили название быстрого преобразова- ния Фурье (БПФ)1< Существует много алгоритмов БПФ. Рассмотрим алгоритм с ирореживаниёКГпо времени. Пусть (s(n)i =/s(0),s(l) s(N— 1)} — последовательность отсчетов, содержащая N = 2* элементов (у — целое). Разобьем ее на две части, выде- лив отдельно четные и нечетные отсчеты, т. е. д <) * {*(2н)] = (s(0), ®(2), s(N — 2)j ; * {s(2hH)J=(j(1),j(3),..., s(AT-1)} . ‘ 7 Дискретное преобразование Фурье этой последовательности равно Jf/2-l • N/2—1 .. , ч , > /(jt)=S s(2l)Wilk+ Е. j(2frl)B'(2/+1)*== 1=0 1=0 N(2-i .'.N/24 = 2 s(2Q (№)'*+>* 2 j(2H-1) (№/* = l=o i=o = G(fc) + И*Я(Л) , (3.28) 41
где JV/J-1 •G(t) = S s(2l)(W2),k l=o JV/2-i Н(к) = S т(2Н'1)(И'2)л 1=о есть дискретные преобразования Фурье четных и нечетных отсчетов. Функция f(k) содержит Nточек и имеет период N. В то же время функ ции G(k) и Н(к) содержат По N/2 точек и имеют период N/2. Для вычисл» иия спектральных коэффициентов при к < N/2 можно непосредственно во& пользоваться выражением (3.28). Для к > N/2 на основании периодичности ДПФ (см. (3.15)) и ДЭФ получим: G(k) = G(k + £); Н(к) = Н(к + *); = -Wk . ~ jxo «ч-w© *i МИ ' Vb-U (3.29 С учетом этого можно записать: f(k) = G (к) +0ff(ky, 0 <fc < N/2 - 1; f(k) = G(k) -ty$H(k) , N/2<k<N-l . Следовательно, все значения /(fc) получаются вычислением двух N]2 то- чечных. преобразований с последующим их весовым сложением. Эта процеду ра показана иа рис. 3,4,а для N= 8. Заметим, что вычисление Ь (Л) и Н(к) прямым методом требует только (Л?2)2 операций умножения. Еще N/2 операций выполняются при умножеюл на трворачивддщцщмножители И'* , к = 0,1,..., Nj2-\. Общее количество one рацйи уменьшается, таКПКГобраэом, до величины № /2 + Nf2 < N2. Дальне» шее сокращение количества операций происходит, если для вычисления G (к) 1 Н(к) опять ’’разрядить” их входные последовательности и продолжать эвл процесс до тех пор, пока размер ДПФ не станет равным двум и дальнейши прореживание будет невозможным (рис. 3.4, б)г Очевидно, что число inaroi (итераций) этого процесса равно log2jV. На рис. 3.4, в показана процедура с® жения размерности преобразования и общий граф вычислительного процесс для#=8. Отметим следующие^важные особенности вычислительного процесса 1. Граф содержит ATfag 'N узлов, в каждом из которых происходит сумм» рование или вычитание данных (см. (3.29)). Поэтому общее количество one раций сложения (вычитания) равно Mog2AL Половина исходных данных каждой итерации умножается на поворачивающие множители, поэтому обще1 количество комплексных умножений не превышает величины 0,SMog2AT. Бо лее подробное исследование показывает, что часть этих умножений тривиал* на (умножения на ±1, ±j). 2. Процедура многократного прореживания приводит к тому, что исхо? ные данные располагаются не в естественном, а в двоично-инверсном поряд*1 42
a Рис. 3.4. БПФ с прореживанием по времени. Например, для N = 8 естественный и двоично-инверсный порядок расположе- ния отсчетов запишется следующим образом:
Естественный порядок 000(0) 001(1) 010(2) 011(3), 100(4) 101 (5) 110(6) Ш(71 Двоично-инверсный порядок 000(0) 100 ф 010(5) 110(6) 001(1) 101(5) 011(3) 111(7) 3. Граф алгоритма имеет регулярную структуру и строится из пары база вых операций, которая получила название "бабочка”. "Крылья” такой бабо^ ки увеличиваются вдвое на каждой последующей итерации. 4. Регулярность графа позволяет производить вычисления с замещение^ (с оставлением на местах), т. е. записывать промежуточные результаты ка* дой итерации на место исходных. Действительно, на первой итерации кажда пара входных узлов воздействует только на соответствующую пару узлов, на ходящихся непосредственно справа за ними. Поэтому если вычисления прою водятся одновременно двумя узлами, то результаты могут быт$> записаны в а же ячейки, откуда взяты исходные данные. На второй итерации эта ситуация сохраняется с той лишь разницей, что ра бегающая пара узлов разделена одним промежуточным узлом. На третьей ите рации работающая пара разделена тремя промежуточными узлами и т. д Построенный алгоритм имеет и матричную трактовку. В частности, дп> рассмотренного примера простой проверкой легко убедиться, что вычисляете) матричное выражение F = У8 = Ф1Ф2Ф3Рб, (3.30) ГДе Ф ф 1 есть матрица двоичной перестановки исходных данных, а 44
1 1 w* -1 1 -W2 1 1 1 w1 1 -1 1 -W2 J >4 1 1 1 -1 1 1 1-1 есть матрицы вычислительного процесса на итерациях. Каждая из этих матриц имеет в строке и столбце только два ненулевых элемента, т. е. является слабо- заполненной. Благодаря большому количеству нулевых элементов умножение на слабозаполненные матрицы требует меньших вычислительных затрат, чем на полные матрицы. Соотношение (3.30) показывает, что матрица ДПФ разбивается на сла- бозаполненные сомножители. Процедура разбиения матрицы на сомножители называется Таким образом, с матричной точки зрения алго- ритм БПФ является просто следствием факторизации матрицы дискретного преобразования Фурье. 3.3.2. Алгоритм с прореживанием по частоте Разделим исходную последовательность {а(л) 1 на две части по N/2 отсчё- тов в каждой. Первые NI2 отсчетов обозначим^ (л) у .вторые — {Л(л)|,т.е. <?(л) = а(л), Л (л) = т(у + л), л= 0,1,..., (NI2- 1). Теперь ДПф можно записать так: Л/2-1 . (и+*)* f(k) = 2 (q(n)Wkn + h(ri)W 2 ) = n=o JV/2-1 . = 2 («(л)+(-1)*Л(л))Ия. л= о Рассмотрим отдельно четные и нечетные отсчеты функции /(it): Np-i f(2k) — 2 (<?(л)+Л(л))(И'2)*и , п=о 45
А/2-1 . f(2k + 1) » 2 U(n) - h («)) Wn (W2)*n . n~o Эти выражения являются А/2-точечными ДПФ от функций q (п) + Л (п) , [<? (и) - h (и)] Wn . Поэтому вычисление спектра можно производить по схеме показанной на рис. 3.5, а (для N = 8). Аналогично предыдущему процедур} последовательного деления входных отсчетов на две части можно продолжив дальше до получения двухточечных преобразований (рис. 3.5, б). Для этого потребуется logJV шагов. Результирующий граф преобразования при этом бу. дет содержать ATogj А узлов . Для N= 8 он приведен на рис. 3.5, в . Как и в алгоритме с прореживанием по времени,в данном алгоритме вц числительные затраты составляют Mog2A операций сложения и O^Alog^A операций умножения, а вычисления можно выполнять с замещением. Однако исходные отсчеты при этом располагаются в естественном порядке, а спек; ральные коэффициенты — в двоично-инверсном. Величина ’’бабочки” по мер продвижения к концу вычислений уменьшается. В соответствующем матрщ ном представлении матрицы-сомножители имеют иной вид: F = VS = Р’ф’ф'ф'З, (3.31) что дает другой вариант факторизации матрицы V . 3.33. Алгоритмы БПФ с произвольным основанием Рассмотрим ^точечное ДПФ: f(u\ = *24 j(и) W*n , к ~ 0,1..N-1. (3.32) J V Л Л=0 Пусть. N— составное число. Допустим А= Преобразуем индексы i и к следующим образом: и = Nt п2 + п, , п{ , kt = 0,1, ...,Aj —1 , (3.33) k = N2k2 +к2, п2 ,к2 =0,1......А2-1 . (3.34) Подставляя (3.33) и (3.34) в (3.32), получаем 1 A,nk п.к#* * NnJc f(N к +к ) = 2 W 2 1 1 w 1 2 2 s(N,n.+ n,)W 1 22 . 2 * nt = 0 «2=0 * 1 A, 2ff A 2k Обозначим Wt = W 2 exp (—/ — ), W2 = W lexp(—j—) . С учетом этого мо< JVj N2 ио записать 1 «к, п к N* * пчк. f(Nk + кЛ = 2 W,1 1W 1 2 2 s(N, и, + и,) W 2 2 . 2 1 2 nt=0 1 л2=о 1 2 1 46
a Рис. 3.5. БПФ с прореживанием по частоте. Из этого выражения следует, что -точечное ДПФ можно вычислить в три этапа. Сначала вычисляются Nt преобразований: *2- п к J'("1,*1)=nS=oj(^2+n|)|V2’ 2, 47
соответствующих различным значениям л, .Затем величины n fc, умножаются на поворачивающие множители W 2 .Конечный результат f(k) получается вычислением Л^ЛГ, -точечных преобразований: 1 в 1 п.Л МДЩ* ^y^kJW ‘ 2^‘ ». (3.35) Эти вычисления можно выполнять и в обратном порядке. Сначала вывод, няются умножения на поворачивающие множители, затем - на два последов^ тельных преобразования Фурье. В этом случае ^2 2 п к п к п к f(Nk *k)= 2 В;2 1 S s(JV.n. + n.)W 1 2И'11 *. (3.36) «а=о nt=o 1 2 1 Оба алгоритма эквивалентны по вычислительной сложности, а порядок ив дексов входного и выходного столбцов меняется. Сокращение объема вычио пений происходит благодаря замене одного большого ДПФ на несколько ь» лых. В частности, при вычислении N-точечного ДПФ прямым методом требует ся ЛГ2АГ2 умножений. Алгоритмы (3.35), (3.36) позволяют сократить это чтк ло до величины А^АГ2 + ATjATj + NtN2 == А^ЛГ^Л^ + N3 + 1). Очевидно, что описанную процедуру можно продолжать рекурсивно, еоп каждый множитель А^ и А^ сам представляет составное число. При этом эф фективность алгоритма возрастает, если N раскладывается на большое чист множителей. Это обстоятельство, а также стремление иметь достаточно регу лярную структуру алгоритма являются причиной повышенного внимания i входным последовательностям длины 2V , для которых и построены ал го ритмы с прореживанием по времени и частоте. В частности, если положит АГ = 2 иЛ^2 = 2v~l , что эквивалентно разбиению А’-точечной последрвател! иости на четные и нечетные отсчеты, то получим алгоритм с прореживанием п времени (3.30). Другая форма (3.36) дает алгоритм с прореживанием по чж юте (3.31). / Поскольку алгоритмы БПФ вычисляют ДПФ за АПо^и АГ операций вмес( N2 , то практический выигрыш в числе операций может быть очень больших Например, для 1024-точечного ДПФ N = 2^° и прямое вычисление требуй 220 комплексных умножений. Алгоритмы БПФ вычисляют это преобразой ние только за 5- 2fo операций умножения, что примерно в 200 раз быстра Дополнительная экономия получается, если учесть, что умножения на ±1 и i| тривиальны. 33.4. Вышклевте обратного ДПФ Рассмотрим пару ДПФ в матричной записи: F = VS ; 8=ЛГ* V*F. Матрицы прямого и обратного преобразований V и V* соответственно сое* ят из комплексно-сопряженных элементов W*n и W~kn .Для к - п — 0 стр1 48
обеих матриц совпадают и состоят только из единиц. Поэтому $ (0) = = №/(0) • ^дя % * 0 Рассм0ТРим следующее равенство: ц,(М-к)п - ц/Nn^-kn _ у-кп Из него следует, что строки матрицы V* совпадают со строками матрицы V , но записаны в обратном порядке. Поэтому для вычисления обратного ДПФ вместо V* можно использовать матрицу прямого преобразования V , но ре- зультат умножения на эту матрицу следует прочесть в обратном порядке и уменьшить в Npa3. 33.5. Вычисление ДПФ действительных последовательностей Для действительных последовательностей спектральные коэффициенты комплексно сопряжены относительно отсчета N/2, т. е- N N + к) = Г(- -к) , к = 0.1.....N/2-1. Это дает возможность для хранения спектра использовать не 2Л7 ячеек памяти (N ячеек для действительной части и N ячеек — для мнимой), а только У. Свойства комплексной сопряженности коэффициентов позволяют также более эффективно организовать вычислительный процесс. В частности, при по- мощи одного преобразования можно вычислить ДПФ двух действительных по- следовательностей либо использовать ^2-точечное преобразование для вычис- ления спектра ^точечной последовательности. Рассмотрим эти возможности. Пусть даны две ^точечные последовательности {х(л)} и {у (л)}. Образу- ем их комплексную сумму: г(л) = х(л) +fy(ri) . По свойству линейности (3.16) можно записать 4 (*) = fx(k) +jfy (k) = Re/х(й)+/bn/x(t) +/(RejT (k) + +/fan/ (k)) = Re/x(k) - fan/ (k) +/(Re/v(k) +Im/X(k)). Рассмотрим спектры fx (k) и f (k). По свойству комплексной сопряжен- н°ста (см. (3.26)) функция Re/^(k) является четной, а функция/Re 4, (к) = = - нечетной (рис. 3.6). Аналогично функция Im/* (к) является не- Чет^й, а функция /fan/^,(k) = Re^,(fc) - четной. Поэтому если сложить значе- ииЗзЭтих функций С номерами к и N~k, k = 1,2,..., (JV/2 - 1), то четные аГЧИИ Удвоятся>а нечетные уничтожатся. Это позволяет по спектру fz ( к ) На®и спектры составляющих / (к) и / (к), а именно: ^efx(k) = 03 (Re/Z (к) + Re/z (N - к)>, Im/Z(k) = 0,5 (Ьп/г(к) - Im/Z (N - k)>, Re fy (k) = 03 (fan 4 (k) + fan/x (TV -k) ); bn4 (k) = -03(Re4 (k) - Re£ (AT - k) ). 49
Здесь к = 1,2...(V/2 — 1) и вычисляется часть спектра, соответствующая» ложителытым частотам. Для к #= 0, Nj2 имеем ‘ N Re/, (0) = Re/Z (0), Re/x( - ) = Re/2(N/2); Re/j, (0) = Im/2 (0), Re/? (N/2) - Im/Z (N/2). Для выполнения этих вычислений требуется затратить 4 (V/2) = 2Not радий сложения. Еще Vlog^V операций сложения и V/2 log, V операций умно) ния затрачивается на вычисление преобразования функции z (и). При раздельном преобразовании функций х(и) и у (и) число оперев умножения равно Nlo^N, а число операций сложения 2Mog,Az. Таким о4 эом, выигрыш по числу операций умножения равет двум, а по числу опере» сложения 21og, Nl (log,V ♦ 2). " Рассмотрим теперь возможность сокращения длины преобразования. ПУ1 дана последовательность (х (n)J .Выделим в ней четные и нечетные отсче* т. е. произведем прореживание по времени. Далее образуем V/2 точечную* следовательность z (л)' = х(2л) +/х (2л+ 1) и вычислим ее ДПФ. Из спектра f2 (к) можно найти спектры последовательностей £х (2 и) } {x(2n + 1) } (см. § 3,3.1). Для получения спектра fx (it) следует произв^ 50
й _? 7 Весовое суммирование при вычисленви дПф действительных последовательностей. их весовое суммирование, как это делалось в алгоритме с прореживанием по времени (см. рис. 3.4). Пример 3.2. Вычислить спектр действительной последовательности {х (л)J =£1,1, 1,1, -1, -1, -1, -1J при помощи ДПФ размерности №= 4. Образуем последовательности четных и нечетных отсчетов: {Л («)} ={х(2л)} = {1,1, -1, -1} , {В(л)} = £x(2n+ 1)} = {1,1, -1, -1} и комплексную последовательность {z(n)} = {4ft)}+/{B(n)J={l+/, 1 +/, -(1+/), -(!+/)}. ДПФ этой последовательности равно По формулам (3.37) , (3.38) получим Re/д ft) = 1(0,1„0,1} ; Re/Sft)= 2 {.0,1,0,11 1 ЬпГл(М = 2{0, -1,0,1J; lmfB{k) = 2 (0,-1, 0,1}. Объединяя действительные и мнимые части, записываем полные спектры последователь- остей {Л(н)} и (В(п)} ; <4{*)= 4?ft) = {o, 2(1-/), 0,2(1 +/.)J. Для получения спектра последовательности (и) } выполним весовое суммирование спектров /д ft) и fB (к) (рис. 3.7). В результате получим 4 (0) = 0; /Z(D = 2(W)(1 + V‘); 4») = 0; 51
4 О) = 2(1 +/) (1 + W3); //4) = 0; /г(5) = 2(Г-/)(1 -№); 4(6) = 0; 4(7) = 2(1+/)(!- №) ; Где 2я Й/ = exp (-/—). 8 3.4. ФУНКЦИИ УОЛША И ДИСКРЕТНОЕ ПРЕОБРАЗОВАНИЕ УОЛША-АДАМ АРА 3.4.1. Матрицы Адамара и функции Уолша Функции Уолша образуют полную ортонормированную систему с копия» ством функций 21,1 = 1,2 ,.... и значениями ±1. Они были открыты Уолшемт 1923 г., однако в матричной форме построены еще Сильвестром в 1867 г. Адамар в 1883 г. показал, что эти матрицы принадлежат классу матриц с мак- симально возможным определителем. Поэтому они получили название матр» Адамара типа Сильвестра. Изучение функций Уолша удобно начать с изучена именно этих матриц. Определение. Матпипей Апамапа называется ортогональная квадрат нал матрица порядка N, элементами которой являются действительные чисв ± 1. Матрица Адамара порядка N обозначается Н^. Простейшей матрицей Адамара является матрица второго порядка: Для построения матриц порядка ,V= ,1 = 2,3,... (матриц типа Сильвестр используется следующая теорема. Теорема 3.1. Если - матрица Адамара порядка 7V, то матрица |1 11 1 11 -П 1 ‘Г 1-1 1 -1-1 1 Г “1 1-1 1 1 1 -1 1 -1 -1 в более компактном виде Н4 = Н2 х Н2 ,Hg=H2xH4 .Описанная процедура построения носит название прямого или кронекерова умножения. Пронумеруем строки и столбцы матрицы Адамара двоичными числами от • до N- 1. Пусть k = (к{1 kl 2 ... Лго) - двоичный номер столбца. Тогда эле- мент матрицы, стоящий на пересечении строки с номером к и столбца с номе- ром л, вычисляется по формуле had(fc, п) = (-1) (k’n) , (3 39) Г-1 тде (к•п)= Д k/i. — скалярное произведение векторов кип. Например , для матрицы Hg с учетом (3.39) получим (пек 0; о: 1 г 1 ь’/л. » о 0 111: 0: 0| nil и, 1=^ 0 Ц0 Ц 0i Poi 1 к nJ к= ( *о) 0 0 0 I О 0 1 I (к • п) 0 1'0-----------(“О--------------- - 1 0 0 I 1'0 Г I- 1 1 0 I 1 1 1 L 1 с 11111111 had (000, и) 1-1 1 -1 .1 -1 1-1 had (001, и) 1 1 -1 -11 1 -1 -1 had (010, и) 1- -1 -1 1 1-1-1 1 had (011, и) 1 1 1 г -1 -1 -1 -г had (100, и) 1-1 1-1-1 1-1 1 had (101, и) 1 1-1-1 -1 -1 1 1 had (110, и) 1-1-1 1-1 1 1 -1 had (111,и) Ка ^JOKH^a<^(000>n)>had(001,n),...Jiad(l 11,и) матрицы можно рассматривать ТОч1е^>пК?ИИ дискРе1НЫХ переменных пик , определенные в целочисленных °’ ннтеРвала [ 0, N). Эти функции называются дискретны- Функциями Уолша. Первая переменная к обозначает номер функции, вто- 52 53
Рис. 3.8. Функции Уолша в упор* цочении Адамара. рая переменная и - дискретное время. В качестве номера функции берется в мер соответствующей строки матрицы Адамара. При этом говорят, что фую ции упорядочены по Адамару. Дискретные функции можно рассматривать кв результат дискретизации непрерывных функций Уолша had(fc, Г). Для N = \ непрерывные функции Уолша показаны на рис. 3.8. В практических приложениях используется и другая нумерация функци что, соответствует другому способу ранжирования обобщенных гармонии Наиболее употребительными из них являются упорядочения по Пэли и ’ Уолшу. Система Пэли образуется из системы Адамара двоичной инверсией ном ров функций, т. е. путем записи разрядов двоичного представления номер! в обратном порядке. Система Уолша располагает функцией в порядке возр* тания числа смен знака на интервале (по ’’частотам” следования), что соотвв ствует расположению их номеров в двоично-инверсном коде Грея. ' Для N = 8 в рассмотренных способах упорядочения строки расположен следующим образом: Упорядочение по Адамару Упорядочение по Пэли Упорядочение по Уол> ООО 000 000 001 100 100 010 010 110 011 110 010 100 001 011 101 101 111 по 011 101 111 111 001 54
Соответствующие матрицы при упорядочении по Пэли и по Уолшу равны: Р={ра1(£, л)} = 11111111 1 1 1 1 -1 -1 -1 -1 1 1-1-1 1 1-1-1 1 1 -1 -1 -1 -1 1 1 .1 -1 1-1 1-1 1 -1 1-1 1-1-1 1-1 1 1-1-1 1 1-1-1 1 1 -1 -1 Г -1 1 1 -1 ч а W ={wal(i, «)}= - ‘1 1 1 1 1 1 1 1 ' 1 1 1 1 -1 -1 -1 -1 1 1 -1 -1 -1 1 1 1 1 -1 -1’ 1 1--Г -1 1-1-1 1 1-1-1 1 1-1-1 1--Г 1- Г-1 1 -1 Ь-1 -1. 1‘-1 - 1 1-1 1-1 1' -1 1 -1 Важнейшими свойствами функций Уолша являются: 1) ортогональность N—1 S had(fc n)had(fc, Л= 0 f N, к, =к- и)= 5 1 2 10, к *к2 (3.40) или в матричной записи = ЛГ1, (3.41) где I - единичная матрица; 2) симметричность- H„=Hj . (3.42) Используя свойство ортогональности (см. (3.40), (3.41)) и симметричности (см. (3.42)), легко получитьН~* 3) мультипликативность по номеру функции had(*l.«)had(it2,n) = had(itt®t2, л) (3.43) и номеру отсчета } had(*, )had(fc, л2) = had (it, л,® л2). (3.44) Yqt4;, свойства записаны для системы Адамара, они справедливы и для сие- И Уопта j^^WJTOHHHaH функция и функции меандрового типа с одной ненулевой по- в двоичной записи номера называются функциями Радемахера. Для равны- 55
Ro — had(OOO.w); J?2 = had(010, л); Rx = had(100?M); R3 = had(OOl,«) . Из свойства мультипликативности (см. (3.43)) следует, что любая функ ция Уолша может быть получена перемножением функций Радемахера. Напри Мер: had(011,w) = J?2/?3; ‘ ' л$' ' * had(110,n) = ^1Z?2. . 11 - Сравнивая функции Уолша с дискретными экспоненциальными функция ми, можно заметить, что они совпадают при W= 2. 3.4.2. Преобразование Уолша-Адамара Пусть {$ (л)} ={s(0), s(l), ..., s(N— 1J — совокупность равноотстоящиз отсчетов сигнала. Выражения ЛГ-1 b(k) = S «(и) (—1) , к= 0,1.....N-l; (3.45) п=о ’ N-i , <- »(л)=ЛГ1 2 *(*Х—1)(lt*n) , л = 0,1,..., AM оЛымилб (3.46) к=о образуют пару дискретного преобразования Уолша—Адамара в показательно! форме. Равенство (3.45) называется прямым преобразованием и дает спект[ сигнала в базисе Уолша. Равенство (3.46) называют обратным преобразова нием. Используя матрицу Адамара порядка АГ, можно записать преобразование! матричной форме: •В - HS; (3.47) S = ЛГ* НВ, (3.48) тде S = [s(O),j(l),...,j(AM)]r,B= [6(0), 6(1), ...,6(ЛМ)]Г- вектор» столбцы отсчетов сигнала и спектральных коэффициентов. Основными свойствами преобраэования являются: 1) линейность. Если (х(л)} ц {у (л)} — две последовательности со спектр» ми{бх(к)}и(бу (к)} соответственно, то спектр их взвешенной сумм» { z (л)} = {Л*(л)} + {ву (л)} равен £бг(к)]= /Л6х(к)} + {Bby(k)J ; 2) инвариантность к диадному сдвигу. Рассмотрим функцию т(л) ди» кретной переменной л. Функция s (л ® т) называется диадным сдвигом функ- ции з(п). Сущность диадного сдвига заключается в перестановке отсчетов и» входной функции. В частности, на место отсчета с номером и ставится отсчет< 'номером л®т . Например, пусть О(л )} ={00111100} и т = 4. Значения п91 для л = 0,1, ...,7 равны 56
«с п Ц п ® т > ООО® 100 = 100 г 001 ® 100 = 101 010 Ф 100 = по ' 011 ©100 = 111 100® 100 = ООО 101 ® 100 = 001 ПО® 100 = 010 . 111 ®100 = 011 г Иэ этой записи следует, что отсчет с номером нуль ставится на четвертое место, отсчет с номером один - на пятое место и т. д. В результате получим {j(n)} = {ооп!поо}; z £(л®т)} - {nodooii} . Из свойства мультипликативности (3.44) следует, что при фиксирован- ном т had(fc, л ®т) = had(fc, и) had(fc, г) = +had(fc, и ) , <^44,^4 т. е. спектральные составляющие исходного и диадно-сдвинутого сигналов мо- гут отличаться только знаком. Амплитудный же спектр при диадном сдвиге не меняется; 3) теорема о свертке и корреляции. Понятие диадного сдвига позволяет обобщить понятия свертки и корреляционной функции. Так как суммирова- ние и вычитание по модулю два совпадают, то диадная свертка совпадает с диадной корреляцией и определяется выражением N-1 y(rt) = г(п) = 2 ft(/)s(n®/), и =0,1,..., (А-1). (3.49) 1=о Теорема о свертке утверждает, что спектр свертки равен произведению спектров сворачиваемых последовательностей: by(k) = bh(k)bt(k). (3.50) Это позволяет для вычисления диадной свертки и корреляционной функ- ции использовать преобразование Адамара: R, = Н-‘(ВЙ В,) = АГ‘Н(ВЛВ,). (3.51) 3.43. Быстрое преобразование Уолша—Адамара _С^Вычисление преобразования по формулам (3.45)-(3.48) требует выполнения МАМ) операций сложения. Существуют быстрые алгоритмы, ко- торые требуют только Nlo^N операций. '"-^&№лэстроеяия4>ывтрого алгоритма рассмотрим матричное равенство -В = H^s. Запишем его в виде 57
ь(0) h(l) 5(0) s(D А А = Чу/2 Ну/2- /АГ «(у -О *(А?2) 6(АМ) 5 (АГ-1) что позволяет отдельно вычислить первую и вторую половины спектра. Полу- чим Ь(0) &(1) ^-1) s(0) + s(A?2) s(l) + s(Atf2+l) S(~-1)+5(AM) b(N/2) 5(0) -s(N/2) 5(1) -5(27/2+1) • = На/2 6(АГ-1) 5(^ -1)-5(2V-1) Из этих выражений следует, что вычисление ^точечного преобразования .сводится к предварительному суммированию (вычитанию) входных данных и 'последующему вычислению двух Л?2-точечных преобразований (рис. 3.9, я). \ Так как N= 21 , то процедуру снижения, размерно ста преобразования можно продолжить до получения двухточечного преобразования. Для этого потребуется logjAf шагов. На каждом шаге производится N сложений, поэто- му общее количество операций сложения равно Aflog^Af. Рассмотренный алго- ритм называется быстрым преобразованием Адамара (БПА). ( На рис. 3.9, б приведен граф вычислительного процесса дл.яЛС== 8. Аналогично преобразованию Фурье НПА можно-тракТовать как разложе- ние (факторизацию) матрицы Адамара в произведение слабозаполненных со- множителей. Непосредственно по графу для N = 8 можно записать
1 1 1-1 1 1 1-1 1 1 1-1 1 I 1-1 1 1 1 -1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 -1 111 -I -1 1 -1 1-1 1 -1 Существуют и другие формы факторизации, в частности Нв=С3С2С,; Н, = С3, а Рис. 3.9. Быстрое преобразование Уолша-Адамара. 59
где ~1 1 1 1 1 1 С= 1 1 1-1 1-1 1-1 1-1 3.4.4. Двухмерное преобразование Рассмотрим сигнал, заданный матрицей размером Nt х N2 sfOfi) 4(0,1) ... т(0Л2-1) s(l,O) 4(1,1) ... s(l,^-l) S = (3.52) s(Nri,O)s(M-1,1) ..s(Ni -1,ЛГ2-4) Пара двухмерного преобразования Уолша—Адамара этого сигнала определяет- ся равенствами ^2 1 1 (n.*k )+(п_«к2) Ь(к ,к2) = 2 S s(n и2)(-1) 1 1 2 ; * 2 Л2 = ОЛ1=О * J 6(к1,к2)(-1)<П1’к1>+<П2*к2). (3.54) 12 12 fc2=o kj=o 1 2 Выражение (3.53) называется прямым преобразованием, а выражение (3.54) -обратным. Рассмотрим в равенстве (3.53) внутреннюю сумму (3.53) «^ = 0 * Легко заметить, что эта сумма является преобразованием Уолша-Адамара столбцов матрицы S (3.52). Изменяя , получим^ коэффициентов преоб- разования, которые можно записать в виде вектора-столбца. Аналогичные векторы-столбцы получаются при изменении переменной п2 . Поэтому все ко- эффициенты двухмерного преобразования можно представить в виде матрицы размером х ДГ2: в = 6(0,0) 6(1,0) ft (0,1) 6(1,1) б(0Л2-1) б(1Л2-1) b(N2 -1,0) 6(^-1,!) ... 6(^-1 Л2-1) что позволяет записать пару двухмерного преобразования в матричной форме: 60
В = Hv SH^ ; (355) ‘-г S = ЛГ^Н^ВН^. (3.56) Здесь (3.55) - прямое преобразование; (336) - обратное. Приведенные формулы показывают, что двухмерное преобразование вы- полняется при помощи одномерного следующим образом: 1) выполняются одномерные преобразования размером для каждого из столбцов пг )}т, п2 = 0,1,..., N2 — 1, матрицы S ; 2) выполняется одномерное преобразование размером N2 для каждой из строк матрицы p(nrn2)} . Двухмерное преобразование может быть использовано для понижения размера процессора, если длина вектора входных данных велика. Для этого входные данные разбиваются на отрезки длины . Эти отрезки записываются в виде столбцов матрицы S и далее выполняется двухмерное преобразование. Столбцы матрицы В выстраиваются в одномерный массив, который дает ко- эффициенты одномерного преобразования. Пример 3.3. Вычислить преобразование длины IV= 16 при помощи двухмерного преобразования длины N = 4. Так как IV— N^N2 — 4*4, то вектор S = (s(0), s (1) ,..., t (15) ] преобразуется в матрицу ’i(O) 1(4) 1(8) 1(12) ‘ 1(1) 1(5) 1(9) 1(13) S = 1(2) 1(6) 1(Ю> 1(14) • 1(3) 1(7) 1(11) 1(15) Для вычислений можно использовать схему, показанную на рис. 3.10. 3.45. Взаимосвязь спектров Рассмотрим матричные формы преобразования Фурье F = VS и преобразования Уолша—Адамара (357). 61
8=^8. (3.58) Определим из формулы (3.57) S и подставим его в (3.58). Тогда получим S = V-1F; B=HjVV'1p (3.59) Аналогичным образом, определив S из (3.58) и подставив его в (3.57), полу- чим S = IT'B; F = VHT^'B. (3.60) Выражения и в формулах (3.59), (3.60) позволяют пересчитать спектр по Фурье в спектр по Уолшу—Адамару и наоборот и называются ядра- ми Фурье. Учитывая равенства V~l =N"lV* •, Н"1=Лг1Н, можно также записать В= JV^HyV’S; F = N-1VHB . (3.61) Для умножения на ядра Фурье в формулах (3.61) существуют быстрые алго- ритмы. 3.5. ТЕОРЕТИКО-ЧИСЛОВОЕ ПРЕОБРАЗОВАНИЕ 3.5.1. Кольцо-и поле Для определения теоретико-числового преобразования (ТЧП) нам потре- буются два математических понятия - кольцо и поле. Кольцом R называется множество элементов (д, Ь, с,...), над которыми определены две операции — сложение и умножение (может быть, не совсем обычные) 'и выполняются следующие аксиомы: 1) если а, b eR , то a+beR и а • bcR . Эта аксиома называется аксиомой замкнутости; 2) в копыте существует нейтральный элемент 0, такой, что для любого эле- мента а кольца а + 0 = а, я обратный элемент (-я), такой, что а + (-я) = 0; 3) для элементов кольца выполняются свойства ассоциативности д(&с) = (ab)c и дистрибутивности а(Ь + с) - ei> + ас. Если в R существует нейтральный элемент по умножению — 1, такой, что для любого элемента а кольца справедливо равенство а • 1 = 1- а = а , то та- кое кольцо называется унитарным или кольцом с единицей. Если в унитарном кольце для каждого элемента а существует мультипли- кативно обратный элемент а1 , т. е. справедливо равенство да-1 = 1, то такое кольцо называется полем. В задачах цифровой обработки сигналов (в частности, в теоретико-число- вых преобразованиях) важное значение имеет кольцо целых чисел по модулю числа М . Элементами кольца являются вычеты 0, 1,2, ...»М— 1, а операция- ми - операции сложения и умножения по модулю М. Например, если М = 14, то элементами кольца будут числа 0,1,2.13. Эти числа не образуют поле, так как не для всякого элемента кольца сущест- вует обратный элемент. В частности, число 2 не имеет обратного числа. Числа же 3 и 5 являются взаимно обратными, так как 3-5=15 = 1 mod 14. Можно доказать, что число а имеет обратное число д’1 , если оно взаимно просто с модулем. Поэтому если модуль равен простому числу, то все числа кольца имеют обратные и такое кольцо будет полем. Наличие обратного эле- мента важно для последующего построения теоретико-числового преобразо- вания. Рассмотрим некоторый элемент кольца а и его степени д , д , ... По- скольку число элементов в кольце конечно и справедлива аксиома замкнуто- сти, то на каком-то шаге получим д*+1 = а , что дает я* = 1. Наименьшее к, удовлетворяющее этому равенству, называется порядком элемент а . Для предыдущего примера легко проверить, что 3* = 1 mod 14, т. е. число 3 имеет порядок 6. Если а и М взаимно просты, то а<р(М) = ImodM, (3.62) где ^(М) - функция Эйлера, равная числу чисел ряда 0,1...,(М-1), взаимно простых с М . Следовательно, порядок числа д должен быть делителем функ- ции Эйлера и все порядки лежат среди всевозможных делителей. Равенство (3.62) называется теоремой Эйлера. С ее помощью можно доказать следую- щую теорему. / / // Т еор ема 3.2. Если М = ptl-р22 ... р , то порядок к числа а являет- ся делителем наибольшего общего делителя (НОД) чисел рх -1, р2 - 1, -, Р(-1, т. е. £|НОД (Pj — 1, р2-1....Р,-1). Читается:/: делит НОД. Теорему Эйлера можно использовать для нахождения обратного элемента. Умножив обе части сравнения (3.62) на д-1 , получим д"1 = д^<М) -imojjif, что дает д-1 = <д*(М)-1 > . лт 35.2. Теоретико-числовое преобразование и вычисление сверток f. i, i. Рассмотрим кольцо целых чисел по модулю числа М = р' • р2 •... -Pf> где р, - простые числа. Пусть в - элемент кольца порядка N (т. е. aN= ImodM)- Из теоремы 3.2 следует, что jVj НОД (pt -1, р2 -1 р{ — 1). Пусть {s(n)} = {$(0),$(1),.... s(M—l) } —последовательность отсчетов 62 63
входного сигнала. Пара теоретико-числового преобразования последователь- ности (s (и) J определяется в экспоненциальной форме следующими равенства- ми: JV-1 д(Л) = S ЛГ-1 ; п=о (3.63) ЛГ-т j (л) = N' Е а(к)а~кп , п = 0,1, ...Л-1 , (3.64) *=о где N1 — число, обратное числу Л\т. е. NN* = ImodAf. Соответствующие матричные выражения имеют вид А = TS ; (3.65) 8 = УГ1А, (3.66) где S = (j(O),s(1),..., s(АМ)]Г,А = (в(0),в(1).....д(ЛМ)]г,а л Г 1 Т= Л--А*-5- L I . л есть матрицы прямого и обратного преобразований соответственно. Сравнивая формулы (3.63) -(3.66) с соответствующими формулами для ДПФ, легко заметить полную аналогию в записи этих двух преобразований. Отличие заключается в том, что поворачивающие множители W замшены эле- ментом а порядка N. Заметим также, что ТЧП длины Nсуществует, если толь- ко в кольце имеется элемент, обратный элементу N. Поскольку в поле нали- чие обратных элементов гарантируется простотой модуля, то в поле ТЧП су- ществует всегда. Так как ТЧП по своей структуре подобно ДПФ, то для него справедливы все свойства ДПФ с заменой И* на а и выполнением арифметических операций по модулюМ. В частности, строки матрицТ и Т*1 ортогональны по модулюМ и справедлива теорема о свертке. Основным ппимяирнием ТЧП является вычисление сверток и корреляци- онных функций методом двойного преобразования. Поскольку g - целое чио- -’НоГа некомплектное, то операция умножения существенно упрощается и вы- полняется точно. Шумы округления полностью отсутствуют, что может быть важно, когда входное отношение сигнал/шум мало. Чтобы ТЧП давало еще дополнительные преимущества, необходимо по- заботиться о хорошем выборе параметров а и М. В частности, умножение на а и деление на М должны быть простыми операциями. Лучшим выбором для а является а = 2г . В этом случае умножение на а сводится к сдвигу числа на i позиций. Деление проще всего осуществляется, если двоичное представление модуля содержит только два ненулевых символа. В этом плане заслуживают внимания числа вида 22 + 1 — числа Ферма. Для них N <-2r+1 и а является степенью двойки, поэтому матрица преобразования разбивается на макси- мальное количество сомножителей, структура которых аналогична соответст- 64
^укипим матрицам ДПФ. Однако существенным недостатком чисел Ферма яв- ляется большая длина машинного слова. Например, если М = 264 + 1, к^ = = 128, т. е. приходится работать с 65-раэрядными двоичными числами. При выборе меньшего модуля не всегда удается выполнить условие а = = 2' . кроме того, деление на М происходит сложнее. Как уже указывалось, при выполнении T4J1 вычисления производятся до модулю М , поэтому величина М должна быть больше ожидаемого ответа. Иначе будет получен искаженный результат. Приведенные рассуждения показывают, что параметры N, а и М жестко связаны между собой теоретико-числовой конструкцией кольца или поля и не могут варьироваться произвольно. Это создает определенные трудности при практическом использовании ТЧП. Для иллюстрации свойств и возможностей ТЧП рассмотрим пример. т При м е р 3.4. Вычислить свертку последовательностей S = [2, -2, 1, 0] , И = = {1,2,0,0]. 2 Поскольку .V = 4, то можно взять М=22 *1 = 17. Целое число 2 имеет порядок 8, в чем мдяого убедиться непосредственно проверкой. Поэтому целое число 4- имеет поря- док 4 н можно положить а = 4. Далее получим а2 = 16, а3 = 13,а4 = 1. Матрица прямого преобразования равна 1 1 1 1 4 42 1 42 44 1 . 43 4* 1 4 16 13 1 16 1 16 13 16 4 ’1 1 1 1 4 -1 -4 -1 1 -1 -4 -1 4 1 1 1 1 Как и в преобразовании Фурье, строки матрицы обратного преобразования Т*1 расположены в обратном порядке, т. е. 1 1 1 1 т-1 = 1 -4 -1 4 1 -1 1 -1 1 4 -1 Число, обратное ЛГ, равно N* = 13, так как 13*4= 52= 1 mod 17 . Прямые преобразования сворачиваемых последовательностей равны As = TS = [1,10,5,9] Ан= ТН= [3,9,16,10]т, а их произведение AS-AH = [3,90,80,90]г= [3,5,12,5] т. Обратное преобразование этой последовательности дает свертку V = 13Т-*(А8.Ан) ~ (2,2,14, 2)Г= (2,2,-3,2)Г
3.6. ФУНКЦИИ ХАДРА И ПРЕОБРАЗОВАНИЕ ХАДРА Функции Хаара (har(r, к, 0} были построены в 1910 г. Они образуют пол- ную систему ортонормированных функций, определенных на интервале [ 0,N), N = 2l, I = 1,2 и описываются следующими рекуррентными соотношени- ями: har(O,O, О = 1, t е [0,2V); X = {har(r, fc, л)} = har(r, к, f)~ ' 2^, N(k-l)2^r < t <N(k-O^)2~r; - -2^ ,N(k -0,5) 2*< t < Nk2~r ; (3.67) < 0, при остальных te [0,2V) > где 0 < r< logj# и 1 < к < 2r . На рнс. 3.11 показана система функций для 2V= 8. При дискретизации сис- темы (3.67) получаются дискретные функции Xaapa(har(r, к, и)} . определен- ные в целочисленных точках 0,1,2..N—1. Дня 2V= 8 матрица этих функций имеет вид harw»4 1- har(o,i,t)fl~ harff, 2,i) t п и 11111111 11 1 1-1 -1 -1 -1 V2 0 0 0 0 0 0 0 0 2-200 0 0 2 -2 0 0 0 0 0 0 0 0 y]2 \/2~\f2-\f2 0 0 0 0 0 0 0 0 2-2 0 0 0 0 2 -2 har(z,2,d‘ 2 hax,(2,3,t) 2 har(2.4,tJ har(2,1,t) * 2 t Ли. У.П- Функция Хаара. Так как функции Хаара ортогональны, то ххJ - 2VI. Умножив обе части этого равенства на х'1 . получим х"1 - 2V4 хГ • Множество функций Хаара, в отличие от функций Уолша, не является мультипликативным, т. е., вообще го- воря, произведение функций Хаара не приводит вновь к функции Хаара. С увеличением переменной г уменьшается интервал, на котором функция Хаара отлична от нуля. Это обстоятельство позволяет использовать разложе- ние Хаара для получения спектральных коэффициентов, учитывающих локаль- ное поведение функции. Пара дискретного преобразования Хаара вектора S = [ s(0), л(1) , s(N— l)j определяется следующими соотношениями: Y.-xS; y(ri= 2 (3.68) gn_ w-' (3.®) Выражение (3.68) называется прямым преобразованием, выражение (3.69) — обратным. Дня вычисления этих преобразований существуют быстрые алгоритмы с числом операций сложения, рав^мД^ - 1), т. е. преобразование Хаара яв- ляется самым быстрым среди всехфассмотренных ортогональных преобразо- ваний. . АФ Ългмюлг&£аф Граф прямого преобразования для JV—8 показан на рис. 3.12. s(0) s(1) s(2! s0f s(4) s(5) s(6) s(7)4----+ tj.S.-, «У-З?.. А -4 = 2[М) Puc. 3.12. Быстрое преоб- разование Хаара. 67 у(0) y(i) -&fi.y(2) -&W>) -&2tf(6) 66
3.7. АДДИТИВНАЯ СЛОЖНОСТЬ ДИСКРЕТНЫХ ОРТОГОНАЛЬНЫХ ПРЕОБРАЗОВАНИЙ Ранее (см. § 3.2, 3.4, 3.6) были рассмотрены различные ортогональные преобразования вектора отсчетов S . Все они с формальной точки зрения сво- дятся к вычислению векторно-матричного произведения AS, где А — матрица преобразования. Эти вычисления могут быть выполнены при помощи быстрых алгоритмов, позволяющих существенно сократить количество операций. Одна- ко остается открытым вопрос, обладают ли рассмотренные алгоритмы мини- мальным количеством операций, и если нет, то каковы возможности их даль- нейшего улучшения. Другими словами, необходимо указать нижнюю границу сложности вычисления ортогональных преобразований. Важность этой грани- цы состоит в том, что она устанавливает предельные соотношения, к которым следует стремггься при проектировании, либо указывает на неулучшаемость алгоритма. В настоящем параграфе ответ на поставленные вопросы дается примени- тельно к операциям сложение, т. е. приводится нижняя граница аддитивной сложности дискретных ортогональных преобразований (вопрос о нижней гра- нице мультипликативной сложности рассмотрен в следующей главе) В [ 1] показано, что аддитивная сложность умножения вектора на матри- цу А оценивается неравенством са ** (log,, det Al)/log, 2с , где с -наибольший из модулей элементов матрицы А. Для матриц ортогональных преобразований Фурье, Уолша и Хаара спра- ведливо соотношение А(А*)Г“ М , где N - порядок матрицы, а знак * обозначает комплексное сопряжение. Ис- пользуя это тождество и свойства определителей, получаем det A-det А* = . Матрицы преобразований Уолша и Хаара действительные, а сопряженная мат- рица преобразования Фурье получается из исходной изменением.по рядка сле- довании строк, что не меняет определителя. Поэтому idetA = NnP . Для матриц Уолша и Фурье 2с = 2, а для матриц Хаара 2с - (2Л)1/2. Поэтому {OJSMo^N (для матриц Уолша и Фурье); (Mogy/V) / (iHogjV) (для матриц Хаара). Известны и более точные оценки. В частности, для матриц Фурье и Уолша Са > О.бЗМо^ЛГ. Рассмотренные ранее быстрые алгоритмы выполняются за Nlog^N опера- 68
НИЙ для преобразований Уолша и Фурье и за 2 (7V-1) операций для матриц Хаа- ра, т. е. вдвое сложнее. КОНТРОЛЬНЫЕ ВОПРОСЫ И ЗАДАЧИ 3.1. Что называется обобщенным спектральным представлением сигнала? 3Л. Какие системы функций называются базисными? 3.3. Вычислите значения поворачивающих множителей W, W2 , И'3 , W"1-, W~2 , W~3 для N — 8 . ЭЛ. Докажите свойства 1-4 системы ДЭФ. 33. Докажите свойства 1-8 ДПФ. 33. Запишите матрицы прямого и обратного ДПФ для #= 4,8. 3.7 . Вычислите спектр последовательностей (1,1, -1, -1), (1, -1, —1,1). Убедитесь в справедливости свойств 4,7. 33. Постройте графы БПФ с прореживанием по времени и частоте для ЛГ= 16. 3.9. Постройте графы БПФ для ЛГ= 6 и по ним запишите матрицы ДПФ в виде произ- ведения двух сомножителей. 3.10. Как использовать матрицы прямого ДПФ для вычисления обратного ДПФ? Вы- числите обратное ДПФ для спектров,найденных в п. 3.7. 3.11. Вычислите спектр действительной последовательности (-1, -1, 1, 1. 1, 1, -1, -1) при помощи ДПФ размера ЛГ = 4. Сравните полученные результаты с результатами примера 3.2. 3.12. Вычислите корреляционную функцию последовательности (1,1,1, -1) прямым методом и с помощью ДПФ. Сравните результаты. 3.13. Докажите свойства 1-3 функций Уолша. 3.14. Докажите свойства 1 -3 преобразования Адамара. 3.15. Вычислите спектр по Ада мару последовательности (I, 2, 1, -1, 3, 2, 1, 2) при помощи одномерного и двухмерного преобразований. Сравните результаты. 3.16. Постройте диадаые сдвиги поснедовательности (0, 1, 2, 3, 4, 5,6, 7) для 7 = = 3,5. Вычислите спектры сдвинутых последовательностей и убедитесь в инвариантности спектров к диадному сдвигу. 3.17. Используя ядро Фурье и результаты п. 3.7, найдите спектры последовательно- стей (1,1, -1, -1) и (1, -1, -1,1) по Адамару. Убедитесь в нешвариантности спектров к циклическому сдвигу. 3.18. Чем отличается кольцо от поля? Какое понятие является бояее общим? 3.19. Для кольца вычетов по модулю числа 11 найдите элементы, обратные Элемен- там 5 и 7. Является и и это кольцо полем? t 3ДО. Назовите основные свойства функций Хаара н преобразования Хаара. В чем существенное отличие этого преобразования от преобразований Фурье и Уоиша-Адамара? 3.21. В чем заключаются преимущества и недостатки ТЧП? 3.22. Сопоставьте вычислительную сложность преобразований Фурье, Уолша-Адама- ра и Хаара.
4. ДИСКРЕТНАЯ СВЕРТКА И ЕЕ ВЫЧИСЛЕНИЕ 4Л. ЛИНЕЙНАЯ, ЦИКЛИЧЕСКАЯ И ДИАДНАЯ СВЕРТКИ Многие задачи цифровой обработки сигналов с формальной точки зрения) представляют собой задачи вычисления свертки двух последовательностей { h (п) | и { s(n) } . В частности, через свертку выражается отклик линейной системы на некоторое возмущающее воздействие; при обращении одной из последовательностей по переменной п .свертка превращается в корреляцией- кную функциюучасто используемую в задачах обнаружения сигналов иопреда ленияйхпараметров. Список подобных примеров можно продолжить. Рассмотрим различные виды сверток, встречающихся в технических при- ложениях. 4 Пусть даны две апериодические последовательности {j(n)} длины £ и [Л (и) } длины М. В силу апериодичности s(n) —0 при£-1<л< 0; h (и) = = 0 при М-1 < л<0. Апериодическая или линейная свертка этих последова- тельностей имеет длину £ + М - 1 и определяется как ' £+Л-т у(п) = Е ft(0s(«~0, и = 0,1, ...,£+М —2. (4.1) 1=о . Это выражение можно записать ив матричной форме. Например, для£ =М= =JV получим ‘ У(0) ЯП НО) й(0) - A (1) • “1 с>» м as 1 (4.2) А (1) 42) А (0) А (1) й(0) h(N-2) ft (AM) ft(JV-3).. ft (AM).. У (2N—2) h(N—l)h(N~2') • ft(AM) « s(JV-l) Представим исходные последовательности в виде полиномов от некоторой переменнойz : М-1 h(z) = Ъ htfiz1-, 1=о L-1 s(z)~ Е s(m)zm . m=o Произведшие этих полиномов дает полином у (г) степени £ +М — 2: А+М-2 y(z) = ft(z)s(z) = Е у(п)гя . я=о
Коэффициенты у (л) полинома у (z) образуются суммированием всех произве- дений й , для которых / + т = п. Следовательно, т - п - /и у(п) = L+M —2 = Е й(/)«(и~О,л=О, +Л(-2, что дает значения свертки. Та- 1=0 ким образом, свертка двух последовательностей может рассматриваться как произведение двух полиномов. Пример 4 Д. Для трехточечных последовательностей £j(n)} ={»(0),»(1), т(2)£ , {*(«)} = £*(0) , Л(1). Л(2)} получим: i(a) = i(0) +i(l)z + i(2)z5 ; Л(я) = Л(0)+й(1)г+Л(2)?; 4 _ У (О = »(z)*(z) я I /(л)г", П=О те коэффициенты полинома у (г) равны у'(0) = й (0)i(0); у’(1) = Л(1)/(0)+Л(0)*(1); У *(2) = Л (2)*(0) + й (1)а(1) + Л (0)*(2); У (3) = h (2)а(1) +*(l)i(2) ; У * (4) = Л (2) i(2). Эти коэффициенты можно получить й из матричюй записи (4.2). Циклическая свертка определяется для периодических последовательно- стей длины jV выражением N-i у(л) = Е h(I)s(n~l) , л= 0,1, ...,АМ. (4.3) /=о В силу периодичности последовательностей номере отсчетов берутся по модулюN,поэтому s(-л) = s(N-n),h(-ii) = h (N-ri). Матричная запись циклической свертки имеет вид: У(0) ЯО У(2) • = Л(0) й(1) h (1) й (2) Й(2) Й(3) ... ft (JVM) ... й(0) ... ft(l) »(0) »(AM) s(N-2) • . (4.4) y'(N-V й (AM) ft (0) ... h(N-2) i(l) a « При вычислениях по модулю N из свойств сравнений следует, что № 0, поэтому в полиномиальном представлении / = 1 и циклическая свертка мо- жет рассматриваться как произведение двух полиномов по модулю полинома z"—l: y(z) = h{z)s (zymodiz^ -1). Обозначим ft (z)s (z) = w(z) = w(0) + w(l)z +... ♦ и<2У- 2) z2Ar“ 2 . Произведение по модулю zN -1 просто означает, что 71
j(0) = w(0) + w(N); .FC!) = ‘V (1) + w(N+ 1); y(N -2) = w(N—2)+w(2N-2) -, ' y(N-l) = w(A/—1). Пример 4.2. Для трехточечной циклической свертки с учетом равенства z 3 = 1 по лучим y(z) = О'' (0) +у*(l)z + /(2)z2 + /(3)z3 + y*(4)z4)mod(z3 -1) = = (У*(0) */(3)) + (у’(1) + /(4»z + /(2)z3 . Используя результаты щрнмера 4.1 и соотношения (4.5), запишем коэффициенты циклической свертки: у(0) = Л (0)1(0) ♦ Л (2)1(1) + Л (1)»(2); у(1) = Л(1)1(0) + Л(0)1(1)+ Л(2)1(2); >(2) = Л (2) 1 (0) ♦ Л(1)1(1) + Л(0)1(2). Эти равенства можно получить и с помощь» матричного соотношжия (4.4). Диодная свертка определяется выражением ЛГ-1 _у(п) = Е Л(0«(п®0 , п= 0,1........N—\. (4.6) /=о Здесь номера отсчетов представляются в двоичной системе счисления, ариф- метические операции над числами выполняются посимвольно по модулю два, а длина сворачиваемых последовательностей равна N = 2Р , v - целое число. При этом сдвиг функции фактически заключается в перестановке отсчетов. Та- ким образом, коэффициентами свертки являются суммы произведений Л (/) s (п®1), полученные при различных перестановках функций s (/). Пример 4.3. Пусть {Л(п)} ={1,-1,1,-1} ,{z(n)}= {1,2,3,4}. Значения днад- иого сдвига равны 00,01,10,11. При этих сдвигах аргумент я®/ функции »(п®/) получа- ет следующие значения: 00®/ 01 ®/ 10®/ и®/ 00 01 10 11 01 00 и 10 10 и 00 01 11 10 01 00 Диадный сдвиг цзиводит к перестановке отсчетов. Например, при я = 01 меняются местами четные и нечетные отсчеты, при я = И отсчеты располагаются в образном поряд- ке. Это дает следующие сдвжутые последовательности: (i(00®l)J ={1,2,3,4}; £i(01 ®1)} ={2,1,4,3}; {i(10®/)J = {3,4,1,2}; (1(11®/)} = {4,3,2,1}. Значения свертки равны: у(00) = (1,-1,1,-1) у (01) = (1,-1,1,-1) у (10) = (1,-1,1, -1) у(11) = (1,-1,1,-1] (1,2, 3,4)Г= -2; (2,1,4,3]Г = 2; (3,4,1,2)Г= -2; (4,3, 2,1)Г = 2. 4.2. ПРЯМЫЕ МЕТОДЫ ВЫЧИСЛЕНИЯ СВЕРТОК Для прямого вычисления сверток используются выражения (4.1), (43), (4.6) или соответствующие им векторно-матричные произведения, что требует доводка ТУЗ- операций, гае JV-длина свертки. В ряда случаев одна из последо- вател5йостеи (для определенности будем считать {й (л)} известна заранее. Та- кой последовательностью может быть импульсная характеристика фильтре или опорная последовательность коррелятора. Использование особенностей структуры (й (и)} позволяет часто существенно сократить число операций. В частности, сокращение почти всегда возможно, если{й (п)} - бинарная после- довательность. В этом случае выполняется умножение вектора S = [т(0), s(l),.... 5 (AM)]” на бинарную матрицу. Оно может быть построено итера- тивно. Сначала вычисляются суммы, соответствующие соседним парам столб- цов матрицы к элементов вектора 8:1 и 2; 3 и 4 и т. д. Затем эти результаты используются для образования сумм соседних четырех элементов в столбцах матрицы: 1, 2, 3, 4; 5, 6, 7, 8 и т. д. Сокращение объема вычислений при та- кой процедуре возможно вследствие того, что на каждой итерации число раз- личных сумм ограничено некоторой постоянной величиной, меиыцей .или рав- ной числу строк матрицы. При обычном способе умножения эти ограничения не учитываются. Рассмотрим этот вопрос подробнее. На первой итерации образуются суммы, соответствующие парам соседних столбцов матрицы и элементов вектора: 1 и 2; 3 й 4. Каждая пара столбцов со- держит в своих строках только четыре различных числа 1, -Г, -1, —1; -1,1; 1, 1, причем д ва числа являются инверсиями двух других. Этим числам со- ответствуют четыре различные суммы ±s(f) ± s(i + 1) , на вычисление которых достаточно затратить только две операции сложения (вычитания). Общее ко- личество операций на первой итерации равно 2 (А?2) = N. На второй итерации используются соседние четверки столбцов матрицы, а количество различных сумм в каждой четверке не превышает количества различных четырехразряд- ных чисел, т. е. 2*. Поскольку половина из них получается инвертированием другой половины, то на вычисление расходуется не более <2*/2) (NJ4) - 2N операций. Рассуждая аналогично, получим, что на /-й итерации число операций ие превышает величины 23>~1 (N/21). Заметим, кроме того, что число сложе- ний (вычитаний) на i-й итерации не может быть больше, чем N(NI21), поэтому в общем подсчете должно участвовать меньшее из этих чисел. В табл. 4.1 показан выигрыш т? в количестве операций при рассмотренном методе умножения для квадратных матриц cN = 2". 72
Таблица 4.1 Л 4 6 8 10 12 14 16 п 2,50 ЗЛО 5,10 7,00 7,73 7,93 10,63 . Проиллюстрируем сказанное примером. Пример 4.4. Рассмотрим вычмслшие циклической свертки, матриц* которой име- ет следующий вид: 1 -1 1 1 1 -1 -1 -1 1 -1 1 -1 1 1 1 -1 -1 -1 1 -1 1 1 1 1 1 -1 -1 -1 1 -1 1 1 -1 1 1 -1 -1 -1 1 -1 1 1 -1 1 1 -1 -1 -1 1 -1 1 1 -1 1 1 -1 -1 -1 1 -1 1 1 -1 1 1 1 • -1 -1 1 -1 1 1 -1 1 1 1 -1 -1 1 -1 1 1 -1 1 1 1 -1 -1 1 -1 1 1 -1 1 1 1 -1 -1 -1 -1 1 1 -1 1 1 1 -1 -1 -1 1 1 1 -1 1 1 1 -1 -1 -1 1 -1 Процесс вычислений иэображя на рис. 4.1 в виде графа. На первой итерации вычис- ляются сумма и разность соседних отсчетов вектора. Столбцы матрицы 1,2, 3,4 и5,6,7,8 содержат в своих строках по восемь чисел, не являющихся инверсиями друг друга. Остав- шиеся столбцы 9,10,11 содержат по четыре таких числа. Все эти числа записаны во вто- рой итерации. Суммы элементов вектора, соответствующие этим числам, получаются пу- тем сложжия и вычитания результатов первой итерации. На третьей итерации аналогично образуются суммы, соответствующие восьмеркам соседних столбцов матрицы и элемен- тов вектора. Поскольку столбцы с 12-го по 16-й в исходной матрице заполняются нуля- ми, то часть вьгаспений на третьей итерации сводится просто к передаче ранее получен- ных результатов. Вычисляли заканчиваются на четвертой итерации после выполнения 50 операций. Обычный метод умножения требует ИОоперацнй. Важным классом бинарных матриц являются матрицы Адамара. Эти мат* рицы (см. гл. 3) строятся итеративно: г наг наг iN [Hjy -Наг J Поэтому пары, четверки, восьмерки соседних столбцов содержат соответст- венно два, четыре, восемь различных чисел. На каждой итерации число различ- ных чисел увеличивается вдвое. В то же время происходит сокращение вдвое количества промежуточных сумм за счет суммирования нар, четверок, восьме- рок и т. д. В результате число узлов графа на каждой итерации остается по- стоянным нравнымN, а вычислительный процесс заканчивается через АЛо^АГ операций. С этой точки зрения алгоритмы быстрого преобразования Уолша- Адамара можно трактовать как частный отучай описанного алгоритма. Важность матриц Адамара заключается в том, что к ним можно свести матрвды сверток ряда широкоупотребительных сигналов [ 9] . В качестве при- 74
Л XS 11-и 'rin-i \ 1-in Х2 Х6 X 11 1-1 -11-1 -n-п -1-1-11 'т-1 ' -in 1-111 11-и -111-1 11 11 11 Х8 Х* -I-п -1-1-1 t-1-i 11-1111^1-1 -111-1111-1 Ын-ин ^-11-111-111 -11-111-111 -1-1-11-111-1 1-1-1-11-т 11-1-1-п-и 1П-1-1-11-1 1Ш-1-1-11 1-И11-1-1-1 /О 2 а------а 3-а------а Рис. 4.1. Граф вычислительного процесса: 1 — суммирование; 2 - передачи прямая ; 3 - смена знака «мела. мера приведем последовательность максимальной длины. Для JV = 7 матрица свертки этой последовательности имеет вид III 1 И* ** н* и* м* н* н* III 1 н* и* и* н* м* н* ь* III 1 НМ И* М Н* 1 III М Г* И* Н* И* И- НМ 1 1 • II И» »** И* И* И* н* И* III 1 *ММ ЙмА Н* На* И* > 1 • Переставим строки матрицы следующим образом: 1 -* 1, 2 -+ 2, 3 -+ 5, 4-+3.5 -*7,6-+6,7-+4. Запись Н/ означает, что строка с номером i ставится на место строки с номером/. Получим: 75
11-1 1-1-1 -1 1-11 -1 -1 -1 1 1-1-1-11 1 -1 -111-1 1-1 -1 -1 1 -1 -1 -1 1 1 -1-11 1-1 1-1 -1-1-1 11-1 1 • Теперь сделаем следующую перестановку столбцов: 1 -*4,2 -* 2, 3 -* 1, 4-*6,5 -*3,6-»7,7 -»5. Записываем -1 1 -1 1 -1 1 -1 1 -1 -1 1 1 -1 -1 -1 -1 1 1 -1 -1 1 1 1 1 -1 -1 -1 -1 -1 1 -1 -1 1 -1 1 1 -1 -1 -1 -1 1 1 -1 -1 1 -1 1 1 -1 Нетрудно видеть, чт последняя матрица отличается от матрицы Адамара по- рядка восемь отсутствием первых строки и столбца. Поэтому вычисление свертки можно выполнить следующим образом. Позиции исходной последо- вательности переставляются по закону перестановки столбцов, и полученный вектор дополняется слева одним нулевым отсчетом. В результате этих дейст- вий получим вектор. 8= [O,s(3),s(2),s(5),s(l),s(7),j(4),s(6)]r. Этот вектор умножается на матрицу Адамара порядка восемь. Результаты умножения переставляются по закону обратной перестановки строк, т. е. 1 -* 1, 2-*2, 3-*4, 4**7, 5-*3, 6-*6, 7 •* 5 . Сведение матриц реальных сигналов к матрицам Адамара более подробно рассмотрено в главе 5. 43. ВЫЧИСЛЕНИЕ СВЕРТОК ПРИ ПОМОЩИ БЫСТРЫХ ОРТОГОНАЛЬНЫХ ПРЕОБРАЗОВАНИЙ В основе рассматриваемых в этом параграфе методов вычислений лежат теоремы о свертке для преобразований Фурье, Уолша и ТЧП, утверждающие, что спектр свертки равен произведению спектров сворачиваемых последова- тельностей. Поскольку все рассмотренные преобразования обладают аналогич- ными свойствами, то их можно объединить понятием обобщенного преобразо- вания Фурье. Обозначим матрицу этого преобразования Т. Тогда свертка двух векторов 8 = [s (0), s(l), я (TV—1) ] Т ,Н = [ й(0), h (1).h (AM) ]т равна Y = Т’1 (TS-TH) = [у (0), у (1).у (AM) ]Т . (4.7) 76
Таким образом, для получения свертки следует выполнить следующие действия: 1) найти преобразования Фурье (обобщенные спектры) TS и TH исход- ных последовательностей; 2) вычислить поточечное произведение этих последовательностей TS-TH; 3) вычислить обратное преобразование Фурье Т'1 от произведения спект- ров. , Хотя на первый взгляд может показаться, что такой метод вычисления’, свертки довольно сложен, он тем не менее позволяет во многих случаях со- кратить объем вычислений. Это. происходит вследствие того, что для умноже- ния на матрицы Т и Г’ существуют быстрые алгоритмы с числом операций, пропорциональнымi JVlog^7V . Для многих приложений один из векторов (на- пример, В) известен заранее, что позволяет предварительно вычислить произ- ведение TH . В этом случае вычисление свертки заключается в выполнении двух быстрых преобразований и перемножении N чисел. Заметим, что для БПФ и ТЧП это циклические свертки. Если же используется преобразование Адамара, то вычисляется диадная свертка. Как уже отмечалось, недостатками БПФ являются необходимость работы с комплексными числами и шумы округления. ТЧП свободно от этих недо- статков, но имеет свои — деление на модуль и трудность совместной оптими- зации параметров N,anM. Для вычисления линейной свертки двух последовательностей длины и N2 можно также воспользоваться соотношением (4.7), но при этом исходные данные последовательности следует дополнить нулевыми отсчетами так, чтобы и* длина стала равной + N* — 1, и рассматривать как периодические. П р им е р 4.5. Вычислить л инейную свертку последовательностей S = [2, -2,1]?*и Н=Ч1,2| . Так как - 3 и = 2, то - 1 = 4, и следует вычислить циклическую свертку последовательностей 8' = [2, -2,1,0] Т; rf = [1, 2, 0,0]Т. В качестве преобразования возьмем преобразование Фурье длины 4 с матрицей Г1 1 1 1] т = 1 -/ -1 / i-i 1 -1 ’ 1 ' 71 < Прямые преобразования последовательностей раины TS' = [1,1+2, 5, 1-21Г? 11/ = [3,1-2,-1, 1+2 1Г. Их произведение L = TS'«Trf= (3,4,-5,51Г. Обратное преобразование дает значения свертки 77
Y= 4'1r1L= 44(8,8, —12, 8] Г= (2, 2,-3, 2]T. В тех случаях, когда одна последовательность намного длиннее другой, ис- пользуют разбиение длинной последовательности на короткие секции. Затем вычисляются короткие свертки и из них формируется конечный результат. Та- кая ситуация встречается в цифровой фильтрации, когда фильтруемые после- довательности намного длиннее по сравнению с короткой импульсной характе- ристикой. Существует два метода секционирования - метод перекрытия с суммиро- ванием и метод перекрытия с накоплением. Предположим, что более длинной является последовательность {s(n)J . Она разбивается на блоки по Л^отсчетов. Последовательность {h (л)} имеет длину L . Линейная свертка каждого из блоков последовательности £т(л)} с последовательностью £й (л)} имеет раз- мер Л/+ L - 1 и перекрывается со сверткой следующего блока в £-1 отсче- тах. Поэтому на участке перекрытия их отсчеты следует, сложить. Таким обра- зом, на каждые L входных отсчетов вычисляется NtL - ^точечная цикличе- ская свертка и выполняется £—1 сложений. В методе перекрытия с накоплением длинная последовательность^ (л) J разбивается на секции по N отсчетов так, что соседние секции перекрываются в £—1 отсчетах. Последовательность (n)J дополняется нулевыми значения- ми до длины N, и вычисляются циклические свертки каждой секции с допол- ненной последовательностью^/) (л)} . Первые £-1 отсчетов каждой секцион- ной свертки отбрасываются, а остальные присоединяются к оставшимся отсче- там предыдущей секции. Алгоритм перекрытия с накоплением дает N -1 + 1 отсчетов свертки без дополнительного суммирования, поэтому его реализация проще. Если длина блока увеличивается, то общее количество блоков уменьшает- ся. При этом число преобразований становится меньше, но время выполнения каждого преобразования возрастает. С другой стороны, сокращение длины блока потребует большего числа коротких преобразований, поэтому сущест- вует оптимум между длиной блока N и длиной короткой последовательности £ . Оптимальные значения N к L приведены в табл. 4.2. Таблица 4.2 L N L N 11—17 64 311-575 4096 18-29 128 576т1О5О 8192 30-52 256 1051-2000 16384 53-94 512 2001-3800 32768 95-171 1024 3801-7400 65536 172-310 2048 7400 131072 4.4. ВЫЧИСЛЕНИЕ КОРОТКИХ СВЕРТОК И ПРОИЗВЕДЕНИЙ ПОЛИНОМОВ Вычисление сверток с помощью БПФ и ТЧП является одним из наиболее Употребительных и универсальных способов сокращения объема вычислений. ^Однако при использовании БПФ вычисления выполняются с трансцендентны- ми функциями - синусом и косинусом - и в комплексной арифметике. При практической реализации это приводит к ошибкам счета и двухканальному вы- числителю (канал действительной части и канал мнимой части). ТЧП реализу- ется одним каналом, но в силу жестких теоретико-числовых связей между па- раметрами N ,а, М зачастую не удается достичь желаемого эффекта по уско- рению вычислений. Для коротких сверток существуют более эффективные алгоритмы, осно- ванные на специальных способах умножения полиномов. Наряду с самостоя- тельным применением зти алгоритмы можно использовать и для вычисления больших сверток, заменяя их на последовательность коротких. Наиболее важ- ными из этих алгоритмов являются алгоритм Тоома-Кука и алгоритм, осно- ванный на китайской теореме об остатках. Алгоритм Тоома-Кука используется для вычисления линейной свертки (см. § 2.5). В основе алгоритма лежит представление свертки в виде произве- дения двух полиномов y(z) = s(z)h (z) , где h(z) — полином степени £ ; s(n) - полином степени АГ. Значениями свертки являются коэффициенты полинот у (?): у (0), у (1),.... у (N+ £ - 2). Теоретически алгоритм Тоома—Кука требует только АГ+ £ - 2 умноже- ний, однако на практике к ним добавляются еще умножения на фиксирован- ные константы. Для вычисления циклических сверток используется китайская теорема об остатках. 4Л. КИТАЙСКАЯ ТЕОРЕМА 45.1. Полиномы надполем В § 2.4 было введено понятие сравнения для чисел и полиномов, а также указано, что между теорией числовых и полиномиальных сравнений существу- ет тесная связь. Остановимся теперь на этом вопросе более подробно. Арифметические операции над полиномами сводятся к операциям над их коэффициентами, поэтому для получения соответствия между числами и поли- номами операции над коэффициентами должны быть строго определены. Обычно полагают, что коэффициенты полиномов принадлежат некоторому по- лю, а сложение и умножение коэффициентов рассматриваются как операции в поле. Полиномы, удовлетворяющие этим требованиям, называются полинома- ми над полем. Выбор поля коэффициентов существенно влияет на свойства полиномов. Чтобы продемонстрировать это, рассмотрим, например, полином /*(?) = z2 + + г + 1. Если считать, что коэффициенты этого полинома принадлежат двоич- ному полю, состоящему из элементов 0 и 1, то в этом поле полином не имеет корней, так как /(0) = /(1) = 1. Поэтому ои неприводим, т. е. не может быть разложен на множители. В то же время хорошо известно, что в поле комплексных чисел уравнение г2 + г + 1 = 0 имеет два корня z, н ?, и, еле- 78 -7П
довательно, полином раскладывается на множители: /(z) = z* + z + 1 = = (z-z^z-zj. Зависимость свойств полинома от выбора поля коэффициентов позволяет минимизировать вычислительную сложность многих задач цифровой ббработ- ки. Можно доказать, что множества полиномов и операций сложения и умно, жения по модулю полинома P(z) образуют кольцо, которое будет полем, ес- ли P(z) - неприводимый полином. Пример 4.6. Рассмотрим двоичное поле, состоящее из элементов 0 и 1 и операций сложения и умножения по модулю два. Пусть над этим полем задан полином P(z) = z* + + z + 1. Простой проверкой нетрудно убедиться, что этот полином неприводим в поле коэффициентов, так как Р(0) = Р(1) = 1. Все полиномиальные вычеты по модулю этого полинома образуют поле. Его элемен- тами будут полиномы = 0; а9 = 1 + z2; V1’ ej0 = z+z3; a2=z; Oj, = l+z+z2; a3 = z2; flJ2=z + z2+z3; a4 = z3; й13 = 1+z+z2+z3; aj/= 1+?; «I4 = l+z2+z3; fl = z + z2; a,c = 1+zb. % = z2+z3; % = 1+z+z3; В этом расширенном поле операциями будут операции сложения и умножения по мо- дулю полинома P(z). Нетрудно убедиться, что каждый элемоп имеет обратный. Huron- мер,й$ иа являются взаимнообратными,так как (г +z2) (1 +z +z2) = z4 + + 2z3 + 2z + z = z4 + z =z +1 + z =1, Hate СЦ• 4J52. Китайская теорема об остатках , Рассмотрим систему сравнений с различными модулями. Требуется найти целое*, удовлетворяющее одновременно к сравнениям: х = rjinodmp i = 1,2.к. Решение получается на основании теоремы, которая была известна оде в Древ- нем Китае и поэтому получила название китайской. Теорема 4.1. Пусть mf, i =1,2,..., к,- положительные попарно взаим- но простые числа, большие единицы. Тогда система сравнений * = r.modm. имеет единственное по модулю М решение, где М = Пт.. Оно равно /=о ' к х= (М/т^г^тойМ, (4.8) а величины Т{ должны удовлетворять условию
( М/т.) Т.= Imod mj. (4.9) Теорема позволяет восстановить некоторое число х , если известны остатки г{ от деления этого числа на взаимно простые модули т.. Число Г. является Обратным к числу M/mi. Из теоремы Эйлера (3.62) следует, что 7) = s (М/т^ r modm; , поэтому равенство (4.8) можно записать по-иному: х= Е (М/тУ *г.то6М. i-l 1 1 Пример 4.7. Найти число, удовлетворяющее следующей системе сравнений: <х>„ = 2, <х>л- 5, <х>_ = 5, <х>, =6. г о У 11 Построим составной модульМи величины М. = М/т,- М= 7-8-9-11 = 5544; Afj = «=8-9-11 = 792;Ма = 7-9’11 = 693;М3 = 7-8«11 = б1б;М4 = 7-8’9 = 504. Теперь необходимо иайги величины 7) , обратные М, т. е. удовлетворяющие сравнениям (4.9). Число Tt является решением сравипия < 792 > Т} s lmod7. Этому сравнению эквивалентно более простое < 792 >^7 s lmod7, решение которого 7{ = 1. Аналогич- но, рассматривая сравнения <693>_7, s ImodS; О • <616>9Г3 lmod9; <504>иГ4 s 1 modi Г, получаем эквивалентные 5Т2 г lmod8; QT3 э lmod9; 97^3 Imodll. Решения их можно найти простой проверкой (перебором) или по теореме Эйлера. Они равны Т2 = 5,7^ =7, Тл = 5. Для искомого числа получим xs (MjTjT'l +М3г3Г3 + M4r474)modM = = (792-2-1 + 693-5-5 + 616-5-7 + 504-6-5)mod5544 = 149 . В силу рассмотренной аналогии между числами и полиномами китайскую теорему об остатках можно распространить и на кольцо полиномов по модулю полинома P(z). Пусть P(z) есть произведение d взаимно простых полиномов (полино- мов без общих множителей), т. е. P(z.) = П рДг) . i—l Каждый полином h (z) кольца однозначно определяется вычетами h,(z) по 81
модулям Pf(z). Китайская теорема для полиномов позволяет непосредствен- но восстановить h (г ) по его вычетам при помощи следующих формул: d h(z) s X m.(z)A,(z)mod/>(z), (4.10) t=o 1 где j mu(z) = *u • (41 i* u Обратный полином tu (z) должен удовлетворять сравнению Tu(z) П pf(z) = lmodpu(z). (4.12) При использовании китайской теоремы встречаются следующие трудно- сти - определение обратных чисел Т. или полиномов tu(z), удовлетворяю- щих сравнениям (4.9) и (4.12), и вычисление произведения двух полиномов по модулю некоторого третьего полинома. Для числбвых полей и колец обратные элементы можно найти простым пе- ребором или по теореме Эйлера. Другой способ нахождения обратных элемен- тов как для чисел, так и для полиномов даеталгоритм Евклида. 4.5.3. Алгоритм &КЛНДВ Наибольшее положительное целое d , делящее целые числа а и b , называ- ется наибольшим общим делителем (НОД) и обозначается d = (а, 6) . Если d = (а, b) = 1, то а и 6 не имеют общих делителей, отличных от 1, и называ- ются взаимно простыми, НОД можно найти с помощью алгоритма Евклида. Для описания алгоритма положим а ~>Ь . Разделив а на b , получим: .а = ч+го’ 0 < го < ь = V?! + 0 < \ < го« 'о = 'Л + 0 < h < ri> ........ :........................................... (4.13) гп-з = +r«-i ’ 0<A-i < rn-3 • ГП-2 ~ ГП-1^П ' Последний остаток гя _ x и есть НОД. Пример 4.8. Найти НОД чисел 525 и 231. Выполняя вычисления, получаем: 525 = 23)-2 l6i; 231 = 63-3 + 42; 63 = 42-1 + 21; 42 = 21-2’? Так как последний остаток равен 21, то (525,231) = 21. 82
Заметим, что НОД является линейной комбинацией чисел anb. Чтобы это увидеть, перепишем равенства (4.13) так : го = \ = ь - ro^i; ....................................................... (4.14) г . = гя, -г .q , . Первое число г0 является линейной комбинацией а и b ; второе - линей- ной комбинацией Ь и г0 и, следовательно, линейной комбинацией а и Ь и т. д. Поэтому можно записать {a, b)=ka+lb, (4.15) где к , I - целые числа. Это соотношение дает ключ к решению уравнений в це- лых числах. Рассмотрим линейное целочисленное уравнение с коэффициентами а, Ъ , с: ах + by = с, те х,у - целочисленные неизвестные. Уравнения такого вида называются дио- фантовыми. Легко показать, что если с не делится на d = (а, Ь), то диофантово уравне- ние не имеет решения. Поэтому далее будем считать, что Лс(^делитс). Если die .'то с = c^d и из (4.15) следует, что существуют такие к и I , что d = ка + lb , поэтому* с = Cjd = с^ка + с^Л , (4.16) т. е. решениями диофантова уравнения являются х = ct к, у = I. Это реше- ние ие является единственным. Пусть , yQ - частное решение, т. е. с = лх0 + + Ьул . Можно доказать, что общее решение имеет вид: Я “ 4 (fi/d)s ; (417) У = У6 - Wd)s , тде s — целый параметр. Пример 4.9, Найти решение уравнения 15х + 9у = 21. По алгоритму Евклида, 15 = 9*1 + 6; 9 = 6.1 + 3; 6 = 3-2. НОД d = (a, i) = 3. Так как 4|21,то уравнение имеет решение. Представим d в виде лвнейной комбинации 15 и 9 (4.14).: 6 = 15 -9«1; 3 = 9-6.1 = 9- (15 -9-1)1= -15 + 2’9. 83
Получим к = -1,/ = 2,с1 = 7. Это дает частное решение х = -7,у = 14 (4.16). Общее ре- шение (4.17) имеет вид х = -7 + 31 , у — 14 - 51 . Введем понятие непрерывной дроби. Разделив а на b , получим a ro 1 b =«о+Т = <?о+ йДо- Теперь разделим b на г0: = ’*+ “t=<71 Продолжая этот процесс, запишем непрерывную дробь (4.18) Она позволяет построить последовательность приближений к а/b, называемых подходящими дробями: aq at 1 (41,) Эти дроби обиадают следующими свойствами: ))afc = + в*_2;1 к>2) (4.20) ьк “ + bk_2 i J = (-!)*,*> 0; (4.21) 3)(^,^) = 1. (4.22) Тождества (4.20) -(4.22) позволяют упростить вычисления. Например, ис- пользуя (4.21) для последнего шага алгоритма Евклида, получаем . Но ап!Ьп = а/Ь . Если (а, 6) - 1, то ап = а, Ьп — Ь, т. е. (4.23) дает способ ре- шения уравнения ах + by = 1, если положить У = (-04-!' *=(-1)Л+Ч-1- <4-24> Таким образом, алгоритм Евклида позволяет как найти НОД, так и ре- шить диофантово уравнение... Заметим, что поскольку при выводе алгоритма Евклида полагалось я >Ь , 84
то это условие должно выполняться и для коэффициентов диофантова уравне- ния. В противном случае следует переименовать неизвестные хну. Вернемся теперь к задаче нахождения обратных элементов, необходимых для восстановления числа или полинома по китайской теореме. Эта задача сво- дится к решению сравнения вида ах = Imodm . Решением является элемент, обратный элементу а (в кольце или поле). Алгоритм Евклида позволяет найти этот элемент. Чтобы показать это, заметим, что уравнение не изменится, если к его ле- вой части прибавить величину, кратную модулф, т. е. ах + ту = Imodm, тде у - целое. Полученное сравнение эквивалентно диофантовому уравнению, в котором все члены определены по модулю т! < ах > + < ту > = 1. Поскольку с = 1, то из предыдущего следует, что сравнение имеет единст- венное решение. Пример 4.10. Найти решение сравнения 693x s lmod8. Так как < 693 >g = 5, то оно эквивалентно более простому сравнению 5х= lmod8, ко- торое, в свою очередь, эквивалентно диофантовому уравнению 5х + 8у = 1. Запишем непрерывную дробь (см. (4,18)) 8 1 ---1 + - 5--1 1+ —т- что дает п= 3 , ‘ вп-1 1 з Так как а < Ь, то, переименовав переменные с учетом (4.24), получим-. у = (-1)П+,ЬП_1 = 2; * = <-1)4-1 = -з • Решением сравнения будет вычет < -3 >* = < 5 >g. 8S
Пример 4.11. Пусть P(z) = z5 - 1. Можно доказать, что zs -1 = (z - 1) (z4 + z3 + z2 + г + 1). HafaeM обратные полиномы г j (z ) и г2 (г) , такие, что fj (z)(z - 1) 3 lmod(z4 + z3 + z2 + z + 1); (4.25) r2 (z) (z4 + z3 + z2 + z + 1) s lmod(z - 1). (4.26) Эти полжомы являются решениями диофантова уравнения (г-1) (z) + (z4 + z3+ z2 + z + 1) r2 (z)= 1, (4.27) поскольку при выборе в качестве модуля полинома z4+ z3 + z2+z+l уравнение (4.27) эквивалентно сравнению (4.25), а при выборе в качестве модуля полинома (z - 1) урав- нение эквивалентно сравнению (4.26). Запишем разложение в непрерывную дробь z4+z3 + z2+z+l , , 1 -------------------- z3 + 2z2 + 3z + 4 +--. 2-1 1 , - (z - 1) Подходящие дроби (см. (4.19)) равны: flo(Z) 3 1 ------= z3 + 2z +3z + 4; Ао(г) ffI у (z4 + z3 + z2 + Z + 1) t. e. ri = 1и, переименовав переменные в (4.23), получим a0(z)61(z)-6e(z)e1(z) =-1. Отсюда | (г —1) (z3 + 2z2 + 3z + 4) - | (z4 + z’ + z2 + z + 1) = -1, что дает fj(z)= —-|(z3 + 2z2 + 3z+4); ra(z)=l/5. В справедливости сравнений (4.25), (4.26) можно убедиться непосредственной провер- кой. 4.6. ВЫЧИСЛЕНИЕ КОРОТКИХ СВЕРТОК С ПОМОЩЬЮ КИТАЙСКОЙ ТЕОРЕМЫ ОБ ОСТАТКАХ Ранее было показано, что вычисление циклической свертки двух последо- вательностей (s(n)J n{h (n)J длины (V эквивалентно задаче нахождения коэф- фициентов полинома y(z) = s(z)h (z)mod(zjV-1) . (4.28) Полином zN-\ может быть разложен в произведение d неприводамых по- линомов, называемых круговыми или циклотомическими, где d — число делителей?/; к, d zN-l = П рЛг) . (4.29) «= 1 ’ Это позволяет воспользоваться китайской теоремой (4.10), (4.11) и выпол- нить вычисления следующим образом: 1) полиномы z(z) нй (z) приводятся по модулю полиномов рДх),/« 1, 2, d, т. е. находятся вычеты s^z) = s(z)modpjz; й(.(г)= A(z)modp((z); 2) вычисляются d произведений sJ(z)ft((z); 3) по этим произведениям с помощью китайской теоремы восстанавлива- ется у (г) . Здесь следует отметить одно очень важное обстоятельство. Поскольку, как было показано выше, разложение полинома на множители зависит от по* ля, из которого берутся коэффициенты, то, очевидно, н сложность алгоритма будет зависеть от поля коэффициентов. Например, полином p(z) = г - 1 имеет следующие разложения : над полем комплексных чисел 4 2я p(z) = П (z-W1), W= exp (-/—-); i=o 5 над полем действительных чисел p(z) = (z ~ 1) (z2 + 2cos-y-z + 1) (z2 +2cos-^-z + 1); над полем рациональных чисел p(z) = (z - 1) (z4 + z3+z2+z + 1). Отсюда следует, что над полем комплексных чисел задача (4.28) разбива- ется на пятьподзадач, над полем действительных чисел - на три подзадачи, а над полем рациональных чисел - на две подзадачи. Каждая подзадача решается путем арифметических операций над коэффициентами полиномов s.(z) нй(.(г). Поэтому для упрощения алгоритма поле коэффициентов следует выбирать так, чтобы операции в нем были просты в реализации. Неизвестны какие-либо универсальные способы такого выбора, ио показано, что для небольших зна- чений^ использование поля рациональных чисел приводит к алгоритмам с ми- нимальной сложностью. Это связано с тем, что в поле рациональных чисел кру- говые полиномы с небольшим значением индекса имеют очень простые коэф- фициенты: 0; 1; -1, 86 87
Для поля рациональных чисел разложение (4.29) записывается z*-l = ^Crf(z) . (4.30) Здесь произведение берется по всем делителям числа /V. Например, eainN= 6, то его делителями будут числа 1, 2, 3, 6 , поэтому (4.30) запишется так: z‘-l = C/z)C2(z)C3(z)C4(z). Коэффициенты 0; 1; -1 имеют все круговые полиномы с индексом, меньшим 105. Первые десять полиномов имеют вид: q(z) = z-i; c2(z) = z+ 1; Cs(z) = z2 + z + 1; C4(z) = z2 + 1; C5(z) = z4+z3+z2+z + l; (4.31) C4(z) = z2~z + l; C(z) = z*+z5+z4+z3+z2+z + 1; C,(z) =z4 + l; C,(z) = z* +z3 + 1; C10(z) = z4-z3+z2 ~z + 1. Вернемся теперь к вычислению свертки при помощи китайской теоремы. Процедуру синтеза алгоритма рассмотрим на примере. Пример 4.12. Синтезировать алгоритм трехточечной циклической свертки. Дли трехточечной свертки y(z) = s(z)h (z)modz3 + 1. Разложение z3 -1 на множители с учетом (4.31) имеет вид z3 -1 = Cj (z)C3 (z) = (z - 1) (z2 + z + 1). Используя алгоритм Евклида, найдем обратные полиномы, удовлетворяющие сравне- ниям: q (z)s 1 mod(z2 + z +1); rjJKjW3 lmod(z -1). Они равны Tj (z) = — A (z + 2) , t2 (z) = 1/3. Первый этап синтеза дает: »j(z)= »(z)modC1(z)= z(0) + z(l) + z(2) = ; s, (z)®z(z)modC.(z)= 0(0) + »(1) z + z(2) z2)modC,(z) = 2 3
= s(0) + s(l)z + s (2) (—z—1) = (3(0) -s(2)) + (s(D -H2))z = a2z + a3, где at = s(0) + j(1) + з(2); a2 = f(l) -t(2); «3 = 3(0) -з(2) , Аналопцно получим Л,(г) = b\ , ft2(z)=* b’2z+ b’3> me b'' = h(,0) + ft(l) + й(2); ft’ = ft(0) - ft (2), ft’ = ft(l) - ft (2) . I 2 4 На втором этапе получим: У, (С = *1(z)ft1(z)modC1(i)= ejft’, ; У2(г) = (a2z + a^(b2z+ fr3)modC3(z) = = (a2b2z3 + (a36‘ * atb3)z + «jftpmodCj (z) = = a2b'2z -a2b‘2 + (e3ft2 +o2&3)? + с3&з = = («Х * в2*3 -e2fc2)Z+ a3b3 -<X • Для вычисления y2 (z) требуется одна операция умножения, ау2 (z) — четыре. Суще- ствует лучший алгоритм для вычисления. Он требует только, трех операций умножения. Положим Д1 = о2й3 ',Ц2 = ; Д3 - («3 - «2) (Ь*3 - *2)• Тогда у2 (z) = (p2-g^z + ♦ (Д2 - ДР = * V» w /j = д2 -д3; 10 = д2 -д,. На третьем этапе запишем y(z) = (€3(2)7^)^)+C1(z)y2(z)r1(z))modz3-1 = 1 , , 1 3 (— о, b, (z2 +z + 1) - - (/,z + M(z - 1) (z - 2)) modz3 - 1 = 3 1 1 J I (Г = 1(^1^ _A-/0)z2 Л -/o+2fl)z («X+2/o-'P- Объединяя все соотношения, получим следующий алгоритм: Oj=z(0) +»(!)+ z(2); b, = -(ft(0) +ft(l) +ft(2)); 1 3 «2 = »(О -s(2); Ь2 = -|(Л(0) -ft (2)); a’ с3= з(0) -з(2); ft3= -(*(1) -ft(2)); ь4«ь3-*2;. «О = в1\’ Д1 = о2Ь2; Д2 = «з*з Дз = (в3- в2)Ь4; I =М2-ДЗ! 'о = -14’ у(0) = д0+2'0-4; Я1) =Ио-'о+2,1’ У (2) =n0-lt-l2.
Рис. 4.2. Граф вычисления трехточечгой циклической свертки. Как уже указывалось, в реальных приложжштх одна из последовательностей ({h (n) J- ) известна и, следовательно, вычисления с переменными h (п) могут быть вы- полнены заранее, что позволяет не учитывать их в подсчете вычислительной сложности алгоритма. Процедура вычислен!* для такого случая показана в виде графа на рис. 4.2. Алгоритм требует 4 операции умножения и 12 операций сложения (уьножения на числа 2 Не учитываются). Алгоритм можно также описать в матричной форме: Y=C(BH»AS), (4.32) где знак * обозначает поточечное произведение векторов, а матрицы А, В, С равны: А = ‘1 1 1 ‘ 1 0 -1 0 1-1 1 -1 0 ев II £ ы П II '1 1 -1 Г 111-2 1-211 Т Уьшож^яие вектора S = |г(0), »(1), /(2)) на матрицу А дает вектор (л, , аг , е3^я2],'. Аналогично вычисляется заранее произведение ВН — , Ъг , &41 . Их поточечное произведение дает вектор [ц0 , Заключительная фаза соот- ветствует умножению этого вектора на матрицу С . Выражение (4.32) является обще* формой алгоритмов вычисления свертки с помопвю китайской теоремы. Алгоритм (4.32) когда удается упростить, воспользовавшись щлищшюм дуально- сти. В. частности, можно доказать, что. если существует алгоритм (4.32), то существует и дуальны* алгоритм Yr = (АЯ) Г( ВВГ« (Сг) 1 , (4.33) тде верхний дедекс г обозначает перестановку всех строк матрицы, кроме первой, в об- ратном порядке, а всрхтш* шдекс R - иклпопгжук перестановку столбцов. Подставляя в (4.33) соответствующие матрицы, получаем: У(0)" У (2) У(1) ~1 1 0 11 / '1 1 1 ’г(0)1 "1 1 11 Л (0)’ 1-1 -1 0 1 0-1 » (2) • 1 1 -2 1 л <2) 1 0 1 -1 0 1-1 »(1) 3 -2 1 1 Ml) 1 L -1 0 1 1 -2 _ — 90
Граф вычислительного процесс* для этого алгоритма показан на рис. 4.3. При этом величьмы mQ , , «4 , находятся из следующих равенств: ио = (Л(0) + Л(1)+Л(2))/3; т, = (Л(0) + Л(1) -2Л(2))/3; т2 = (-2Л (0) + Л (1) + й (2))/3; т3 = (Л(0)-2й(1) + й(2))/3. На вычисление свертки затрачивается 4 операции умножали и И операций сложения. Для коротких сверток N < 9 по приведенной методике смггеаированы алгоритмы с микималыгой сложностью. Описание и структура этих алгоритмов приведши в (10,11]. 4.7. ВЫЧИСЛЕНИЕ ДЛИННЫХ СВЕРТОК С ПОМОЩЬЮ ВЛОЖЕНИЯ КОРОТКИХ (ГНЕЗДОВОЙ АЛГОРИТМ) Для больших сверток алгоритмы, описанные в предыдущем параграфе, становятся громоздкими и малоэффективными. Однако, если АГ-составное число, то матрицу свертки путем перестановки строк и столбцов можно пре- образовать в блочную матрицу, каждый блок которой является матрицей цик- лической свертки меньшего размера, а сами блоки также образуют блочную матрицу циклической свертки. В результате такого преобразования вычисле- ние длинной свертки можно свести к вычислению серии коротких сверток. Для того чтобы результат от перестановки ие изменился, следует аналогичным образом переставить входные и выходные отсчеты. Основой для преобразования матрицы является китайская теорема. Пусть N= NtN2 - составное число, гдеN и N2 взаимно простые, т. е. (АГ,, N2) = 1. Любое число ы из интервада 0,1,2,.... N-1 можно записать в виде (и4 , л2), где «j = < N >jjf ,n2=<N>N . Вычет и4 можно рассматривать как пер- вую координату числа N, а вычет п2 -как вторую. Если строки, исходной матрицы упорядочить по первой координате, а столбцы по второй, то получим описанную блочно-циклическую структуру. Процедура разбиения может быть повторена рекурсивно для сомножителей А^ и N2 , если они, в свою очередь, также разбиваются на взаимно простые сомножители. Пример '4.13. Рассмотрим вычислят шеститочсиой свертки. Представим чис- ло IV как 6 =2-3. Тогда получим следующее взаиаого одяозшыое отображение: 0-*(0,0), 1-»(1,1), 2— (0, 2), 3(1,0),4-*(0,1), 5-*(1, 2).Матриыая запись исход- ной свертки имеет вид 91
у(0) л (0) Л (1) ft (2) h (3) ft (4) h (5) 2(0) У(1) Л (1) * (2) h (3) h (4) h (5) ft (0) 2(5) У (2) Л (2) ft (3) Л (4) Л (5) Л(0) ft (1) 2(4) у(3) Л(3) Л (4) ft (5) Л (0) Л(1) Л (2) 2(3) У(4) Л (4) Л (5) h (0) ft (1) Л (2) Л (3) 2(2) У (5) Л (5) Л (0) Л (1) Л (2) Л (3) Л (4) 2(1) Переставим строки и столбцы в следующем порядке: первыми ставятся те, у кото- рых иервая координата равна 0, а вторая - в возрастающем порядке, затем те, у которых первая координата равна 1 и вторая в возрастающем порядке, и т. д. В результате полу- чим порядок следования строк и столбцов: 0, 4, 2, 3, 1, 5 и блочно-циклическую струк- туру: 'у(О) "Л (0) Л (4) ft(2) f ft (3) ft (1) Л (5)” 2(0) У (4) h (4) Л (2) h (0) ' ft (1) ft (5) Л (3). 2(2) У<2) Л (2) ft (0) ft (4) • Л (5) Л (3) ft (1) 2(4) У(3) 1 “ - — Л (3) ft (1) Л (5) | Л (0) ft (4) ft (2) 2(3) У(1) Л (1) Л (5) Л (3) f Л (4) Л (2) Л (0) 2(5) У (5) h (5) Л (3) Л (1) 1 Л (2) Л (0) ft (4) 2(1) Обозначив Yo = О'(0), у (4), у (2) JТ, Y, = [У(3),у(1),у(5)]Г, * т So = 1»(0),»(2), »(4) Г, S = (2(3), а(5),2(1)]Г, Л (0) ft (4) Л (2) л (3) ft (1) ft (5) Л (4) ft (2) Л (0) ft(l) ft (5) ft (3) ft (2) ft (0) Л (4) ft (5) ft (3) ft (1) запишем преобразованную матрицу в более компактном виде: Вычисление этого выражения эквивалентно вычислению получим: Yi* + Y0 = <Hlz+^>)(S1z + S0)mod(z1-l). Наложение модуля иа круговые многочлены равно: а1 - 1 = (2-1) (2 + 1). Используя с№еэ на основе китайской теоремы (задача 4.16), получим MI = O,5(Ho + HI)(So + SI), *(,= 0,5(Ho-HI)(Stf-,SI); Так как и М2 являются трехточечными свертками, то их вычисление можно вы- Котить при помоши алгоритма, привеллиого в примере 4.12. На вычисление и за- (рачиваегся 8 операций умгожения и 22 операции сложения (умгожения иа 1/2 ие учиты- ваются). Еще 3-4= 12 сложений требуется на вычисление векторов So ± St, М^М,. ф итоге получим 8 операций умножения и 34 операции сложения. Можно было бы разложить число 6 как 6 =3'2, что привело бы к трехточечной свертке блоков 2 X 2. В этом случае алгоритм потребует 8 операций умножений и 38 опе- раций сложений. В общем случае сложность алгоритма подсчитывается следующим обра- зом. Пусть и М2 - количество умножений в алгоритмах вычисления Nt и jV -точечной сверток соответственно. Аналогично A v кА2 — количество сложе- ний. Тогда, если (А^ , N2) = 1, то N^N2 - точечная свертка, и вычисляется она за М = М1М2 операций умножения и А операций сложения. Меняя роляьм N и N2 , получаем, что та же свертка вычисляется за A2Ni+M2A1 сложений. Предпочтение отдается тому способу, в котором число сложений меньше. Если N разлагается в произведение более чем двух взаимно простых со- множителей NN ... N. , то выражения для сложности запишутся так: М = = М,И, ... м„-, Л - ... -Ч<-.Аг В формуле для числа операций сложений в каждом последующем слагае- мом количество букв увеличивается на единицу по сравнению с предыду- щим, вследствие чего число операций сложения А гораздо сильнее зависит от числа операций умножения , чем от числа сложений А . Поэтому для боль- ших сверток наиболее выгодны алгоритмы, вычисляющие короткие свертки с малым числом умножений, даже если это уменьшение достигается за счет увеличения числа сложений. В табл. 4.3 приведено число арифметических операций на один отсчет сиг- нала для описанных алгоритмов. Таблица 4.3 Таблица 4.4 N M/N A/N N M/N A/N 18 2,11 10,22 16 2,75 10,75 30 . 2,67 13,93 32 . 3,62 14,75 60 3,33 18,67 64 4,56 18,75 120 4,67 25,80 128 5,53 22,75 210 6,10 37,90 256 6,52 26,75 • 504 7,24 52,19 512 7,51 30,75 1008 . 9,95 70,70 1024 8,50 34,75 2048 9,50 38,75 fl табл. 4.4 приведены для сравнения те же величины при вычислении свертки по алгоритму двукратного БПФ. При этом предполагается, что для вычисления БПФ действительной последовательности длины N используется БПФ размера N/2 с комплексными входными данными, а комплексные умно- 93
жения выполняются тремя вещественными умножениями и тремя веществен- ными сложениями. Сравнивая табл. 4.3 и 4.4, можно заметить, что гнездовой алгоритм лучше алгоритма, основанного на БПФ, для коротких и средних сверток длцной, меньшей 200-220. Преимущество гнездового алгоритма состоит в том, что он ие использует тригонометрических функций и вещественные свертки исполь- зуют вещественную, а не комплексную арифметику. В то же время метод, основанный на БПФ, проще в программировании и дозволяет при помощи од- ной стандартной программы вычислить свертку для различных значений N. 4.8. МУЛЬТИПЛИКАТИВНАЯ СЛОЖНОСТЬ ВЫЧИСЛЕНИЯ СВЕРТКИ При синтезе алгоритмов с малой вычислительной сложностью желательно знать нижние предельные значения этой величины, что дозволяет судить о каче- стве алгоритма и возможностях его улучшения. Рассмотрим вопрос о нижних границах применительно к операциям умножения. Т е о р е м а 4.2. Линейная свертка двух последовательностей длины N может быть вычислена за 2N -1 умножений. Доказательство теоремы основано на алгоритме Тоома-Кука. Значения- ми линейной свертки являются коэффициенты полинома y(z) = z(z)ft(z) степени. 2N - 2. По алгоритму Тоома-Кука выбираются 2N- 1 точек интер- поляции zf и находятся 27V- 1 произведений: у (z;.) = s(z^i(z^ , i = 0,1,2,.... 2N-2 . (4.34) Для построения полинома у (z) используются произведения (4.34) и ин- терполяционная формула Лагранжа. Если вычисление s(z.), h(z.) и интерпо- ляция не требуют умножений, то для вычисления свертки используются толь- ко 2N - 1 умножений вида (4.34). Рассмотрим теперь циклическую свертку. Теорема 4.3. Минимальное число умножений, необходимое для вычис- ления циклической свертки длины N, равно 2W - £ , где £ - число делите- лей jV, включая 1 и N. В доказательстве теоремы ишользуется алгоритм вычисления свертки до китайской теореме, а именно: вычисляется полином y(z) = s(z)h (z)mod(zJV - 1). Для этого полином z^-l раскладывается в произведение круговых полино- мов, число которых равно к . Если d. - делитель числа N, то соответствую- щий этому делителю круговой полином Cd имеет степень , а сумма степе- ней всех круговых полиномов равна N. ){ля вычисления свертки по китай- ской теореме необходимо вычислить .У/О) в »Z(*MZ(* ) modC^(z) , j = 1,2,..., к. (4.35) 94
По теореме 4.2 каждое произведение типа (4.35) можно вычислить за 2п. - 1 умножений. Суммируя по всем/ , получаем к S (2n,-l) = 2N-k. /=1 ‘ Сравним границу теоремы 4.3. с реальными значениями числа умножений дЛя минимальных алгоритмов, описанных в [ 10] . Сравнение дается в табл.4.5. Таблица 4.5 N к 2Л<-А Число операций умножения сложения 2 2 2 2 4 3 2 4 4 11 4 3 5 5 15 5 2 8 10 31 6 4 8 8 34 7 2 12 16 .70 8 4 12 14 46 9 3 15 19 81 Из табл. 45 видно, что д ля сверток малой д лины граница мультипликатив- ной сложности достигается, и, следовательно, улучшение алгоритмов возмож- но только за счет сокращения числа операций сложения. Можно доказать [ 10,11] , что все алгоритмы с минимальной мультипли- кативной сложностью имеют структуру вида (4.32), (4.33), т. е. Y = С (ВН • AS) , Рис. 4.4. Общая форма алгоритма вычисления свертки. 95
a 2N- 1 умножений являются поточечными умножениями векторов ВН и AS. Общий вид алгоритма показан на рис. 4.4. Заметим, что вычисление цикличе* ской свертки с помощью ДПФ - частный случай структуры, изображенной на рис. 4.4, когда преобразования В и А есть ДПФ, а С — ОДПФ. При этом в каче- стве поля коэффициентов выбрано поле комплексных чисел, в котором поли- ном z" - 1 раскладывается на N круговых полиномов: zN-\ = П (z-И"). f=O Поэтому к = N и N умножения являются не чем иным, как поточечными умножениями двух ДПФ. Ни одно из умножений в поле коэффициентов (умножения на поворачивающие множители) не учитывается. 45. АЛГОРИТМ ВИНОГРАДА ПРЕОБРАЗОВАНИЯ ФУРЬЕ 4.9.1. Гнездовой алгоритм Рассмотренные методы вычисления сверток с помощью китайской теоре- мы и гнездового алгоритма, кроме самостоятельного значения, играют важ- ную роль-в построении алгоритма вычисления ДПФ, получившего название ал- горитма Винограда. Этот алгоритм сокращает число умножений по сравнению с обычным методом БПФ в 2—3 раза при незначительном увеличении числа сложений. Он особенно удобен для вычисления ДПФ вещественных последова- тельностей. В этом случае большинство сложений и все умножения веществен- ные, что не только повышает скорость обработки, но и экономит память. В основе алгоритма Винограда лежат две основные идеи - замена длинного преобразования серией коротких путем построения гнездового алго- ритма, аналогичного алгоритму вычисления сверток, и вычисление коротких преобразований путем сведения их к циклическим сверткам. Для построения гнездового алгоритма БПФ опять вернемся к китайской теореме и вспомним, что любое число может быть записано с помощью остат- ков от деления на взаимно простые модули , М2 ,в виде г2 г2 ,..., гг Такую запись можно рассматривать как представление числа в некоторой сис- теме счисления по нескольким основаниям М1 , М2 ,..., Mj. Она называется китайской. Заметим, что в отличие от обычных сисГем с одним основанием (двожной, десятичной и т. д.) китайская система является непозиционной. Если два числа Л = (а{ ,а2.а}),В= ,7>3 ,..., Ь;) записаны в китай- ской системе, то для суммы и произведения этих чисел справедливы равен- ства: А + В = (<в1 , .<аг +Ь2 >Мз.... <а/ + 6/ >МУ, (4.37) ЛД = (<а1Ь1 >м^ , <а2Ьг <агЬг >^) , т. е. операции над числами сводятся к операциям над отдельными разрядами по соответствующим модулям. Арифметика такого рода называется модуляр- ной. Вернемся теперь к преобразованию Фурье длины N = /(k ) = S s(n)V*n ; к = 0,1,..., ЛГ-1. п= о Запишем показатель кп в китайской системе счисления, воспользовавшись ра- венствами (4.37): «,)) = (<*!«, <*2И2 >Нг>- Переход к обычному представлению осуществляется на основании выражения (4.8): N N кп =(лг1 < кЛ \ + nt* < кл \)mody’ поэтому ff N ff N ri<*t"l>J''l+~ <*2B2>^ /(k) =/(*!>*,)= s s(n.,«2)V 1 2 1 2 («рв2)=о 1 2 Поскольку функция Wl периодична с периодом N, то приведение по мо- дулю в показателе не требуется. Обозначим AT, 2п N 2я И'»»*' 2 = exp W =W l=exp(—/ —). Тогда N T, <k,n,>w ?V /(kj.k )= S т(л Я)Ц/, 1 1 1 2 . (n1,»1) = 0 1 2 2 Функции H'j и Wl2 периодичны с периодамииN2 соответственно. Поэто- му вычеты в показателях можно заменить самими числами, т. е. < kin]>=k1 и<к2и2 = к2 и2 . После этого получим ЛГ,-т _ , ff.-i „ , 2 Т^к.п. 1 - Т.к,п, /$гк2)= S В* 2 2 2 s 1 1 = «2=о «1=о 12 (4.38) 1 т.к .В.^2"4 ^2*2П2 = S W. 1 1 ’ Б s(n,, n)W2 2 2 . . nj=O «2=0 ’ Это простое двухмерное преобразование Фурье, в котором вместо , W* сле- г т. щжтпкжа Wj и W2 соответственно. , Таким образом, гнездовой алгоритм сводит вычисление одномерного пре- образования к вычислению двухмерного, если строки и столбцы матрицы пре- образования и исходных данных переставить по китайской системе счисления. т т Замену Wt mW «WimW2l можно и ие делать, если ввести различные 96 97
перестановки для строк и столбцов матрицы преобразования. Сохраним преж- ний (китайский) порядок следования столбцов, а для нумерации строк вве- дем новые переменные: < = ГЛ; к\ =Тгк2 • (4-39) Тогда JV2-l t'n ЛГ1-1 к"п S V/2 2 *(», *"2)^ *"* = 1 * «2=о «1=0 = S IV*1"1 S sCn.nJVj1"1 . (4.40) Hj=O n2 = 0 Это обычное двухмерное ДПФ. Его вычисление происходит в три этапа: 1) производится перестановка строк и столбцов матрицы преобразования и отсчетов последовательности (s(«)J в соответствии с китайской теоремой и равенствами (4.39); 2) выполняется внутреннее преобразование, соответствующее внутренней сумме выражений (4.38), (4.40); 3) результаты внутреннего преобразования рассматриваются как векто- ры, над которыми выполняется внециее преобразование, соответствующее внешней сумме выражений (4.38), (4.40). Ясно, что если и АГ в свою очередь также раскладываются в произве- дение взаимно простых сомножителей, то дробление на малоточечные преоб- разования можно продолжить, увеличив при этом число измерений. Пример 4.14. Пусть # = = 3*4. Отображвше в китайскую систему счисле- ния имеет ввд: О — (0,0); 1 - (1,1); 2- (2,2); 3 - (0,3) ; 4- (1,0); 4-(2,1); 6-(ОД); 7-(13); 8-(2,0); 9-(0,1); 10- (1,2); И - (2,3) , (441) Выражение V( х V2 называется прямым или кронекеровым произведением. Таким образом, для получения ДПФ сначала вычисляются три четырехточе’ыых ДПФ: fo = Vo • «в-W f2=v2s, затем тройка [ f2 ] преобразуется ири помощи трехточечного Д ПФ: w; W* 1Де W» « (. IV,, , и; ]. что дает следующее размещение столбцов исходной матрицы и отсчетов последовательно- сти (тОО) : 0,9,6,3,4,1,10,7,8,5,2,11. Обратные элементы для чисел Л^/Л^ = 4 и NlN2 - 3 равны: = 1, 7^ = 3, что дает к'х = к, к’2 = 3*2 mod4 со следующим порядком следования строк: 0, 3,6,9,4, 7,10, 1, 8,11,2,5. Возможен и другой вариант. (Начала вычисляются четыре трехточечных преобразова- ния, а затем векторное четырехточечное. 492. Вышсление коротких преобразований Обозначим S(0) = »(0)“ »(9) »(б) _,(3L ; St = з(4) з(1) »(Ю) з(7)_ ; S2 = з(8) *(5) »(2) 3(11)_ для входных отся егови 7(0)~ “/44)“ 7(8) ~ F = Г(3) Г(7) Г(В о /(6) /(9) — * i 7(10) Г(1) ’ 2 /(2) /(5) Короткие ДПФ путем перестановок строк и столбцов можно свести к цик- лическим сверткам, после чего воспользоваться алгоритмами для вычисления коротких сверток из § 4.6. Пример 4.15.Пусть )V= 5.Матрща ДПФимеет вид W° В*0 V0 (У0 V0 jp° jpJ w3 ^4 IV0 W* W4 V1 W3 . IV0 B*3 V1 W4 W2 V4 w3 w2 wl Переставим строки и столбцы по закону оо 98
(° 1 2 3 4 ), \ 0 2 4 3 1 /’ т. е. нулевая-строка (столбец) остается на месте, на первое место ставится вторая строка и г. д. Чтобы результат умножения не изменился, в таком же порядке следует переста- вить отсчеты исходного вектора и спектральные коэффициенты. Тогда получим ~/(0) W0 »(0) Л2) W4 w3 V1 w2 s(2) У(4) W° Ilf w1 w2 w4 s(4) /О) w° в*1 w2 w4 w3 »(3) У(1) W2 w4 w3 wl s(l) Отсюда ввдно, что 4 /(0) = S *(и) , »=о а вычисление остальных коэффициентов сводится к вычислению свертки частности, можно показать, что при использовании сверточных полиномиальных алгорит- мов (см. § 4.6) все умножения либо чисто действительные, либо чисто; мнимые. Это дает существенное сокращение числа умножений. С учетом указанных упрощений построены [10,1]] оптимальные алгорит- мы для вычисления малоточечных ДПФ для ЛГ= 2,3,4,5,7,8,9,16. Характе- ристики алгоритмов приведены в табл. 4.6. Таблица 4.6 N Число операций умножения умножения на И'0 сложения 2 0 2 2 3 2 1 6 4 0 4 8 5 5 1 17 7 8 1 36 8 2 6 26 9 10 1 45 16 10 8 74 (4.42) Гнездование этих алгоритмов позволяет вычислить ДПФ длинных после- довательностей. 4.9.3. Эффективность и общая структура алгоритма Вдаограда Пусть N = NN2 ... , где (ЛГ , = 1. Вычисление ДПФ сводится к вы- числению малоточечных преобразований размеров N:, i - 1,2, ...,d. Предпо- ложим, что на получение малоточечного преобразования размером затрачи- вается М. комплексных умножений иЛ. комплексных сложений. Тогда об- щее число умножений и сложений равно соответственно М = М,М, ...М. ; 12а’ л = A-N2 ...Nd + MxA2N2 ... Nd 4-... + М1Мз ... Md_, Ad. , Заметим, что число сложений зависит от порядка выполнения операций. Например, для N- N^N2 возможны два варианта с числом сложений Д'Аг + + M2At и ATjAj +MtA2 . Выражения (4.42) позволяют определить суммарное число комплексных умножений и сложений, в предположении, что входные данные комплексные. Однако если короткие ДПФ вычисляются по оптимальным алгоритмам, то комплексные умножения сводятся к умножению числа на вещественное или чисто мнимое число и выполняются посредством да ух вещественных умноже- ний. Кроме того, часть из них тривиальна (умножения на ±1, ±/ ). Рассмотрим теперь общую структуру алгоритмов Винограда. Для двух сомножителей было получено выражение (4.41). Запишем его в более общем и компактном виде: F = (Y1XV1)S, (4.43) где S - вектор отсчетов сигнала; V2 ,V2 - матрицы ДПФ. Путем перестановки строк и столбцов матриц и V2 можно преобра- зовать к матрицам циклических сверток. Обозначим последние и Г>2 . Тог- да, пренебрегая порядком следования входных и выходных отсчетов, для (4.43) получаем F=(D1xD2)S. (4.44) Для вычисления сверток используем алгоритм (4.36): Y = C(BH»AX), (4.45) где X - входной сигнал свертки. Выражение (4.45) можно записать и в дру- гом виде, заменив поточечное произведение векторов ВН и АХ умножением вектора AS на диагональную матрицу L , по главной диагонали которой запи- саны элементы вектора ВН: Y = CLAX. ~ . Отсюда следует, что матрица свертки D может быть представлена в виде 100
Рис. 4.5. Общая структура ал- горитма Винограда. D = CLA . (4.46) Подставив (4.46) в (4.44), получим F=((C1L1A1) x(C2L2A2))S. Используя свойства кронекерова произведения, преобразуем последнее выра- жение к виду F = (С, X С2 XL, X Ц Х’А, X A2)S = CLAS . (4.47) Проделанные действия можно повторить для произвольного числа сомно- жителей, поэтому выражение (4.47) дает общую структуру алгоритма Вино* града, совпадающую со структурой сверточного преобразования. В частности, из (4.47) следует, что для вычисления ДПФ алгоритмом Винограда следует выполнить сложения исходных данных по правилам, задаваемым матрицей X , затем полученный вектор поточечно умножить на диагоюльные элементы матрицы L . Результаты этого умножения следует сложить по правилам, зада- ваемым матрицей С . Структура алгоритма Винограда показана на рис. 4.5. По* рядок матрицы L може! быть больше величины N, что отражено на рисунке соответствующим увеличением размера средней части преобразования. Если порядок L равен N, то алгоритм дает минимальное число умножений. Такие алгоритмы, как видно из табл. 4.6, известны для N= 2,3,4,8. КОНТРОЛЬНЫЕ ВОПРОСЫ И ЗАДАЧИ 4.1. В чем разница между лшеФюй и циклической свертками? Приведите примеры использования этих понятий в технических приложениях. 42. Как осуществляетсяприведеяие по модулю полинома z —1? 43. Чем отличаются линейный и диадный сдвиги функции? 4 А. Ъычиспяк корреляционную функцию последовательности (1, -1,1,1) за 8 опе- раций сложений (вычитания). 43. Можно ли вычислить линейную свертку с помощью преобразования Адамара? 44. Какой размер должно иметь преобразование Фурье для вычисления апериодиче- ской корреляционной функции двух последовательностей длины 5 и 7? 4.7. В чем преимущества вычисления свертки с помощью ортогональных преобразо- ваний? ‘ 44. Сопоставьте преимущества и недостатки известных Вам ортогональных преобра- зований с точки зрения использования их для вычитания сверток. 4.9. Найдите НОД чисел 65 и 104, используя алгоритм Евклида. 102
4.10. Решите диофантово уравнение 65х + 104_у = 143. 4.11. В чем преимущества полжомиального описания свертки? 4.12. С помощью китайской теоремы восстановите число по его остаткам r^SmodS. r2 = 7mod9, r3 = 5tnodll. ° 4.13. В чем заключаются трудности использования китайской теоремы для вычисле- ния длмшых сверток? 4.14. В чем состоит сущность гнездовых алгоритмов? Как они связаны с многомер- ными преобразованиями? 4.15. Запишите числа 121 и 135 в китайской системе счисления с основаниями 8,9, 11. 4.16. Сштеэнруйте алгоритм четырехточечной свертки с помощью китайской теоре- мы. 4.17. Сиггезируйте алгоритм Винограда для вычисления ДПФ длины 6 . 4.18. Проведите аналогию между ДПФ и вычислением полинома в точках.
5. РЕАЛИЗАЦИЯ БЫСТРЫХ АЛГОРИТМОВ ЦИФРОВОЙ ОБРАБОТКИ В РАДИОТЕХНИЧЕСКИХ СИСТЕМАХ 5.1. СТРУКТУРА СИСТЕМЫ И РЕАЛИЗАЦИЯ АЛГОРИТМА Микропроцессорная система обработки сигналов может быть реализована различными способами. Наиболее простой в конструктивном отношении явля- ется однопроцессорная система (рис. 5.1). Она содержит центральный процес- сор, выполняющий арифметические и логические операции, память, устройст- во ввода-вывода и блок управления. Работа однопроцессорной системы заклю- чается в последовательном выполнении определенных операций над данными, хранящимися в памяти или поступающими по каналу ввода-вывода. Команды, управляющие ходом вычислительного процесса, хранятся в памяти и расшиф- ровываются блоком управления, который координирует работу всех узлов системы. Независимо от конкретного назначения общим принципом описанной структуры является принцип последовательного выполнения отдельных ко- манд, поэтому такие устройства называются последовательными. При их ис- пользовании алгоритм представляется в виде цепочки отдельных операций и проектировщику следует в первую очередь заботиться о минимизации числа таких операций и требуемого объема памяти. Скорость обработки определяет- ся этими факторами и быстродействием элементной базы. Очевидно, что коли- чество операций при решении любой задачи не может (быть меньше некоторой константы, а возможности увеличения скорости переключения логических эле- ментов ограничены существующим уровнем технологии. Поэтому классиче- ская однопроцессорная структура во многих случаях ие обеспечивает требуе- мой вычислительной мощности. Скорость обработки информации можно повысить, если выполнять трудо- Рис. 5.1- Однопроцессорная система. емкие операции отдельными специализированными процессорами или приме- нять для решения задачи несколько процессоров, объединив их в единую систе- му каналами связи. Системы такого рода называются мультипроцессорными. Увеличение вычислительной мощности при использовании мультипроцессор- ной системы произойдет, однако, лишь в случае, если все процессоры или, большая их' часть будут постоянно загружены. Структура такого рода называ- ется параллельной. При такой структуре алгоритм решения задачи разбивается на ряд независимых частей, которые можно выполнять одновременно. Таким образом, необходимо довольно жесткое согласование численных методов с ап- паратными средствами. В противном случае требуемая эффективность может быть не достигнута. Для реализации в параллельной вычислительной структуре алгоритм пред- ставляется в виде последовательности групп операций с независимыми опера- циями в каждой. Такая форма представления называется параллельной фор мой алгоритма. Каждая груши операций называется ярусом, число групп - высотой, а максимальное число операций в ярусе - шириной параллельной формы. Например, пусть требуется вычислить выражение + х3х4) (xsxt + х,х8) . В параллельной форме алгоритм вычисления этого выражения можно запи- сать так: данные :х , xr ху х4, х$, х6, х7, х8; ярус 1: XjXj, х3х4, х$х6, x7xg; ярус2: xtx2 +x3x4,xsx6 + х7х8; ярус3: (х,х2 + х3х4)(х5х6 + х,х8). Высота параллельной формы равна трем, ширина - четырем. Для реализа- ции требуется четыре процессора, способных выполнять операции сложения и умножения, причем все процессоры загружены только на первом шаге вычис- лений. На втором шаге работают только два процессора, а на третьем шаге - лишь один. Оценим максимальное быстродействие параллельных алгоритмов. Для этого предположим, что каждый из процессоров параллельной структуры мо- жет выполнять бинарные или унарные операции и общее количество входных переменных и констант равно N. Тогда один процессор сможет выполнить все вычисления за N—1 шагов. Если же организовать вычисления в «иде дерева, как это было сделано в предыдущем примере’, то время вычислений сокраща- ется дрПо^АП шагов. Древовидная структура, хотя и является самой быстро- действующей, неэффективна с точки зрения количества используемых процес- соров и их загрузки. В практических приложениях число процессоров, как правило, ограничено, поэтому больший интерес представляет задача макси- мального распараллеливания при фиксированном числе процессоров, а также задачи распараллеливания ряда частных, но широкоупотребительных формул (рекуррентных соотношений, степеней, полиномов и т. д.). Исследования по этим вопросам можно найти в [ 3,13]. 105
Вход Регистр 1 | Рис. 5-2. Параллельный процессор БПД. I / Процессор N j f I Регистр! | Разновидностью параллельной структуры является конвейерный вычисли- тель. Он состоит из последовательно соединенных специализированных процес- соров, каждый из которых выполняет определенную часть некоторой сложной операции. Для того чтобы начать выполнение следующей операции, у предыду- щей операции должен быть закончен только первый этап. Реализация конвей- ера позволяет существенно повысить скорость обработки информации, однако поток данных и последовательность их преобразований следует организовать так, чтобы стало возможным независимое выполнение ряда однотипных пре- образований. Здесь снова требуется согласование численных методов с особен- ностями структуры вычислительной системы. Необходимость предварительно- го упорядочения входных данных приводит к тому, что собственно обработка отделена от процесса поиска данных в памяти, а для хранения промежуточных результатов используется сверхоперативная память. В качестве примера дня описанных структур рассмотрим реализацию быстрого преобразования Адамара (БПА). Граф вычислительного процесса БПА показан на рис. 3.9. Последователь- ное устройство БПА реализуется по схеме, приведенной на рис. 5.1. Исходные данные записываются в память, затем производится их считывание, вычисле- ние сумм, разностей и запись результатов в память. Вычисление БПА требует -WlogJV шагов. Параллельный вычислитель БПА показан на рис. 5.2. Входные данные за- писываются в регистр 1 , из которого поступают в параллельный процессор, состоящий из N сумматоров-вычитателей. Вычислеяныена первой итерации сум- мы и разности записываются в регистр 2 и являются исходными данными для второй итерации. Эти данные вновь подаются в параллельный процессор, а результаты второй итерации записываются в регистр 1 . Вычисления заканчи- ваются за log3lV шагов. Конвейерная схема для N= 8 показана на рис. 5.3. Она содержит три ите- ративные ступени. Каждая ступень состоит из двух блоков задержки 1 и 2 и арифметического устройства 3 . В качестве блоков задержки можно использо- вать многоразрядные регистры сдвига. В первой ступени каждый блок задерж- ки содержит N/2 элементов, а в каждой последующей ступени вдвое меньше, чем в предыдущей. Рассмотрим работу процессора. С частотой тактовых импульсов компо- ненты сигнального вектора s (i) поступают на вход первой ступени. Арифмети- ческое устройство производит поочередно суммирование значений сигнала с выхода и входа первого блока задержки и вычитание с выхода и входа второ- 106
Рис. 5.3. Конвейерный процессор БПА. го блока задержки. Таким образом, в первой ступени осуществляются вычис- ления, соответствующие первой итерации. Результаты вычислений поступают во вторую ступень, которая работает аналогично первой. Первый коэффициент преобразования появляется на выходе через N тактов. В следующие N—1 так- тов на выход выдаются остальные коэффициенты. В данном примере из-за характерных особенностей алгоритма БПА оказа- лось возможным использование любой аппаратной структуры. К сожалению, такая ситуация встречается на практике довольно редко. Как правило, преоб- разование исходного алгоритма к параллельно^ или конвейерной форме тре- бует значительных интеллектуальных усилий и даже может оказаться невоз- можным. Приведенные структуры, реализующие рассмотренные методы и алгорит- мы, могут быть использованы при решении большого круга радиотехнических задач обработки сигналов в реальном масштабе времени. Сюда относятся: об- |наружение и фильтрация сигналов, помехоустойчивое кодирование и декоди- рование, измерение координат путем измерения временного запаздывания и доплеровской частоты, классический и обобщенный спектральный анализ, трансформация спектров, передача и реконструкция изображений, специаль- ные вычисления в задачах управления и диагностики и т. д. Выбор. той или иной структуры для реализации конкретного алгоритма определяется параметрами обрабатываемых сигналов и требованиями к ко- нечным результатам. Они задают частоту дискретизации и число уровней кван- тования. В радиотехнических системах указанные величины изменяются в очень широких пределах. Например, в командных и управляющих системах данные могут квантоваться с частотой от десятых долей герца до сотеи герц. Допле- ровский сдвиг частоты достигает десятков килогерц, а частота следования импульсов в высокоскоростных системах связи — десятков мегагерц. Число уровней квантования колеблется от двух до 2”. Эти обстоятельства делают невозможным создание достаточно универсальных средств для цифровой об- работки сигналов и вынуждают инженера каждый раз приспосабливать суще- ствующую элементную базу для решения конкретной задачи. 107
В этой связи можно отметить три направления технической реализации рассмотренных алгоритмов - на основе универсальных микропроцессоров, на основе специализированных БИС с жесткой и полужесткой логикой и на осно- ве однородных структур. Среди универсальных микропроцессоров наибольшее применение для цифровой обработки сигналов получили однокристальные процессоры серий КР580, КР588, КР1810 и разрядно-секционированные процессоры К589, К1800, К1802, К1804, снабженные различными вспомогательными периферий- ными модулями. Процессор КР58О имеет наименьшее быстродействие и используется для решения задач небольшой сложности (с малым количеством операций на один отсчет сигнала) и с частотой дискретизации до нескольких килогерц. Микро- процессор КР1810 является более совершенной модификацией процессора КР580 и позволяет на порядок повысить производительность устройства об- работки. Секционированные процессоры используются для выполнения более трудоемких алгоритмов, например БПФ, вычисления сверток и т. д. С цепью повышения скорости обработки они, как правило, совмещаются с быстродей- ствующими аппаратными средствами: матричными умножителями, сдвигате- лями, буферными регистрами и т. д. Поскольку рассмотренные алгоритмы весьма неоднородны по сложности, а диапазон обрабатываемых сигналов очень широк, то невозможно указать четкие границы применения того или иного микропроцессора. Универсальные микропроцессоры в силу своих архитектурных особенно- стей чйстб не в состоянии обеспечить требуемого быстродействия, так как сла- бо учитывают такие особенности алгоритмов, как регулярность, независи- мость части операций, возможность конвейеризации и т. д. Поэтому в систе- мах с жесткими требованиями к быстродействию описанные алгоритмы реа- лизуются специализированными процессорами или вычислительными структу- рами с жесткой логикой. В ряду специализированных процессоров отметим микросхему для цифровой фильтрации К1815ВФЗ, которая может быть ис- пользована для построения процессора БПФ с последовательным вводом- выводом данных, и периферийный процессор "Электроника МС16ОЗ”. Послед- ний работает совместно с управляющей ЭВМ и позволяет вычислять 1024- точечное БПФ с комплексными числами за 11 мс, функции корреляции й свертки той же длины ~ за 14 мс. Вычислительные структуры с жесткой логикой фактически представляют собой аппаратное воплощение графа вычислительного процесса. Очевидно, что стоимость таких схем высока и их применение оправдано лишь в тех слу- чаях, когда все другие возможности исчерпаны. Здесь широко используются высокоскоростные БИС для умножения, сдвига, хранения, аналого-цифрового и цифроаналогового преобразования сигналов. Более подробные сведения об элементной базе для цифровой обработки сигналов и реализации ряда рассмотренных алгоритмов содержатся в [4, 13, 14]. Рассмотрим теперь третье "нетрадиционное” направление в области техни- ческих средств. Сущность этого направления состоит в том, что процессор строится из однородных, но достаточно сложных ячеек, соединенных между собой магистралями передачи информации. Система работает по принципу 108
конвейера или волнового фронта. Обработка потоков информации произво- дится без запоминания промежуточных результатов. Это позволяет исключить устройство управления и сделать большое число информационных входов и выходов. Перед началом работы каждая ячейка может настраиваться на реали- зацию определенных функций. Возможность перестройки и максимальное рас- параллеливание вычислительного процесса "примиряют” два таких противоре- чивых требования, как быстродействие и универсальность. Подобные вычис- лительные структуры получили название систолических массивов [ 3,13]. 5.2. ДЕКОДИРОВАНИЕ КОРРЕКТИРУЮЩИХ КОДОВ ПРИ ПОМОЩИ БЫСТРОГО ПРЕОБРАЗОВАНИЯ АДАМАРА 5.2.1. Алгоритм декодирования и структура декодера Для помехоустойчивой передачи информации до каналам связи использу- ются специальные коды, которые получили название корректирующих. Та- кой код представляет собой множество дискретных сигналов, обладающих определенными свойствами. Каждое сообщение передается своим сигналом длины N символов. Совокупность выбранных для передачи анналов удобно записать в виде строк матрицы А размером х N, где число равно общему количеству слов в коде. Матрица А называется кодовой матрицей корректирующего ко- да. Наибольшее применение в настоящее время получили бинарные сигналы. Кодовые матрицы этих сигналов состоят из символов 1 и —1. Декодирующее устройство, находящееся на приемном конце, должно пра- вильно распознать кодовое слово, т. е. указать его место в матрице, несмотря на искажения, вызванные канальными помехами. Если шумы гауссовы, то оп- тимальным декодирующим устройством является -канальный корреляцион- ный приемник. На сигнальные входы всех Nt каналов такого приемника по- дается сигнал из канала связи, а на опорные входы - анналы, соответствую- щие строкам кодовой матрицы (кодовые слова). Номер принятого кодового слова равен номеру канала с максимальным значением отклика. Рассмотрим два наиболее важных этапа построения декодирующих уст- ройств — алгоритмический и программный. Описанную процедуру декодирования можно формализовать следующим образом. Пусть переданный сигнал представляет собой одну из строк кодовой матрицы, а принятый сигнал описывается вектором-столбцом X = (х{ , х2,..., х^) Г Этот вектор получается на выходе аналого-цифрового преобразователя, поэтому его компонентами являются действительные числа, соответствующие отсчетам сигнала. Тогда корреляционное декодирование заключается в вычис- лении произведения Y = АХГ= (yt,y2,...,yN)T. и определении номера максимальной компоненты. Для вычисления Y обычными методами векторно-матричного умножения следует затратить операций, что при больших Д', hN делает корреляцион- ное декодирование труднореализуемым. 1(Ю
Для многих широко используемых кодов объем вычислений удается су- щественно сократить, если воспользоваться структурными свойствами кодо- вых матриц. Рассмотрим ряд важных для практики случаев. 1. Ортогональный код. Кодовая матрица ортогонального кода равна мат- рице Адамара, т. е. А = . 2. Биортогональный код. Кодовая матрица биортогонального кода являет- ся композицией прямой и инвертированной матриц Адамара, а именно: Очевидно, что для умножения на матрицы этих кодов можно использовать алгоритм быстрого преобразования Адамара с числом операций Mog2A . При этом для определения номера слова ортогонального кода выбирается максимальная положительная компонента вектора Н^уХ , а для определения номера слова биортогонального кода — максимальная по модулю компонента вектора Н^уХ. Положительное значение этой компоненты указывает, что пере- данное слово лежит в верхней половине кодовой матрицы, отрицательное ука- зывает на принадлежность кодового слова к нижней половине матрицы. 3. Код максимальной длины. Пусть задана последовательность максималь- ной длины (ПМД) с числом символов N= 2*—1, где к — количество разрядов регистра сдвига, порождающего эту последовательность. Кодом максималь- ной длины называется код, словами которого являются все циклические пере- становки последовательности максимальной длины, записанные в алфавите 1, —1. Связь между алфавитами 0, 1 и 1, -1 задается соотношениями: 0 -* 1, Упорядочим кодовые слова в порядке возрастания чисел в первых к сим- волах последовательности. Это эквивалентно умножению слева исходной ко- довой матрицы А на перестановочную матрицу Р. Матрицу с переставленными строками обозначим S . Тогда S = РА. В подматрице матрицы S , образован- ной первыми к столбцами, записаны в порядке возрастания все двоичные чис- ла от 1 до N-1. Совокупность этих чисел образует по столбцам функции Раде- махера Ri ,R2 ,...,Rk без первого символа. Из правил формирования после- довательности максимальной длины следует, что остальные столбцы будут произведениями к первых, т.е. функциями Уолша. Переставим'столбцы так, чтобы они дали матрицу Адамара без первой строки. Это эквивалентно умно- жению матрицы S справа на перестановочную матрицу Q . Тогда будет спра- ведливым следующее выражение: PAQ и задача декодирования сведется к задаче умножения вектора на матрицу Ада- мара без первой строки и первого столбца. Рис. 5.4. Декодер с использованием БПА. Перестановка столбцов (умножение иа матрицу Q) эквивалентна переста- новке отсчетов входного вектора. Перестановка строк (умножение на матри- цу Р) эквивалентна перестановке отсчетов выходного вектора. Поэтому тех- ническая реализация декодера содержит блоки перестановок входных и вы- ходных данных, блок быстрого преобразования Адамара и блок выбора мак- симального значения (рис. 5.4). Поскольку размерность матрицы Адамара на единицу больше размерно- сти входного вектора, то для согласования размерностей длина входного век- тора увеличивается на единицу путем введения нулевого символа на первой позиции. При анализе результатов вычислений блоком выбора максимального значения первая позиция выходного вектора не принимается во внимание. Число необходимых вычислительных операций равно ЛПо^А. Если слова кода пронумеровать в порядке возрастания первых к симво- лов, то необходимость в перестановке выходных данных отпадает. Для реализации декодера необходимо определить явный вид переста- новки, задаваемой матрицей Q . Вид перестановки определяется следующей теоремой. . Теорема 5.1. Пусть а - примитивный элемент поля Галуа GF(2*). Тог- да подстановка Ln-a’"1, (5.1) примененная к столбцам матрицы S , переводит ее в матрицу Адамара поряд- ка 2* без первой строки и первого столбца. С учетом теоремы 5.1 процесс декодирования сводится к следующему: 1) позиции вектора X переставляются в соответствии с выражением (5.1), после чего X дополняется слева одним нулевым символом. Обозначим резуль- тат этих операций X*; 2) выполняется умножение вектора X’ иа матрицу Адамара; 3) определяется максимальная компонента произведения. Пример 5.1. Пусть имеется последовательность максимальной длины 0,0,1,0, 1, 1,1, описываемая полмомом h (х) - з? + х + 1. В алфавите 1, -1 она запишется так: 1,1, -1,1, -1, -1, -1. Матрица S кодовых слов, упорядоченных в соответствш с возрао- танием первых к символов, равна 11—1 1 -1 -1-1 1-1 1-1 -1 -1 1 S = 1 -1 -1 -1 1 1-1 -1 1 1-1 1 -1-1 -1 1 -1 -1 -1 11 -1-1 1 1 -1 1-1 -1 -1-1 1 1-11 0 110 111
Нетрудно видеть, что первые три столбца этой матрицы образуют функции Радемахера без первого символа. Элементы поля GF(23) равны (2] :сР = 100, а* = 010,а2 = 001,а3 = 110,а4 = 011, а5 = 111, а* = 101. Подстановка Z переставляет их следующим образом: 1) 001 -<? = 100; 2) 010-а1 = 010; 3) 011-*а3 = 001; 4) 100-а3 = 110; 5) 101-а4 = 011; 6) 110-»а’ = 111; 7) 111-а* = 101, . тл. первая позиция переставляется на четвертую, вторая остается «а месте, третья стано- вится на первую, четвертая на шестую и т. д. Запись в табличном виде выглядит так: 1 2 3 4 5 6 7 | 42 16375/ Применение этой подстановки к столбцам матрицы S дает матрицу -1 1-1 1-1 1 -1" 1-1-1 1 1-1 -1 -1-1 1 1 -1 -1 1 1 1 1 -1 -1 -1 -1 -1 1-1-1 1-1 1 1 -1 -1 -1 -1 Г 1 -1 -1 1-1 1 1 -1 отличающуюся от матрицы Адамара отсутствием первого столбца и первой строки. Перестановка входных данных может быть выполнена устройством, показанным на рис. 5.5. Оно содержит запоминающее устройство (ЗУ) с произвольной выборкой, генера- тор поля Галуа и двознный счетчик. При записи информации адресные входы ЗУ подклю- чены к генератору поля Галуа, а при считывании - к счетчику. Поэтому первый символ сигнала записывается по адресу а°, второй - по адресу о1 и т. д. Посяе того как все сим- волы будут приняты, производится считывание. Процессом считывания управляет двоич- ный счетчик. Первым считывается символ по адресу Н0...01). вторым - по адресу 2 (0...10) ит. д. При таком алгоритме входные данные переставляются в соответствии с перестановкой. Вход Рис. 5.5. Схема реализации перестановки. 4. Декодирование других кодов. Многие коды содержат код максималь- ной длины в качестве подкода и имеют кодовую матрицу следующего вида: м MdiagCj М diag С2 > • (5-2) М diag Ср где М - кодовая матрица кода максимальной длины; diagCy - диагоналывя матрица, т. е. матрица, по главной диагонали которой записана последователе ность Cf , а остальные элементы равны нулю. Например, для кодов Голда по* следовательносги С{- также являются последовательностями максимально* длины. Умножение вектора на матрицу (5.2) сводится к раздельному умножению на матрицы, М, MdiagC., i = 1, 2,..., р . Умножение на diagC. заключается в смене знаков компонентов входного вектора в соответствии с последователь- ностью С{. . Умножение на М выполняется по рассмотренному алгоритму. ’ 5. Синхронизация. Часто периодическая последовательность максимальной длины используется в качестве синхронизирующей для начального ввода сис- темы в синхронизм. Задача синхронизации состоит в определении фазы прихо- дящей последовательности, т. е. распознавания ее сдвига во времени относи- тельно некоторого фиксированного состояния. Так как все циклические сдви- ги являются словами кода максимальной длины, то задача синхронизации сов- падает с задачей декодирования кода и решается с помощью описанных уст- ройств. 522. Программная реализация При программной реализации рассмотренных декодеров целесообразно использовать модульное программирование, при котором вся программа раз- бивается на отдельные функциональные модули или подпрограммы. Основны- ми функциональными модулями являются: 1) модуль вычисления БПА; 2) модуль перестановки отсчетов в соответствии с выражением (5.1); 3) мо- дуль умножения исходного вектора на последовательность С* ; 4) модуль вы- бора максимального значения. Рассмотрим реализацию этих модулей на языке ассемблера в системе ко- манд микропроцессора КР58ОИК8О в предположении, что длина обрабатывае- мого кода не превышает 255. 1. Модуль вычисления БПА. Для вычисления БПА используется граф, по- казанный на рис. 3.9. Его характерной особенностью является то, что резуль- таты вычислений записываются в те же ячейки памяти, откуда берутся исход- ные данные. Для хранения адресов операндов выделим две регистровые пары В и D . Анализ графа показывает, что его можно разбить на каждой итерации на идентичные части. В частности, первая итерация содержит одну часть, вто- рая - две, третья - четыре и т. д. В общем случае число частей равно 2'~1 , где i - номер итерации. Основной базовой операцией каждой части является ело- ИЗ
жение и вычитание пары отсчетов — операция ’’бабочка”. "Крылья” ’’бабочки" уменьшаются по мере продвижения к концу вычислений. Поэтому основная часть алгоритма сводится к многократному повторению базовой операции, причем эти повторения легко организуются в циклы. Таких циклов три — ите- раций, групп, "бабочек” в группе. Для организации этих циклов необходимо иметь три счетчика. Счетчик итераций (СЧ1) организуется с помощью регистра Н , в котором хранится только одна единица. Переход к следующей итерации соответствует сдвигу этой единицы вправо. Содержимое регистра Н задает также количество ’’бабочек” в труппе. Поэтому счетчик ’’бабочек” (СЧЗ) можно организовать с помощью команды DCR Н . При установке этого счетчика в нуль следует пе- Рис. 5.6. Схема алгоритма БПА. 114
рейта к вычислениям в следующей группе, для чего необходимо модифициро- вать адреса исходных данных. Счетчик числа групп в итерации обозначим СЧ2. Обнуление этого счетчика переводит процесс на следующую итерацию. Цикл счетчика СЧ1 является внешним. В Него вложен цикл счетчика СЧ2, в кото- рый, в свою очередь, вложен цикл счетчика СЧЗ. Схема алгоритма дана на рис. 5.6. Приведем текст программы: М3: ANA А Обнулена* примака переноса LDA LENGTH Загрузка дамы преобразования RAR Делением* два: СЧ1-= СЧ1-1 STA LENGTH Запись в память JC M5 Если СЧ1 = 0, то выход LX! В ACRES Загрузка адреса начала массива MOV D, В MOV E.C LDA LENGTH MOV H, A > Получение адреса второго операнда ADD E < и организация СЧ1, СЧЗ MOV E, A М2: LDAX D MOV L, A LDAX В ADD L ^Выполнение базовое операции ’’бабочка STAX В SUB L SUB L STAX D INX В INX D | Продвижение по массиву DCR H СЧЗ = СЧЗ - 1 JNZ М2 Цикл СЧЗ LDA COUNT DCR A 1 СЧ2 STA COUNT JNZ M4 Переход к блоку модификации адресов LDA MEM RLC Вычисление новых значений STA MEM ’СЧ2. СЧЗ STA COUNT JMP М3 Переход к новой итерации M4: LDA COUNT MOV H, A ADD C MOV C, A ' Блок модификации адреса MOV A, H ADD E MOV E, A JMP М2 M5: RET 115
Рис. 5.7. Генератор ПМД и поля Галуа. Вызывающая программа должна подготовить исходные данные: в ячейку памяти с номером LENGTH заносится длина преобразования N, я в ячейки па- мяти с номерами COUNT и МЕМ — единицы. 2. Генерирование последовательности максимальной длины и поля Галуа. Последовательность максимальной длины содержит N = 2* — 1 символов и может быть получена с помощью регистра сдвига с к ячейками (рис. 5.7, а). Конфигурация обратных связей задается коэффициентами полинома Л’(х) = = Л(1/х)х*. При программной реализации в качестве ячеек регистра сдвига можно ис- пользовать разряды аккумулятора (рис. 5.7, б). Петля обратной связи и сум- матора моделируется путем суммирования по модулю два содержимого акку- мулятора и константы^, которая определяет вид обратной связи. Суммиро- вание происходит при наличии признака переноса. Например, для полинома h'(x) = Xs + х3 + 1 код обратной связи равен 0010100. Для организации сдвига и суммирования используются команды RAR и XRI 0s. Вектор-состояние регистра сдвига можно рассматривать как элемент поля Галуа [ 2]. Таким образом, генерирование ПМД совпадает с генерированием элементов доля. Приведем соответствующую программу: MV1 A, START ; Установка начального состояния ANA А Ml: OUT PORT RAR JNC Ml ; Сброс признака первьоса ; Вывод состояния ; Qjbht содержимого регистра ; Переход к следующему состояние, если сигнал обратной связи равен кулю XRI OS ; Вычислшие состояния, если сигнал обратной связи не равен нулю IMP Ml ; Переход к следующему состояние 3. Модуль перестановки входных отсчетов. Пусть входные данные записа- ны в ячейках памяти с адресами МЕМ1 - (МЕМ1 + N). Для записи перестав- ленных данных выделим ячейки с адресами МЕМ2 - (МЕМ2 + Л). Эти масси- вы не должны перекрываться. Для осуществления перестановки используем индексную адресацию. При этом исполнительный адрес определяется как сумма содержимого индексно- 116
го регистра и смещения. Смещением является состояние генератора поля Галуа. Для организации индексного регистра используем регистровую пару В, в которую запишем число МЕМ2. Это число удобно выбрать таким, чтобы его младший байт был равен нулю. Тогда операция суммирования с индексом за- меняется пересылкой смещения в регистровую пару. Выделим регистр Н для хранения текущего состояния счетчика числа по- вторений, а пару В для хранения начального адреса МЕМ1 массива исходных данных. Для организации поля Галуа воспользуемся аккумулятором. Рис. 5.8. Схема алгоритма перестановки отсчетов. 117
Рис. 5.9. Схема алгоритма уавожения иа Су Схема алгоритма перестановки показана на рис. 5.8. Текст программы имеет следующий вид: MVI Н, N ; Загрузка счетчика MVIA, START ; Загрузка аккумулятора начальным состоянием генератора поля 118
LXI B.MEM2 LXI D, MEM1 Ml: INXD MOV C, A LDAX D STAX В DCR H JZ М3 ANA A RAR JNC Ml XRI OS IMP Ml М3: RET Загрузка индексного регистра Загрузка начала массива Продвижение по массиву входных данных Получение нового адреса Извлечение входного отсчета Запоминание состояния поля Счет Возврат в основную программу, если Н = О Генерирование поля Возврат 4. Модуль умножения входного вектора на последовательность С* . Для определенности будем считать, что выполняется декодирование кода Голда, так что — последовательность максимальной длины, и программа должна генерировать эту последовательность. При каждом сдвиге генератора ПМД оче- редной входной отсчет извлекается из памяти. При этом изменяется его зна- ковый разряд, если признак переноса равен единице. В противном случае ои переписывается в память без изменений. Будем считать, что входные данные содержат четыре разряда (один из которых знаковый) и представлены в пря- мом коде. Результат умножения будем записывать в память в д ополнительном коде. Для хранения исходного и полученного массивов выделим ячейки памя- ти с начальными адресами А1 и А2. На рис. 5.9 показана схема алгоритма. Приведем текст программы: POPPSW MVI H.N LXI В, А1 LXI D.A2 М4; INX В INX D ANA А RAR PUSHPSW DCR Н JZ М2 RAL RAL RAL RAL MOV В, А LDAX В XRA В ANI 08 JZM5 LDAX В Занесение из стека в А началзного состояния генератора ПМД Регистр Н - счетчик длины слова В - регистр адреса входных данных D - регистр адреса результата перемножения | Продвижение по массивам Сброс признака, переноса Циклический сдвиг вправо содержимого генератора ПМД Сохранение в стеке состояния генератора ПМД Счет Выход ® подпрограммы, если Н = 0 Четырехкратный сдвиг влево, дель которого - совместить бит признака переноса и биг знака входных дшных Извлечение из памяти отсчета входных данных А ® В-*А Выделение третыях) разряда Если S ® С = 0, то переход к пересылке в память Входной отсчет в А 119
СМА 1NR А Перевод в дополнительный код JMP М3 ; Безусловный переход М5: LDAX В ; Загрузка входного отсчета М3: STAX D ; Запись в память результата POPPSW ; Извлечение из стека состояния генератора ПМД JNC М4 ; Переход к новому такту, если отсутствует сигнал обратной связи XRI 0S ; Суммирование с кодом обратной связи JMP М4 ; Переход к новому такту М2: RET ; Возврат 5. Модуль определения максимума. Структуру этого модуля рассмотрим для случая, когда кодовая матрица имеет вид (5.2). Она разбивается на блоки размера N , поэтому для определения позиции максимума следует указать но- мер блока и номер строки в блоке. Принцип работы программы основан на сравнении текущего элемента мао сива данных с текущим максимумом и фиксации текущего максимума. Вели- чину максимума и иомер его строки в блоке будем хранить в стеке и для опе- ративной работы вызывать в регистровую пару В. Для подсчета позиций в бло- ке в регистре D организуем СЧ1. Текущий номер блока будем подсчитывать в СЧ2, организованном в ячейке памяти COUNT2. Для хранения номера бло- ка, в котором обнаружен максимум, воспользуемся ячейкой памяти с номе- ром CYCL. Соответствующая программа имеет вид: LXI SP, STEK LXI Н, DATA MVID, N LDA COUNT 2 DCR А JZ OVT STACOUNT 2 POP В MI: MOVA, M CMP В JCM2 MOVB , A MOV C, L LDA COUNT 2 STA CYCL М2: INX H DCR О JNZ Ml PUSH В RET Установка указатели стека Установка регистра адреса данных' Организация СЧ1 Загрузка в аккумулятор содержимого СЧ2 Счет блоков Выход из подпрограммы, если (СЧ2) = Q Запоминание номера текущего блока Загрузка регистров- текущего максимума и номера Загрузка текущего элемента массива Сравнение текущего элемента с текущим максимумом Если В < А, то сохранение максимума Замена текущего максимума Замена номера текущего максимума Запоминание номера блока с максимумом Переход к следующей позиции Запись в стек текущего максимума и его номера Возвращение в основную программу Время выполнения программ приведено в табл. 5.1. 120
Таблица $.1 Длина Время выполнения, мс N вычисление перестановка умножение опредепемма БПА на максимума 32 64 128 256 3,7 ,1,1 1,5 0,8 8,1 2,2 3 1,6 17,1 4,4 6 3,3 38,6 8,8 12 6,6 5.3. РАЗДЕЛЕНИЕ МАЖОРИТАРНО-УПЛОТНЕННЫХ СИГНАЛОВ ПРИ ПОМОЩИ ДИАДНОЙ СВЕРТКИ Одним из способов передачи сообщений от нескольких источников по од- ному каналу является мажоритарное уплотнение [ 9]. Его структурная схема показана на рис. 5.10 и содержит генератор функций Уолша (ГФУ), коммута- тор (К), перемножители и мажоритарный элемент (М). Генератор вырабаты- вает N = 2я дискретных функций Уолша, каждая из которых содержит N= = 2п символов. С помощью коммутатора из этого множества функций выде- ляется только и функций. Номера выбираемых функций определяются страте- гией работы системы и для дальнейшего несущественны. Выбранные п функ- ций подаются на первые входы перемножителей. Вторые входы перемножите- лен подключены к источникам двоичных сообщений Ь. = ±1. Таким обра- зом, каждое из передаваемых сообщений модулируется какой-либо функци- ей Уолша. Выходные сигналы перемножителей поступают на мажоритарный элемент, в котором образуется единый групповой сигнал А (п). В аналитиче- ском виде его можно записать следующим образом: Л(и) = Maj(*„_rhad(i0 , и), ft„_1had(i1,»),...,ftehad(ff|_1 ,я)). Обозначим В = (*„ _! . *„_2 . •••. *0). I = (<„ _ 1 2.*0) • При фикси- рованном векторе I множество мажоритарно-уплотненных сигналов состоит из 2я элементов. Каждому сигналу однозначно соответствует вектор В. Деко- Рис. 5.10. Устройство мажоритарного уплотнения. 121
дарование (разделение) заключается в определении вектора В по принятому сигналу А (п). Возможность использования при декодировании алгоритмов быстрого преобразования Адамара устанавливается следующей теоремой [ 9]. Теорема 5.2. При фиксированном векторе I множество последова- тельностей Л (л) инвариантно относительно даадного сдвига аргумента. № данной теоремы следует, что все множество мажоритарно-уплотненных сигналов получается путем даадных сдвигов единственного сигнала. Поэтому декодирование сводится к вычислению диадной, корреляционной функции (3.49), которую удобно вычислять при помощи двукратного преобразования Адамара (3.50), (3.51): RT = АГ1Н(НХ,НА)! (5.3) где Н - матрица Адамара; X - вектор входного сигнала; А - вектор опорно- го сигнала. Пример 5.2. Пусть N = 8, а сигналы А (л) образуются мажоритарным уплотнением функций Радемахера и их. инверсий, т. е. Л (л) = Maj(b2/?t , Ь,/?,, bRj. Та блица 5.2 Л (л) В г || А (л) В т 1 1 1-1 1-1-1-1 1 1 1 0 1-1-1-1 1111-111 4 I 1 1-1 1-1 1-1-1 1 1-1 1 |-1 1-1-1 1 1-1 1-1 1-1 5 1-1 1 1-1-1 1-1 1-1 1 2 j-1-l 1-1 1-1 1 1-1-1 1 6 -1 1 1 1-1-1-1 1 1-1-1 3 11-1-1-1 1-1 1 1 1-1-1-1 7 В табл. 5.2 приведены значения Л (л) при различных В и соответствующие им значения диадного сдвига. Пусть в качестве опорного сигнала используется последовательность Ао = = [1,1,1, -1, 1, -1, -1, -1], для которой г = 0, а на вход приемника посту- пает последовательность А3 = [-1,1,4,1,-1,-1,-1,1], для которой г =3. Матрица преобразования (матрица Адамара) равна н = 11111111 1-1 1 -1 1 -1 1 -1 1 1—1—1 1 1 -1 -1 1-1-1 1 1 -1 -1 1 1 1 1 1—1—1 -1 -1 1-1 1-4—11-1 1 1 1 -1 -1 -1 -1 1 1 1-1-1 1-1 1 1-1 Умножая А о и А 3 на Н, получаем спектры опорного и приходящего сиг- налов: НА о = I °- 4> 4» °* 4> °* °’ -*1Г; HAj= [ 0,-4,-4,0,4,0,0,-4]Г. Произведение спектров равно S = HAj.HAj =[0,-16,-16,0,16, 0,0,16]т . Выполняя обратное преобразование, находим: RT=AT‘HS = [0,0,0,8, -8,0,0,0]Г. В последнем выражении максимальное значение имеет третий компокакт, т.е. т = 3,поэтомуВ = [ 1,-1,—1]. Подсчитаем число операций, необходимых для декодирования. Из (5.3) следует, что для вычисления Rr надо три раза умножить вектор на матрицу Адамара и перемножить N чисел. Произведение НА может быть вычислено заранее, кроме того, известно [9] , что оно содержит только N/2 ненулевых компонент. Поэтому остается два умножения вектора на матрицу И и умно- жение NJ2 чисел. Умножение вектора на матрицу Адамара выполняется за Mogj2V операций, поэтому окончательно получим 2Nto%iN +М2 операщЛ. Это число можно несколько уменьшить, если учесть, что произведение спект- ров имеет только N/2 отличных от нуля компонентов. Программная реализация состоит из модул ей, описанных в § 5.2. 5.4. УСЕЧЕНШЕ АЛГОИПЮ! Рассмотрим задачу вычисления векторно-матричного произведения Y = К»(уеуг ,...,yN)T . Ранее было показано, что для многих матриц количество (итераций при вычислении Y можно уменьшить с величины OfN2) до величины О (АЛо^ЛО и даже O(N). Тем не менее для больших N объем вычислений все еще велик. В то же время в ряде практических приложений не обязательно знать все ком- поненты вектора Y, так как интерес представляет только номер максимально- го компонента. Таким образом, две отдельные процедуры - умножение век- тора на матрицу и определение номера максимального компонента — жела- тельно совместить в одну (см. § 5.2,5.3). Другим примером может служить задача определения частоты синусои- дального сигнала. Пусть >(t) = ainwf . С помощью схемы, показанной на рис. 5.11, преобразуем этот сигнал в ДЭФ на разностной частоте П = ы - со, . Номер ДЭФ и, следовательно, частоту П можно определить по максимальной компоненте произведения Y = VX , где X - вектор отсчетов комплексного сигнала х(г) = ашПг- /соаШ ; V - матрица дискретного преобразования Фурье. Таким образом, задача определения частоты сводится к задаче нахож- дения максимальной компоненты ДПФ. Совмещение векторно-матричного умножения с определением максималь- ной компоненты с принципиальной точки зрения возможно для любой матри- цы, Проиллюстрируем это на матрицедиркулянте квадратично-вычетного ко- 123 122
Slfl^t cosu^t Ac. 5.11. Схема преобразо- вания синусоидального сиг- нала в ДЭФ. да из примера 4.4. Граф вычислительного процесса при умножении на эту мат- рицу показан на рис. 4.1. Пусть на вход вычислителя поступает последовательность 1-111—1111—1-1—1. После выполнения первой итерации промежуточные суммы принимают значения: 0, ±2. Исключим в дальнейших вычислениях уз- лы первой итерации, в которых значения суммы равны 0. Аналогично на вто- рой итерации сохраним только узлы с абсолютными значениями суммы боль- ше 3 и т. д. Продолжив этот процесс дальше, получим граф с 19 узлами (рис. 5.12), т. е. с 19 операциями сложения-вычитания. Полное умножение вектора на матрицу по графу, показанному на рис. 4.1, требует 50 операций. Еще 10 операций необходимо затратить на поиск максимальной компоненты. Здесь следует, однако, сделать следующие замечания. Во-первых, поиск и исключение узлов с малыми абсолютными значениями сумм требуют выполне- ния дополнительных операций сравнения и сортировки. Во-вторых, если сиг- нал принимается в смеси с шумом, то при принятии промежуточных решений возможны ошибки и, следовательно, помехоустойчивость усеченного алгорит- ма будет хуже, чем полного алгоритма. Ухудшение помехоустойчивости явля- ется следствием снижения вычислительных затрат. Объем вычислительных затрат и помехоустойчивость алгоритма будут за- висеть от конкретного вида матрицы А . Далее ограничимся рассмотрением матриц дискретных ортогональных преобразований, которые имеют регуляр- ные графы вычислительного процесса. Начнем с матриц Адамара. В этом случае задача определения максималь- ной компоненты произведения Y сводится к декодированию ортогонального кода (см. § 5.2). Этот код является подкодом биортогональното кода с ко- довой матрицей [ Н, —Н]1 , поэтому целесообразно сразу рассмотреть более общий случай декодирования биортогональното кода. Основную идею усеченного алгоритма декодирования биортогональното кода легко понять из следующих рассуждений. В главе 3 показано, что строки матрицы Адамара порядка N = 2" можно трактовать как функции Уолша, за- данные на интервале (0, Т] . Каждая из функций Уолша, в свою очередь, явля- ется произведением ие более чем п функций Радемахера (г), Rt(t), ..., Rn (0. представляющих собой меандры с периодами Т, 2"1 Т, 2"2 Т,.... 21~пТ соответственно. Двоичный номер функции Уолша показывает, какие именно функции Радемахера входят в произведение. Например, для л = 3 функция Уолша с номером 011 является произведением функций Радемахера Д2 (f) и Л3(Г), т. е. had(011, t) = Я2(т)/?3(1). Из этого следует, что задача декодиро- 124
о Рис. 5-12. Усеченный граф вычислителшого процесса. вания заключается в определении номера функции Уолша и знака этой функ- ции. Последний необходим для того, чтобы указать место кодового слова в матрице [ Н, —Н] т . Номер функции Уолша можно определить следующим образом. Если в формировании функции участвует функция Радемахера с номером л, то пары символов с номерами 21 и 21 + 1 отличаются знаком, поэтому сумма символов в паре равна 0, а разность принимает значения ± 2. При отсутствии в произведе- нии функции Радемахера с номером п сумма символов в паре равна ± 2, а разность 0. Просуммировав модули сумм и разностей всех пар и сравнив их, можно принять решение о первом индексе функции. Если этот символ равен единице, то в дальнейших вычислениях следует использовать только разности, в противном случае - только суммы. Результаты первой итерации будем рассматривать как новый сигнал, по- лученный путем сжатия вдвое исходного сигнала. Поэтому для определения следующего символа можно использовать аналогичную процедуру и таким об- разом вычислить все символы. Пусть aflan_l ... а. — двоичный номер функции Уолша. Тогда в более строгом виде описанный алгоритм формулируется следующим образом [ 8]: 1) полагается i = N= 2", / = 1; 2) принятый вектор X размером i представляется в виде матрицы S раз- 125
мером 2 х (i/2), первую строку которой составляют компоненты вектора с нечетными номерами, а вторую - с четными номерами; 3) вычисляется матрица S размером 2 х (7/2): S = 1 1 S ; [1 "U 4) элементы столбцов матрицы S , взятые по модулю, суммируются. По- лучается вектор-столбец S размером два; 5) в векторе S находится больший элемент. Полагается а. ~ 1, если это первый элемент, и а. = 0, если второй; ~ б) если / < л /то строка матрицы S с номером, равным номеру макси- мального элемента S , переписывается на место первых г/2 позиций вектора X. Полагается / = / + 1, i = i/2 и следует переход к п. 2; м 7) если / = п , то определяется номер максимального по модулю элемента S (в данном случае вектор S имеет размер два). Знак этого элемента указы- вает, в какой половине матрицы [ Н,. -Н]' находится переданный вектор. Пример 5.3.Пусть Х= Г-1,1,-1.1,-1,1,-1,1] . Первый шаг / = 1: Второй шаг / — 2: Отрицательный знак указывает яа то, что передаьмый вектор находится во второй клетке матрицы [В,—Н]. Таким образом, переданный вектор равен had(101/ ) = -/?t (r)/?3 (г). Алгоритм требует следующих вычислительных затрат: операций сложат» - 4JV - -2fogJAT+'l; операций сравнена - tog^+l; операций взятия модуля - 2Л'-2. Описанный алгоритм можно обобщить на р-ичный случай [ 5] , когда мат- рицей кодовых слов является матрица функций Виленкина - Крестенсона (ВКФ). Эта матрица имеет порядок jV= р , а ее элемент Cu(v), находящийся вu-йстроке ип-мстолбце (и, с = 0,1......р*-1), равен л—1 —Е UJU. Са(р ) = W '-° ”, где w = exp(/2»/p), / = V-1, , « - коэффициенты р-ичной записи чисел и и в . Используя данное представление, запишем выражение для вычисления u-компонекга вектора Y 126
y(u) = и n. 1 !x(y)~ — w Vo P-1 -И.Р, ₽-1 — u„ ,V„ , ~.,-n * w *••• E w "-‘«(p). (5.4) 0 P1 = 0 ₽„_!»• На каждой итерации в результате последовательного вычисления сумм (5.4) производится определение р-ичных разрядов u-го номера принятой ВКФ. При этом на первой итерации определяется старший разряд ип_1 , а на послед- ней (л-й) — младший разряд • Действия на k-й итерации описываются соотношением ТС'>1 . где С* - [ - комплексно-сопряженная матрица ДПФ; В* и -ру.1?п~к - матрицы, содержащие соответственно массивы входных и выходных данных для k-й итерации. В качестве Вх используется принятый вектор X , первые р" 'элементов которого служат первой строкой Bt,вторые р”-1 элементов - второй строкой и т д. За оценку разряда принимается номер той строк и D*, для которой максимальна сумма квадратов модулю стоящих в ней элементов. При прямом умножении на матрицу С* алгоритм требует для реализации рт—1 p-i (р’+-у-)( ) комплексных умножений и при р »1 выигрывает у полного алгоритма приблизительно в п раз. Анализ помехоустойчивости пока- зывает, что энергетический проигрыш усеченного алгоритма полному не пре- вышает 3 дБ. Построение усеченных алгоритмов БПФ рассмотрим ца примере алгорит- ма с прореживанием по частоте. Граф вычислительного процесса этого алго- ритма показан на рис. 3.5. Анализ вычислительного процесса позволяет устано- вить следующие закономерности. Пусть ~ двоичный номер спект- ральной составляющей. Тогда в формировании величины ... а}) уча- ствуют на каждой итерации либо только суммарные, либо только разностные уз- лы графа. Суммарные узлы t-й итерации приводят к выходному узлу» Двоич- ный номер которого содержит в r-й позиции 0, а разностные - к узлу, двоич- ный номер которого содержит в Ай позиции 1. Каадому выходному узлу соот- ветствует свое дерево вычислений, в котором чередование суммарных и разно- стных узлов однозначно указывает номер спектральной составляющей. Пусть def(k, л) = (W'*°, И**1 ,и/*(^~1)) - одна из базисных функций ДПФ. Для алгоритма с прореживанием по частоте в узлах первой итерации по лучим: Wkn± W = Wkn(l iW ) == 127
2 If*" в суммарных узлах } # — четное; О в разностных узлах J’ 10 в суммарных узлах ) * _ нечетное. 12 WKn в разностных узлах j Отсюда следует, что сумма модулей выходных величин суммарных узлов рав- на Л’ , а разностных 0, или наоборот. Ненулевые значения в суммарных узлах будут только при четных к . Они равны 2WI>cn = 2( W2fn ,к = 0,1,..., Л?2 - 1. Ненулевые значения в разност- ных узлах будут только при нечетных к Умножение этих значений на повора- чивающие множители дает величины 2W<2*+t)"B'n = 2(W1/k+1)" , к - О, 1, 7V/2—1. Таким образом, на входы второй итерации поступают опять базис- ные функции ДПФ, но вдвое меньшего размера. Так как последующие вычис- ления являются ДПФ размера ЛГ/2, то все сказанное будет справедливо и для оставшейся части графа. Приведенные рассуждения позволяют сформулировать следующий усечен- ный алгоритм вычислений: на ьй итерации строится статистика,позволяющая определить принадлежность максимального отсчета выходного -вектора мно- жеству суммарных или разностных узлов. После этого половина узлов исклю- чается. Выходные значения оставшихся узлов умножаются на поворачивающие множители, и следует переход к i + 1 итерации. На рис.-5.13 показан граф усеченного преобразования для N= 8 . Анало- гично можно усечь и БПФ по алгоритму Винограда. На рис. 5.14 показан при- мер такого усечения. Анализ этого примера показывает, что процедура приня- тия решения на каждой итерации в алгоритме Винограда может быть даже про- ще, чем в алгоритмах с прореживанием по времени или частоте. Рис. 5.13. Граф усеченного БПФ. 128
Рис. 5.14. Граф полного (а) и усеченного (б) БПФ по алгоритму Винограда. КОНТРОЛЬНЫЕ ВОПРОСЫ И ЗАДАЧИ 5. 1. Постройте структурную схему параллельного вычислителя, выполняющего ум- ножение вектора на матрицу. Определите высоту и ширину параллельной формы алгорит- ма как функцию от размеров матрицы. 5. 2. Для последовательности максимальной длины (1, —1, 1,1,-1, —1, —1) построй- те код максимальной длины. Преобразуйте матрвду кода в матрицу Адамара и запишите получившиеся при этом перестановки строк и столбцов. 5. 3. При передаче сообщений кодом максимальной длины из п. 2 иа приемном конце получены следующие последовательности: (-5, -5, —4, 4, 2, -4, -1), (1, 5, -4, -2, 3, 2,5). Декодируйте эти последовательности, т.е. определите номера строк в матрице кода максимальной длшы, которым они соответствуют. 5. 4. Выполните п. 5.3 при помощи усечошого алгоритма. 5S. Найдите спектры функции А (л) для В = [-1,1,1), [ 1, -1,1], [ 1, -1, — 1) - Про- ведите анализ результатов и на его основе попытайтесь иайти аналитическое представле- ние для спектра А (л) при произвольном векторе В . 129
5.6 . При передаче по каналу связи последовательностей А (л) иа приемном конце по- лучены следующие векторы: (-5, 4, 2, -5, 3, -4, 5,1), (5, I, 2, 5, —3, —4, -3, 2). Деко- дируйте их при помощи диадной свертки, т. е. найдите соответствующие им векторы В . 5.7 . Постройте граф восьмиточечного усеченного БПФ с прореживанием по частоте для синусоидального входного сигнала с нулевой фазой и различной частотой, Проанали- зируйте степень усечотия в зависимости от частоты. ЛИТЕРАТУРА l.A xo А., Хопкрофт Дж., Ульман Дж. Построят ие и анализ вычислительных алго- ритмов. — М.: Мир, 1979. — 536 с. З.Б лейхут Р. Теория и практика кодов, контролирующих ошибки. - М.: Мир, 1986.-576 с. 3. Воеводин В.В. Математические модели и методы в параллельных процессах. - М.: Наука, 1986. - 296 с. 4. Казаринов Ю.М., Номоконов В.И., Филиппов Ф.В. Прямейшие микропроцессоров и мккроЭВМ в радиотехнических системах. - М.: Высш, шк., 1988. - 207 с. 5.К анатова Л. В., Литвинов ВЛ., Финк Л.М. Быстрое корреляционное декодирова- ние ч-ичных кодов максимальной дптны // Проблемы передачи информации. - 1986. - Т. 22, вып. 2. - С. 98-103. 6, Кнут Д.Е Искусство программирования для ЭВМ. Получиспенные алгоритмы. - М.: Мир, 1978. - Т. 2. - 724 с. 1.Кузьмин С.З. Основы проектирования систем цифровой обработки радиоиокаци- оннойинформация. - М.: Радио и связь, 1986. — 352 с. Й.Лицын С.Н., Шеховцев О.И. Быстрый алгоритм декодирования кодов Рида -Мал- лера первого порядка // Проблемы передачи информации. — 1983. - Т. 19, выл. 2. — С. 3-7. 9. Лосев В.В., Бродская Е.Б., Коржик В.И. Поиск и декодирование сложных дискрет- ных сигналов. - М.: Радио и связь, 1988. - 224 с. 10. Макклеллан Дж. Х„ Рейдер Ч.М. Применение теории чисел в цифровой обработке сигналов. - М.: Радио и связь, 1983. - 264 с. 11. Нуссбаумер Г. Быстрое преобразование Фурье и алгоритмы вычисления свер- ток. - М.: Радио и связь, 1985. - 248 с. 12. Солодовников А.И., Спиваковский А.М. Основы теории и методы спектральной обработки информации. - Л.: Изд-во Ленингр. ун-та, 1986. - 272 с. 13. Специализированные процессоры для высокопроизводительной обработки дан- ных /ОЛ. Баядман, Н.Н. Миренков, С.Г. Седухшт и др. — Новосибирск: Наука. Сиб. отд- иие, 1988. — 208 с. 14. Цифровая обработки информации На основе быстродействующих БИС / СА.Гам- крелвдзе, А.В. Завьялов, П.П. Мальцев и др.; Под РОД. В. Г. Домрачева. - М.: Энергоатом- издат, 1988. - 136 с.
ОГЛАВЛЕНИЕ Предисловие............................................................ 3 Список основных сокращений.......................................... . 5 1. Микропроцессорная обработка дискретных сигналов..................... 6 1.1. Аналоговые и дискретные сигналы................................ 6 1.2. Дискретизация и квантование.................................... 7 13. Микропроцессорная обработка сигналов........................... 8 1.3.1. Представллие чисел (8). 1.3.2. Арифметические и логические опер» цин (10). 13.3, Масштабирование и округление результатов счета (11) Контрольные вопросы и задачи.......................................... 12 2. Эффективные алгоритмы выполнения базовых оиераций................. 13 2.1. Эффективность алгоритмов и оцжка их вычислительной сложности.. 13 2.2; Вычисления с комплексными числами............................. 16 2.3. Вычислщие степмей............................................ 17 2.4. Вычисление полиномов....................................... 19 2.4.1. Метод Горнера (19). 2.4.2. Вычисление полинома в точках (20). 2.4.3. Сравнения и вычеты (21) 25. У множат ие полиномов.......................................... 22 25.1. Алгоритм ’фазделяй и властвуй” (22). 2.5.2. Алгоритм Тоома- Кука и преобразование Фурье (26) 23. Векторно-матричюе и матричное умножение....................... 29 Контрольные вопросы и задачи.......................................... 31 3. Обработка сигналов с помощью дискретных ортогональных преобразований... 33 3.1. Представление сигналов функциональными рядами ................ 33 3.2. Дискретное преобразование Фурье .............................. 34 3.2.1. Дискретные экспоненциальные функции (34). 3.2.2. Дискретное пре- образование фурье и его свойства (37) 3.3. Быстрые методы вычисления ДПФ.................................' 41 33.1, Алгоритм с црореживанием по времени (41). 33.2. Алгоритм с про- реживанием по частоте (45). 33.3. Алгоритмы БПФ с произвольным осно- ванием (46). 3.3.4. Вычисление обратного ДПФ (48). 3.3.5. Вычисление ДПФ действительных последовательностей (49) 3.4. Функции Уолша и дискретное преобразование Уолша-Адамара ........ 52 3.4.1. Матрицы Адамара и функции Уолша (52). 3.4.2. Преобразование Уолша-Адамара (56). 3.4.3. Быстрое преобразование Уолша—Адамара (57). 3.4.4. Двухмерное преобразование (60). 3.4.5. Взаимосвязь спект- ров (61) 35. Теоретико-числовое преобразование........................... 62 35.1. Кольцо и поле (62). 35.2. Теоретико-числовое преобразование и вы- числение сверток (63) 3.6. Функции Хаара и преобразование Хаара........................... 66 3.7. Аддитивная сложность дискретных ортогональных феобраэований... 68 Контрольные вопросы и задачи.......................................... 69 4. Дискретная свертка и ее вычисление................................ 70 4.1. Линейная, циклическая и диадная свертки. . . ................ 70 131
4.2. Прямые методы вычисления сверток............................... 73 4.3. Вычисление сверток при помощи быстрых ортогональных преобразований . 76 4.4. Вычисление коротких сверток и произведений полиномов........... 78 4,5. Китайская теорема.............................................. 79 4.5.1. Полиномы над полем (79). 45.2. Китайская теорема об остатках (80). 4.5.3. Алгоритм Евклида (82) 4.6. Вычисление коротких сверток с помощью китайской теоремы об остатках 86 4.7. Вычисление длинных сверток с помощью вложения коротких (гнездовой алгоритм).......................................................... 91 4.8. Мультипликативная сложность вычисления свертки................. 94 4.9. Алгоритм Винограда преобразования Фурье........................ 96 4.9.1. Гнездовой алгоритм (96). 4.9.2. Вычисление коротких преобразова- ний (99). 4.9.3. Эффективность и общая структура алгоритма Виюграда (101) Контрольные вопросы и задачи.......................................... 102 5. Реализация быстрых алгоритмов цифровой обработки в радиотехнических сис- темах................................................................ - ? 1 5.1. Структура системы и реализация алгоритма...................., 4 5.2. Декодирование корректирующих кодов при помощи быстрого преобразг- вания Адамара..................................................... >09 5.2.1. Алгоритм декодирования и структура декодера (109). 5.2.2. Про- граммная реализация (113) 5.3. Разделят мажоритарно-уплотненных сигналов при помощи диадной свертки............................................................ 121 5.4. Усеченные алгоритмы............................................123 Контрольные вопросы и задачи............................................129 Л итерату ра............................................................130 Учебное издание Лосев Владислав Валентинович МИКРОПРОЦЕССОРНЫЕ УСТРОЙСТВА ОБРАБОТКИ ИНФОРМАЦИИ АЛГОРИТМЫ ЦИФРОВОЙ ОБРАБОТКИ Заведующий редакцией А.Ф. Зиновьев. Редактор HJf. Латышеве. Младшие редакторы С4. Когадеева, А.М. Апеаь. Художественный редактор Ю.С Сергачев. Технический ре- дактор Н.А.Лебедевич. Корректоры Н.Б. Кучмель, Л.А. Шлыкович. Оператор А. И. Мам . ИБЮ2913 Подписано в печать с оригинала-макета 12.10.89 г. АТ 10459. Формат 60x90/16. Бумага кн.-журн. Гарнитура Пресс Роман. Печать офсетная. Усл. печ. л. 8,25. Усл. кр.-отт. 8,5 Уч.-иэд. л. 8,58 . Тираж 5000 экз. Заказ 5302. Цена 35 к. Издательство "Вышэйшая школа" Государственного комитета Белорусской ССР по печати. 220048, Минск, проспект Матерова, 11. Типография ’Победа”. 222310. Молодечно, ул. Тавлая, 11.

ЦОС 2004 (весна) Экзаменационные вопросы (Радиотехника) 1. Функциональная схема и показатели эффективности цифровой обработки сигналов. 2. Дискретное представление сигналов на конечных интервалах в виде функционального ряда. 3. Цифровые и дискретные сигналы, базисы дискретизации и восстановления, эффект наложения. 4. Теоремы отсчетов: для сигналов с ограниченным спектром и для сигналов с несушей частотой 5. Разновидности дискретных спектральных преобразований сигналов. Ряд Фурье. Дискретное во времени преобразование Фурье. Дискретное преобразование Фурье. Взвешенное ДПФ. Короткое ДПФ. G. Оптимальные базисы дискретного представления сигналов. 7. Z преобразование и его применение в цифровой обработки сигналов. 8. Описание цифровых схем с помошью уравнений конечных разностей и уравнений пространства состояний 9. Дискретные экспоненциальные функции, свойства матрицы ДЭФ 10. Дискретное преобразование Фурье, его свойства 11. Децимация цифрового сигнала, представление децимированного процесса во временной и спектральной областях. 12. Фильтр деппмаппн. 13. Интерполяция цифрового сигнала, представление процесса во временной и спектральной областях 14. Фильтр интерполяции. 15. Вычислительная сложность ДПФ. Определение быстрого преобразования Фурье (БПФ). Классификация алгоритмов БПФ. 1G. Быстрое преобразование Фурье по смешанному основанию 17. Алгоритм БПФ с прореживанием во времени. 18. .Алгоритм быстрого преобразования Фурье с прореживанием по частоте и конвейерная обработка сигналов 19. Двумерные н многомерные ДПФ: представление, вычисление, применение. 20. Вычисление спектра Фурье с помошью алгоритма ЛЧМ-Z преобразования 21. Методы вычисления обратного дискретного преобразования Фурье 22. Характеры конечных абелевых груши, их свойства п применение в цифровой обработке сигналов 23. Понятие дискретного сдвига: циклического, диадного. 24. Теоретико-числовые преобразования (ТЧП). условия существования обратного ТЧП 25. Теоретико-числовое преобразование Ферма, графы быстрого ТЧПФ 26. Сравнительная опенка вычислительной сложности алгоритмов дискретного преобразования Фурье 27. Функции Уолша-Адамара определение, свойства, применение. 28. Дискретное преобразование Уолша, его свойства, применение. 29. Энергетический н фазовый спектры Уолша, понятие частости. 30. Быстрое преобразование Уолша, его вычислительная сложность 31. Многоканальная корреляционная обработка сложных цифровых сигналов 32. Многоканальная спектрально-корреляционная опенка фазы псевдослучайной последовательности с помошью быстрого преобразования Уолша 33. Взаимосвязь спектров Уолша п Фурье, ядро Фурье 34. Сравнительный анализ преобразований Фурье н Уолша: инвариантность относительно оператора сдвига, вычислительная сложность. 35. Линейная свертка сигналов, дискретная модель, методы представления и вычисления
ЦОС 2004 (весна) Экзаменационные вопросы (Радиотехника) 36. Циклическая свертка дискретных сигналов, модель. методы представления и вычисления 37. Связь линейной и циклической сверток Вычисление линейной свертки через циклическую, возможность применения БПФ. 38. Длинная свертка, алгоритм вычисления (самостоятельная проработка). 39. Диадная свертка и корреляция, вычисление с помощью быстрого преобразования Уолша 40. Нерекурсивные и рекурсивные цифровые фильтры, представление с помощью уравнений в конечных разностях, Z преобразований. 41. Возможность реализации цифровых фильтров с помощью алгоритмов ДПФ 42. Цифровой спектральный анализ дискретных сигналов: виды и методы анализа. 43. Частотные характеристики анализатора спектра гармонических сигналов на основе ДПФ. эффект размытия (просачивания), методы повышения разрешающей способности. 44. Представление ДПФ в виде набора фильтров. 45. Применение и выбор весовых функций в алгоритмах цифровой обработки сигналов. 46. Спектральный анализ нестационарных дискретных сигналов с помощью короткого ДПФ 47. Понятие вейвлетного преобразования. 48. Преобразование Хаара. понятие QMF фильтра 49. Спектральный анализ случайных сигналов, коррелограммный метод вычисления спектральной плотности мощности дискретного сигнала. 50. Цифровой фильтр Винера 51. Адаптивный цифровой фильтр по методу наименьших квадратов 52. Теоремы о корреляции и свертки и их применение в цифровой обработки сигналов.
ЦОС’ (Радиотехника) ЭКЗАМЕНАЦИОННЫЕ ЗАДАЧИ Весна 2004 Задача 1 Вычислить с помошью алгоритма БПФ спектр дискретной последовательности х= [х(0)=2, х(1)=0. х(2)=-1, х(3)=0. х(4)=1. х(5)=0,х(6)=-4, х(7)=0]т Объяснить структуру спектра исходя из свойств дискретного преобразования Фурье. Задача 2 Вычислить дпадную корреляцию последовательностей х=|х(0)=.'..х(1)=....х(2)=....х(3)=...]т: у= |у(0)=..., у(1)=.... у(2)=..., у(3)=...|т Задача 3 Вычислить энергетический спектр Уолша -.Адамара дискретной последовательности х- [х(0)=.... х(1)=..., х(2)=.... х(3)=.... х(4)=.... х(5)=....х(6)=..., х(7)=...|т. Задача 4 Рекурсивный цифровой фильтр задан функцией rr/ А 0.44z-1 -0.36Z-2 +0.02Z-3 Н (Z) =-----:--------х------Т 1 + 0.4Z 1 +0.18z -0.2z 6 Синтезировать возможный алгоритм работы такого фильтра на основе ДПФ Задача 5 Построить диадные сдвиги последовательности х= [х(0)=.... х(1)=.... х(2)=.... х(3)=... х(4)=..„ х(5)=....х(6)=.... х(7)=...|т. для т = , . Вычислить спектры Уолша сдвинутых последовательностей и убедится в инвариантности спектров к дпадному сдвигу
Задача 6 Вычислить с помощью быстрого преобразования Уолша спектр Уолша-Адамара циклических сдвигов последовательности х=[х(0) = ...,х(1)=....х(2)=....х(3)=...]т: и убедится в непнварпантностп спектра к циклическому сдвигу. Задача 7 Вычислить спектр ДПФ действительной последовательности х= [х(0)= 1. х(1)=2, х(2)=2, х(3)= -1]т С помощью возможных алгоритмов обратного ДПФ восстановить сигнал Задача 8 Вычислить спектр последовательности х= [х(0)=.... х(1 )=.... х(2)=. ,.]т с помощью теоретико-числового преобразования Ферма. Задача 9 Вычислить циклическую свертку последовательностей с помощью быстрого теоретико-числового преобразования Ферма х= [х(0)=.... х( 1 )=.... х(2)=.... х(3)=... |т. h=[h(O)=....h(l) = ....h(2)=.... h(3)=..,]т Задача 10 Вычислить с помощью двумерного преобразования Фурье спектр матрицы данных. , р|0,0| =... 40.1|=„1 k|H|"2ll= .v|l.0| = ... ,|1.1|=... Задача 11 Используя обратное преобразование Ферма, восстановить сигнал по спектру ТЧП Хм= [Х(0)=....Х(1) = ....Х(2)=...]т. Задача 12 Нарисовать и пояснить граф прямого и варианты обратного быстрого преобразования Фурье для N =16.
Задача 13 Используя БПФ вычислить линейную свертку двух последовательностей х= |х(0)=.... х(1 )=.... х(2)=...|т. h=|h(O)=..„ h(l)=..,]т Задача 14 Нерекурсивный цифровой фильтр задан функцией 7/(z) = 1 - 0,4z-1 и- O.lz-2 - 0,4z-3 (условная запись) Синтезировать возможный алгоритм работы такого фильтра на основе ДПФ Задача 15 Вычислить с помощью быстоого преобразования Фурье спектр векторов xi=[x[i],i=0,...,N-1 р и х?=[{х|i] Wn}: i =0,l,...,N-l]T где {x[i]}=(x[0]=..., x[ 1]= , x[2]=..x[3]=...), r=.... - целое число: W=.exp(-j 2tt/N). N = 4.. Проанализировать результат исходя из свойств экспоненциальных функции Фурье. Задача 16 Спектр Фурье последовательности х= [х(0)=....х(1)=....х(2)=....х(3)=...]т. равен Х,.= [Х(0)=...Х(1)=....Х(2)=.....Х(3)=....Г. Используя понятие взаимосвязи спектров в различных ортогональных базисах, вычислить по значениям Хц спектр Уолша- Адамара последовательности х. Задача 17 Вычислить весовые коэффициенты {Л[п|} цифрового фильтра Винера = 1=0 Если корреляционная матрица принимаемого сигнала равна R = Вектор значений взаимно корреляционной функции принимаемого и полезного сигналов равен Р =
Задача 19 Псевдослучайная М последовательность длины N= 2к-1, к = 4 формируется с помошью регистра сдвига с обратными связями по полиному р(х) = х4+х3+1. Нарисовать схему оценки и построить алгоритм многоканальной корреляционной оценки фазы ПСП с помошью быстрого преобразования Уолша. Задача 20 Вычислить апериодическую свертку последовательностей х= [х(0)=.... х(1)=... х(2)=...]т. h=[h(O)=....h(l)=...|T с помошью преобразования Фурье.. Задача 21 Вычислить автокорреляционную функцию последовательности комплексных чисел Х= [x(O)=...+j.x(l)=...+j...x(2)=...+j...x(3)=...+j....]T. Задача 22 Вычислить периодическую функцию взаимной корреляции двух последовательностей х= [х(0)=..., х(1)=.... х(2)=..., х(3)=...]т h=[h(O)=.... 11(1)=.... h(2)=.... h(3)=...|т. используя алгоритмы БПФ Задача 23 Спектр Уолша-Адамара последовательности х= [х(0)= 1, х(1)=1, х(2)= -1. х(3)= -1 ]т. равен Хц=[Х(0)=......Х(1)=...Х(2)=....,Х(3)=...]т. Используя понятие взаимосвязи спектров в различных ортогональных базисах, вычислить по значениям Хп спектр Фурье последовательности х.
Задача 24 Синтезировать структуру вычислителя спектра Фурье последовательности х= [х(0)=..., х(1)=..., х(2)=.... х(3)=... х(4)=..., х(5)=..., х(6)=...]]т. N=7 по алгоритму ЛЧМ-Z преобразования Задача 25 Синтезировать структуру и рассчитать отктпк согласованного фильтра для обработки периодически повторяющейся последовательности х= [х(0)= 1, х(1)= -1, х(2)=1, х(3)= - 1]т, с помощью цппктпческоп свертки на основе быстрого преобразования Фурье. Задача 26 Синтезировать структуру и рассчитать отктпк согласованного фильтра для обработки последовательности х= |х(0)= . х(1)= ]т с помощью линейной свертки на основе быстрого преобразования Фурье Задача 27 Вычислить ДПФ с помощью алгоритма БПФ по смешанному основанию для последовательности х= [х(0)=.... х(1)=.... х(2) = .... х(3)=.... х(4)=..., х(5)=...]т.