Обновления
Хрущовки
Архитектура Румынии
Венецианское Биеннале
Столица Грац
Дом над водопадом
Защита зданий от атмосферных осадков
Краковские тенденции
Легендарный город Севастополь
Новый Париж Миттерана
Парадоксы Советской архитектуры
Реконструкция города Фрунзе
Реконструкция столицы Узбекистана
Софиевка - природа и искусство
Строительство по американски
Строительтво в Чикаго
Тектоника здания
Австрийская архитектура
Постмодернизм в Польше
Промышленное строительство
Строительство в Японии
Далее
|
Главная -> Вычислительные алгоритмы жений иа каждые пять выходных точек (1,6 умножений и 6 сложений на одну точку на выходе). Теперь рассмотрим такую же задачу для секции прореживающего фильтра с пятью отводами и тремя выходными отсчетами. Алгоритм для такой секции можно записать равенством
в этом алгоритме с помощью трех дополнительных сложений сочетаются алгоритмы 3-фильтр-секции и (3, 2)-фильтр-секции, так что в общей сложности этот алгоритм прореживающей фильтрации содержит девять умножений и 26 сложений. Посмотрим, какие алгоритмы получаются из построенных алгоритмов при их трансформации. Мы увидим, что в обоих случаях это приведет к алгоритмам интерполирующих фильтров. Трансформация выписанного выше алгоритма линейной свертки дается равенством
Алгоритм записан в виде вычисления 3-точечной линейной свертки 2-точечной линейной свертки и трех дополнительных сложении сочетающих результаты этих сверток. Таким образом, paccMq тренный алгоритм прореживающей фильтрации содержит восем умножений и 26 сложений на каждые пять точек на выходе. Есл этот алгоритм использовать в методе перекрытия с суммиров нием, то для сочетания секций, каждая из которых содержит пят входных точек, потребуется еще четыре дополнительных сложи ния. Такой алгоритм будет содержать восемь умножений и 30 слЙ За.ченим теперь {е , е, е, е, на (Sj, s s Sj, Sj) и fi, /2, /3, /4) на (dg, d di, 4, da). Тогда gj g, 0 0 0 81 Sj 0 0 0 So Si 8, 0 ,0 0 Sl 8, 0 [0 0 g 81 8 d, 0 0 d. 0 rf 0 0 0 (/0 d 0 d, 0 rf, 0 d, 0 d, 0 d, Мы получили уравнения для интерполирующего фильтра, поскольку нулю теперь равны входные точки. Таким образом, применение трансформационного принципа к прореживающей в отношении 2 : 1 5-фильтр-секции привело к интерполирующей в огношении 2 : 1 5-фильтр-секции. Алгоритм содержит восемь у.чножений. 9.5. Фильтры прореживания и итерполяции Фильтром прореживания называется КИО-фильтр, которь вычисляет только каждый г-й выходной отсчет; часто г равно или 3. Все прочие выходные отсчеты нежелательны и п(< давляются, даже если они вычисляются. Можно надеяться существование более простых алгоритмов, не вычисляющих н нужные выходные точки. Фильтр интерполяции действует npq тивоположным образом: отсчеты на выходе такого фильтра фо± мируются с большей скоростью, чем на входе. Прореживающий и интерполирующий фильтры иногда называются фильтроЯ с подавлением и фильтром с восстановлением соответственно. Конструкции прореживающего и интерполирующего КИС, фильтров аналогичны общим конструкциям КИО-фильтров. ОА нако, их специфические особенности можно использовать дл построения более эффективных алгоритмов. В первом случа более эффективные алгоритмы можно строить из-за выбрасывав мых выходных точек, а во втором - из-за выбрасываемых вxo ных точек. Для фильтров прореживания алгоритмы линейной свертки алгоритмы секционной фильтрации не связаны между собо описываемым теоремой 9.2.1 трансформационным принциполС Трансформационный принцип преобразует алгоритм свертки дл прореживающего фильтра в алгоритм секционной фильтрация для интерполирующего фильтра. Рассмотрим алгоритм линейной свертки для прореживающее в отношении 2 : 1 фильтра с пятью отводами, на вход котороп подается 5-точечный вектор. Необходимый выходной вект дается вычислением 326 Гл, 9. Архитектура фильтров и Таким же образом, алгоритм прореживающей 5-фильтр-сек ции, записываемый равенством 9,6. Автокорреляция н взаимная корреляция So g, 8: g, О О О О О g, g, g, g, 0 0 0 0 0 может быть трансформирован к алгорит.\1у
Этот алгоритм является алгоритмом линейной свертки, входны* элементы в которой через один равны нулю, - алгоритм интер полирующей фильтрации, содержащий девять умножений. Следующим рассмотрим (на примере) алгоритм симметричной прореживающей фильтрации. Построим алгоритм сим.четрическогс прореживающего в отношении 2 : 1 15-фильтра. Как и в предыду щем примере, разобьем задачу на симметрическую линейнук 8-точечную свертку и симметрическую линейную 7-точечнук* свертку. Согласно теореме 9.4.3 первая из них может быть вы числена с помощью алгоритма фильтрации 8-точечного вход в фильтре с 7 отводами. Для вычисления обеих линейных симметрических свертоь воспользуемся разработанным в предыдущем параграфе методом! Степень многочлена т (х) = X (х - 1) (X -г 1){х- оо) (х= + 1) (х= + + X + 1) (х - X + I) {x + l равна 14 и, следовательно, им можно воспользоваться для по строения алгоритма линейной фильтрации 8-точечного входи в фи.тьтре с 7 отводами. В разд. 9.4 было опреде.тено число умно жени и, связанных с использованием в качестве модуля каждогч из указанных симметрических многочленов. Это приводит к об щему числу умножений в алгоритме, равному 16. Аналогично, выбрасывая один линейный мнржитель, получаем алгоритм фильтрации 7-точечного входа в фильтре с 7 отводами, содержащий 15 умножений. Следовательно, для решения рассматриваемой задачи можно построить алгоритм, содержащий 31 умножение. 9.6. Автокорреляция и взаимная корреляция Выражение вида JV-I / i = S gi+jdft. 4=1) i = О.....L+N-2. называемое корреляцией, если g совпадает с d, и взаимной корреляцией, если g и d различны, очень тесно связано со сверткой. Его можно сделать похожим на свертку, если просто прочитать одну из последовательностей в обратном порядке. В принципе, любой из рассмотренных нами методов вычисления линейной свертки годится для вычисления корреляции. Тем не менее, имеется одно практически существенное различие. Длина КИО-фильтра обычно намного меньше, чем длина фильтруемой последовательности данных, а входящий в корреляцию фильтр g (х) на самом деле представляет собой другую последовательность данных, длина которой примерно равна длине последовательности, обозначаемой многочленом d (х); часто длина записи обеих последовательностей неопределена и весьма велика - возможно, несколько сотен отсчетов. Хорошие алгоритмы разбивают g и d на секции. Мы начнем рассмотрение с вычисления автокорреляции 1 = 0.....п/2 - 1, возможно, опуская в сумме деление на N. В интересующих нас задачах длина N блока данных значительно больше длины п/2 блока выходных данных, так что использование для вычислений преобразования Фурье длины N было бы слишком расточительным. Разобьем сумму на части по п слагаемых в каждой из частей, и будем решать задачу, используя преобразование Фурье длины п. Запишем 2 dk.{.[n/2dk+[n/2+tt i = 0, i = 0, n/2-I, 1-1, векопягШ 0 бР - <= елась к вычисление вектора П) для / = О.....L - 1, который мы будем находить используя БПФ, и подходящую циклическую свертку. * Определим два вида блоков длины л - один состоящий пол ностью из данных, и второй, состоящий наполовину из нулей Позже будет показано, как избегать блоков первого вида Пусть Тогда (О I <ii+W2, i = О, ..., п/2 - 1, ~ i = n/2, п- 1, = 0.....л-1. = Д d*ff4+(, < = О.....п/2 - 1. Пусть D ) и ОС) обозначают векторы, полученные преобразова. ниемФурье из векторов d<i и g ). Тогда согласно задаче 1.10. ре*ляции РР Фурье циклической кор- = ( = 0.....п-I, и половина из этих компонент дает искомые нами величины = -Ls< , , = 0, л/2-1. Таким образом, сначала мы вычисляем вектор S.= soi Gt , А = 0.....л-1, а затем вычисляем его обратное преобразование Фурье s и пола; гаем Ti = (I/iV) s, для < = О, п/2 - 1. Для завершения описания алгоритма покажем, как исключит некоторые вычисления. Вместо использования БПФ для вычисле ния воспользуемся формулой Эта формула является прямым следствием свойства задержки дл преобразования Фурье; умножение в частотной области иа в соответствует временному сдвигу на Ь позиций. Если b = n/is то это соответствует умножению D на (-1). Во временн6 области происходит сдвиг ненулевых позиций вектора d<+i) в нулевые позиции вектора d*; во временной области сумма равна gC*, II, следовательно, в частотной области сумма равна GC). Таким образом, это вычисление можно записать в виде S.= EDi [Dl4(~l)Oi+ ]- Алгоритм завершается вычислением обратного преобразования Фурье. Блок-схема вычислений в окончательном виде показана на рис. 9.6. Отметим, что каждый цикл содержит только один БПФ-алгоритм, хотя в начальной точке и в последней точке алгоритма добавляется еще по одному БПФ. Таким образом, хотя вычисление одной циклической свертки содержит три преобразования Фурье, мы построили алгоритм, который в среднем на цикл содержит только одно БПФ, Все L циклов на рисунке показаны одинаковыми, хотя в последнем из них вычисляется преобразование Фурье для нулевого вектора, добавленного в конец последовательности данных; это преобразование Фурье можно исключить, модифицировав последний цикл вычислений. Аналогичный метод применим и к задаче вычисления взаимной корреляции. Обе последовательности данных разобьем на отрезки, комбинируя которые в частотной области, мы уменьшаем число необходимых обратных преобразований Фурье. Теперь на одном очень подробном примере покажем, как можно использовать другие методы в рассматриваемом способе вычисления корреляций. Запишем корреляцию = d+tgh в матричном виде. ,1 ll-J где г намного больше п. Мы опишем структуру алгоритма для частного случая л = 120 и г = 10 ООО. Основываясь на некотором опыте, примем произвольное решение разбить последовательность из 120 выходных точек на четыре пакета по 30 выходных точек в каждом, и организуем вычисления, опираясь на 60-точечный БПФ-алгоритм Винограда.
|