Лайонс Р. Цифровая обработка сигналов. Второе издание. Пер. с англ. (2006) (1095937), страница 105
Текст из файла (страница 105)
Однако, при моделировании фильтра Герцеля, если отсчет индекса времени начинается с п = О для вычисления Х(т) фильтр должен обработать Ж+1 входной отсчет при х(Ат) = О. тппсснссть Г- х -1О т т -20 З Оа у о 3 -Ол -1 . 2нт)Н -зо .1 0 1 2 Дейстентепьная часть т-2 т-1 т т+1 т+2 Частота (ь) (а) Рис. 13.43. Фильтр Герцеля: (а) карта нулей и полюсов в к-плоскости; (Ь) АЧХ устойчивости, но в случае алгоритма Герцеля это не так.
Поскольку он обрабатывает блоки отсчетов сигнала длиной %+1 (Жобычно измеряется сотнями), фильтр остается устойчивым, т. к. его внутренние регистры данных тр(л — 1) и тт)(п — 2) обнуляются в начале обработки каждого нового блока данных. Частотная характеристика фильтра, показанная на рисунке 13.43 ())), содержит резонансный пик на относительной частоте 2лт/Ю, соответствующей частоте т1 утЖГц (здесь /' — частота дискретизации сигнала). 13.
17. Обна ение отдельного тона 323 13.17.2. Г9ример использования алгоритма Герцеля Используем алгоритм Герцеля для вычисления модуля спектра тона частотой /еопв = 30 кГц из примера, показанного на рисунке 13.41. При/а = 12В кГц и У = 64 переменная т принимает значение т =/( па/(/з/М) - (64)(30) хГц/128кГц = 15. (13-82) Структура фильтра Герцеля и необходимые вычисления приведены на рисунке 13.44.
Полезно заметить, что при вычислении мощности Х( 15), )Х(15))2, окончательных операций с комплексными числами можно избежать, вычисляя: )Х(т))2 = ~(М-1))2- = в(1з1 — 1)2+ в(1)1 — 2)2 — в(1(1 — 1)в(1(1 — 2)(2соз(2пт/74)') (13-83) В нашем примере (13-83) приобретает вид ~Х(15) Р = ~у(63) Р - в(63)2 + в(62)2 — в(63)в(62)~2соз(2л 15/64)) (13-84) и) Коэффициенты 2оое(2 »16)64) = 0.196, аЪт)м — „Везя(564 ез( еэ -0 096 ь)0996 Выпопнить Что мы делаем дпя эычиммння )Х((5)( Выполнить эти вычиопэни» 54 Раза Вы»о»нить эти вычисления 55 Раз о я(55)"-О на в»оде Выполнить Что мы делаем эти зычно»виня один Раз дпя вычимзизия Х(15) Рис.
13.44. Фильтр, его коэффициенты и вычисления, необходимые для обнаружения тона частотой 30 кгц В типовых приложениях для минимизации утечки спектра мы выбираем ()1 так, что входная последовательность содержит целое количество периодов тона, который мы пытаемся обнаружить. сможет быть любым целым, и чем больше У, тем выше разрешение по частоте и меньше влияние шума. Однако увеличение Ж приводит к росту объема вычислений. Следует заметить, что в то время как обычно в литературе при описании алгоритма Герцеля утверждается, что переменная т, определяющая частоту резонанса, должна принимать только целые значения (что делает фильтр Герцеля эквивалентом бина Лг-точечного ДПФ), на самом деле т на рисунке 13.42 и в (13-79) может принимать любое значение в диапазоне от 0 до (т) — 1, обеспечивая полный контроль над резонансной частотой фильтра.
Б24 Глава 13. Маленькие кит ости ци оаой об аботки сигналов 13.17.3. Преимущества алгоритма Герцелв перед ВПФ Ниже дартным перечислены некоторые преимущества алгоритма Герцеля перед стан- БПФ по основанию 2 при обнаружении отдельного тона: И может не быть целой степенью двух.
Резонансная частота может быть любой в диапазоне от нуля до/ Гц. Объем памяти коэффициентов фильтра меньше, чем объем памяти по- ворачивающих множителей. Если используется (13-83), то необходимо хранить только один коэффициент. Не требуется накопление блока данных до начала вычисления (как в случае БПФ). Обработка может начинаться с приходом первого вход- ного отсчета.
Алгоритм Герцеля не требует бит-реверсивной сортировки. Если алгоритм Герцеля реализуется М раз для обнаружение М разных тонов, то он более эффективен (требует меньше умножений), чем БПФ, при М < 1о82Ж. Объемы требуемых вычислений для обнаружения одного тона (для действительной входной последовательности х(п)) приведены в табли- це 13.4. таблица 13.4.
Сравнение методов вычисления одного бина ДПФ по объему вычислений Действительные умножение Действительные сложения Метод Один бин ДПФ БПФ Фильтр Герцеля 4И 2МоО,И И+2 2И Иод И 2И+ 1 И последнее замечание: хотя алгоритм Герцеля реализуется в виде структуры фильтра с комплексным коэффициентом, он не используется как обычный фильтр, когда мы запоминаем все выходные отсчеты. В случае аглоритма Герцеля мы сохраняем только каждый И-й или (И+1)-й выходной отсчет. Поэтому АЧХ фильтра Герцеля, если рассматривать его как черный ящик, эквивалентна характеристике вида ~з(п(х)/х( одного бина Ж-точечного ДПФ, часть которой показана на рисунке 13А5. 13.18.
Скользящее ДПФ Описанный выше алгоритм Герцеля позволяет вычислить комплексное значение одного бина ДПФ по Уотсчетам входного сигнала. В этом разделе мы описываем алгоритм скользяи1егоДПФ, который выдает значения отсчетов в частотной области с той же частотой, с какой приходят входные отсчеты, и требует меныпе вычислений, чем алгоритм Герцеля. В тех приложениях, где обновление спектра должно производиться с каждым новым входным отсчетом или несколькими отсчетами, скользящее ДПФ проще с точки зрения объема вычислений, чем традиционное БПФ по основанию 2. 13. 18. Скользящее 17Ф ио дв -го Частота Рис.
13.46. АЧХ фильтра Герцеля 13.18.1. Алгоритм скользящего ДПФ Алгоритм скользящего ДПФ (СДПФ) вычисляет значение одного бина М-точечного ДПФ по отсчетам входного сигнала из скользящего окна. Для т-го бина У-точечного ДПФ, СДПФ вычисляет 11'-1 Х'п(д) = ~~ х(п)е РиипЬЖ п=О (13-85) Давайте разберем подробнее обозначение Хоп(д). Обычно, как в главе 3, в качестве индекса отсчетов ДПФ мы использовали частотный индекс т. В (13-85) в качестве индекса отсчета ДПФ используется временной индекс д - О, 1, 2, 3, ..., так что первый отсчет т-го бина СДПФ есть Хоп(0), второй отсчет СДПФ есть Хоп(1) и т.д. Пример окна анализа СДПФ показан на рисунке 13.46 (а), где Х (0) вычисляется для М = 16 отсчетов х(0) — х(15).
Затем временное окно сдвигается на один отсчет вперед, как на рисунке 13.46 (Ъ), и мы вычисляем новый отсчет Хоп(1). Ценное свойство этого процесса состоит в том, что мы можем эффективно вычислять каждый новый отсчет ДПФ, используя результат предыдущего ДПФ. Постепенное смещение окна анализа во времени дало этому алгоритму название скользящее ДПФ или ДПФ по скользящему окну. Математическое выражение для СДПФ мы можем вывести следующим образом: стандартное выражение А1-точечного ДПФ для т-го бина ДПФ д-й последовательности х(д), х(д+1), ..., х(д+У-1) имеет вид й1-1 Хоп(д) = ~~> х(п + д)е Рипт/~ (13-86) и=О Положив в (13-87) р - и+1, мы можем записать М Л '(д+1) = ~> х(р+ д)е-Рп(Р— 1)пдмс (13-88) (Переменная т представляет частотный индекс, т = О, 1, 2, ..., Ф вЂ” 1.) Аналогич- но, выражение для следующего ДПФ, (д+1), вычисляемого по отсчетам х(д+1), х(д+2), ..., х(д+Ю), имеет вид М-1 Хоп(д+1) - ~, х(и+ д+ 1)е Р ппО1У, (13-87) и-О 626 Глава 13.
Маленькие хит сти и одой об вботки сигналов Окно для ХЯ(0) Время — Я «(О) Сдвннугав окно дяя Х"(1) (Ь) 0 «(О) «(1) Время — Я «(10) Рис. 13.46. Окно анализа для двух 16-точечных ДПФ: (а) отсчеты данных для первого вычисления ДПФ; (Щ отсчеты данных для второго вычисления ДПФ Изменив пределы суммирования в (13-88) и включив в выражение соответствующие члены (вычитание члена с р - 0 и прибавление члена с р = л)) для компенсации измененных пределов суммирования, мы можем записать .л( — 1 Хкя(<у ау) = Д' х(р + «у)е- 12л(р-1)т/М~ х(гу)е-)2л(-1)я/ь( в р-0 (13-89) + х(1у + ))у)е 12лР' 1)гя/д(. Вынося за скобку общий множитель (е)2дм/д(), записываем Д(-1 Хнн(ку +1) = е/2ди/д( (~ ~к х(р + д)е 12Я)нн/д(~ — х(ку) + р-а + Х(ку + у(у) Е 12™/л)у, (13-90) Заметив, что сумма в квадратных скобках равна предыдущему отсчету Хтн(й) в (13-86), и е 12дм = 1, мы можем записать искомое рекурсивное выражение для скользящего Ут'-точечного ДПФ в виде Хтн(0+1) - е)2вгн/д((Хкн(су) е х(«у+а) — х(ку)], (13-91) Хон(1) = е)2дм/д'(Хм(0) + х(20) — х(0)] .
(13-92) где Хнн(1уч-1) —. новый отсчет бина ДПФ, а Хи(д) — предыдущий отсчет бина ДПФ. Верхний индекс т напоминает нам, что отсчеты спектра Х'"(д) относятся к т-му бину ДПФ. Чтобы раскрыть сущность индексирования в (13-91), подставим в зто выражение некоторые числа. Если У = 20„то для вычисления первого резуяьтата, Хнн(0), требуются 20 отсчетов во временной области (х(0) — х(19)).
Тогда вычисление Хтн(1) выполняется по формуле 527 13. 18, Скользящее ДПФ Благодаря индексированию во временной области, использованному нами при выводе алгоритма, выражение (13-92), как кажется, использует для вычисления Хтн(1) будущий отсчет х(20). Без потери общности мы можем модифицировать индексы времени в (13-91) так, что входные отсчеты х(п) и выходные отсчеты Аоа(ту) будут использовать одни и те же значения индекса времени и.
Такая модификация приводит наше уравнение СДПФ к виду Хтп(п) = еРкпт/У[Хтп(п — 1) + х(п) — х(п — Ж)[ . (13-93) В (13-93) проявляется ценность данного алгоритма для вычисления спектра в реальном масштабе времени. Мы вычисляем Хат(п), вычитая отсчет х(п — И) и прибавляя текущий отсчет х(п) к предыдущему значению Хтн(п — 1), а затем сдвигая результат по фазе. Таким образом, СДПФ требует только двух действительных сложений и одного комплексного умножения на выходной отсчет.
Совсем неплохо! Формула (13-93) приводит к реализации однобинового СДПФ в виде фильтра, показанного на рисунке 13.47. Гребенка Комплексный резонатор Рис. 13.47. Структура фильтра однобинового скользящего ДПФ Однобиновое СДПФ реализуется в виде БИХ-фильтра, состоящего из гребенчатого фильтра и комплексного резонатора, включенных последовательно.