Сергиенко А.Б. Цифровая обработка сигналов (2002) (1095939), страница 48
Текст из файла (страница 48)
Число операций можно сократить, умножив числитель и знаменатель функции передачи на (1 — е зыбка '), перейдя за счет этого к фильтру второго порядка: 1-ехр(-~'2кл/М) э ' 1- ехр(-/2лп//т) э ' (1-ехр(/2кп/л/)э ')(1 — ехр(-/2кп/Ж)с ') 1-2соз(2кл/М)с '+- ' Рекурсивная часть получившегося фильтра имеет вещественные коэффициенты, к тому же коэффициент при - ' равен единице. Поэтому при обработке каждого Взаимосвязь ДПФ и фильтрации входного отсчета в рекурсивной ветви фильтра необходимо выполнить всего одно вещественное умножение и два вещественных сложения.
В рекурсивной ветви фильтра комплексные коэффициенты исчезли, но они, естественно, появились в числителе функции передачи, то есть в нерекурсивной части фильтра. Однако если реализовать фильтр в канонической форме (см. рис. 4.6 в главе 4), то расчеты будут выполняться сначала в рекурсивной ветви, а затем в нерекурсивной. Поскольку нас интересует только конечный результат вычисления спектрального отсчета, комплексное умножение и сложение в нерекурсивной ветви должны быть выполнены только один раз — для получения окончательного результата.
Полученная структура фильтра показана на рнс. 5.7. Данный способ вычисления отдельного спектрального отсчета называется алгоритмом Герцелл (Ноегтхе)) [7]. Рис. В.т. Алгоритм Герцеля Для вычисления спектрального отсчета по алгоритму Герцеля требуется У+ 4 вешественных умножений и 2лг+ 3 вещественных сложений. Если число вычисляемых спектральных отсчетов невелико, этот алгоритм оказывается эффективнее, чем расчет всех спектральных отсчетов с помощью БПФ. Дискретная фильтрация с помощью ДПФ Ранее в этой главе мы представили ДПФ как дискретную фильтрацию.
Теперь же займемся обратной задачей — реализацией фильтрации с помощью ДПФ. Рассматривая свойства ДПФ, мы видели, что перемножение дискретных спектров соответствует круговой свертке периодических последовательностей, в то время как выходной сигнал дискретного фильтра представляет собой линейную свертку последовательностей конечной длины — входного сигнала и импульсной характеристики фильтра (см. раздел вСпособы описания дискретных систем» главы 4). Однако с помощью ДПФ можно получить и линейную свертку, для этого необходимо добавить к каждой из сворачиваемых последовательностей нулевые отсчеты в количестве, не меньшем, чем длина второй последовательности минус единица. Длины двух последовательностей после этого должны стать одинаковыми и равными как минимум длине линейной свертки исходных последовательностей. Круговая свертка таких дополненных нулями последовательностей совпадает с линейной сверткой исходных последовательностей.
266 Глава 5. Спектральный анализ Исходные сигналы хт: Вычисление линейной свертки у(0) - Ьг-2 у(1)=13ь22 7 у(2) 14+23+42 18 у(3)=15+24+43+82 41 1 2 4 8 у(4) 25+44+83 50 5 4 3 2 1 2 4 8 5 4 3 2 "Ч~) у(5) 45+84=52 Результат 8 у(6) 8.5 = 40 5 4 3 2 У(х): 2 7 18 41 50 52 40 Вычисление круговой свертки у(0) 12+25+44+83 52 у(!) 13+22+45+84 59 у(2) 14чгз+42ч85-58 Результат у(3) 15+24+43+82=41 У(4): 52 59 58 41 Рис. В.В. Расчет линейной (сверху) и круговой (снизу) свертки дискретных последовательностей Поясним сказанное на простом примере. Пусть сворачиваемые последовательности состоят из четырех элементов: хт - (1, 2, 4, 8~ и хг - (2, 3, 4, 5). Линейная свертка этих последовательностей рассчитывается согласно формуле (4.3).
Процесс расчета показан на рис. 5.8, сверху. 267 Взаимосвязь ДПФ и фильтрации Круговая свертка этих же последовательностей рассчитывается по формуле (5.9). Процесс расчета показан на рис. 5.8, снизу. Результат, как видите, совсем другой. Но если мы дополним каждую из последовательностей тремя нулями, чтобы их длины стали равны семи (это длина их линейной свертки), и вычислим круговую свертку еще раз, то получим результат линейной свертки, приведенный ранее (рис. 5.9).
Исходные сигналы х1'. хг'. Вычисление круговой свертки у(0) = ! 2 = 2 у(1)= 1З+гг=т у(г)=14+23'42=18 у(3)=15+24+43+82 41 у(4)=25+44+83=50 у(5) 45+84=52 Результат у(6) 8 5 = 40 у(ь): Рис. 6.9. Круговая свертка последовательностей, дополненных нулями, совпадает с их линейной сверткой Поскольку ДПФ линейной свертки равно произведению ДПФ сворачиваемых последовательностей, мы получаем следующий алгоритм фильтрации в частотной области. 1, Последовательность отсчетов входного сигнала и импульсная характеристика фильтра дополняются нулями так, чтобы длины последовательностей стали равными и не меньшими, чем сумма длин исходных последовательностей минус единица. 2. Вычисляются ДПФ дополненных нулями последовательностей.
Глава З. Спектральный анализ 3. Вычисленные ДПФ поэлементно перемножаются. 4. Вычисляется обратное ДПФ от результата перемножения. Реализуем обычную линейную свертку и приведенный алгоритм средствамн МАТ1.АВ. Сначала задаем исходные последовательности: » х1 - [1 2 4 8]; > х2 - [2 3 4 5]; Теперь вычислим линейную свертку, чтобы затем было с чем сравнивать результаты фильтрации с помощью ДПФ: » у - сопч(х1. х2) У 2 7 18 41 50 52 40 Далее реализуем рассмотренный алгоритм (забегая вперед, скажем, что ДПФ в МАТ1.АВ вычисляется по быстрому алгоритму с помощью функции Гтт; описание данной функции будет приведено в этой главе далее).
Дополнять векторы нулями в явном виде не обязательно — это сделает функция Гтт при принудительном задании размерности преобразования: » Х1 - 771(х1. 8): » Х2 - 771(х2, 8): » У - Х1 .* Х2: » у ЛГГ - тГтг(Ч) у ГГ1- Со)ивпэ 1 спгоО9й б 2.0000 7.0000 18.0000 41.0000 50.0000 52.0000 СО]Овл5 7 ХЛГОО9п 8 40.0000 0.0000 Как видите, результат в точности соответствует полученному выше. Количество нулей, добавляемых к последовательностям, может быть больше минимально необходимого — при этом лишь появится соответствующее число краевых нулей в вычисленной свертке (именно зто было проделано в только что приведенном примере). Таким образом, мы всегда можем выбрать количество нулей таким, чтобы длина получившейся последовательности была равна степени двойки, и использовать эффективный алгоритм БПФ. Это дает возможность существенно сократить число операций по сравнению с вычислением свертки обычным методом.
Недостатком описанного метода фильтрации является то, что входной сигнал обрабатывается сразу целиком, то есть расчеты можно начать только но окончании входного сигнала. Однако на практике в большинстве случаев необходимо обрабатывать отсчеты входного сигнала по мере их поступления. Возможным решением проблемы является блочная, или секционная, обработка входного сигнала. При этом последовательность входных отсчетов делится на блоки (секции) заданного размера, и эти блоки подвергаются фильтрации в частотной области по отдельности.
При выборе размера блока необходимо реализовать компромисс между числом операций (чем больше размер блока, тем эффективнее Взаимосвязь ДПФ и фильтрации использование алгоритма БПФ) и задержкой получения выходного сигнала (чем меньше размер блока, тем меньше эта задержка). При использовании блочной фильтрации необходимо разобраться в идее объединения выходных сигналов, полученных при обработке отдельных блоков. Рассмотрим ее на конкретном примере. Пусть входной сигнал х и импульсная характеристика фильтра П имеют следующий вид: »П [142): » х = (1 2 3 4 5 4 3 3 2 2 1 1): Прежде всего вычислим линейную свертку, чтобы знать, что должно получиться: » у - сопч(х. П) У = Со)ивпз 1 Сйгоцдп 10 1 б 13 20 27 32 29 23 20 16 Со)ивпз 11 1ПгоцдП 14 13 9 б 2 Теперь разобьем входной сигнал на два блока по 6 отсчетов и обработаем их по отдельности: » х1 = х(1:6): » х2 - х(7:епсО; » у1 - сапч(х1, Ы у1 = 1 6 13 20 27 32 26 8 '» у2 = сопч(х2.
Ы уг- 3 15 20 16 13 9 6 2 Анализируя полученные результаты, мы заметим, что первые шесть отсчетов вектора у1 совпадают с первыми шестью элементами полного выходного сигнала у. Последние шесть отсчетов вектора у2, в свою очередь, совпадают с шестью последними элементами полного выходного сигнала у. Оставшиеся два «средних» элемента (7-й и 8-й) вектора у могут быть получены суммированием двух последних элементов вектора у1 с двумя первыми элементами вектора у2. » у ас(с) = (у1(1:6) у1(7:8)+у2(1:2) у2(3:епс()] у ас(с(- Со)оввз 1 1ПгоодП 10 1 6 13 20 27 32 29 23 20 16 Со) цвпз 11 1Пгоцдп 14 13 9 б 2 Результат совпадает с полученным ранее. Итак, в общем случае фильтрация организуется следующим образом. 1. Входной сигнал разбивается на блоки длиной Аг отсчетов.
2. Каждый блок фильтруется независимо. Длина выходного сигнала составляет Ас+ М вЂ” 1 отсчетов, где М вЂ” длина импульсной характеристики фильтра. 270 Глава З. Слвктрвльный анализ Для повышения эффективности фильтрация осуществляется в частотной области с использованием БПФ. 3, Блоки выходного сигнала объединяются, при этом их крайние М вЂ” 1 отсчетов перекрываются и суммируются. Данный алгоритм называется методом перек)пктпия с сульнировакием (очег1ар-а<И).
Другой возможный вариант — перекрытие с накоплением (очег1ар-заче). При этом входной сигнал разбивается на блоки, перекрывающиеся по краям на М вЂ” 1 отсчетов, а у выходного сигнала для каждого блока отбрасываются крайние «хвосты» по М вЂ” 1 отсчетов с каждой стороны. После этого выходные блоки объединяются без перекрытия. Растекание спектра Как уже говорилось, при ДПФ предполагается, что последовательность отсчетов анализируемого сигнала является периодически продолженной вперед и назад во времени.
При этом, если значения начальных и конечных отсчетов сигнала сильно различаются, при периодическом повторении на стыках сегментов возникают скачки, из-за которых спектр сигнала расширяется. Это явление, называемое растеканием спектра (зрессгцш 1еаЬйе), можно наглядно проиллюстрировать на простейшем примере вычисления спектра дискретного гармонического сигнала з(Й) - А соз(ойТ + ф). (5.18) Если анализируемая последовательность содержит целое число периодов гармо- нического сигнала (то есть если отношение Хи 7/(2п) является целым числом), то периодически продолженный сигнал представляет собой гармонические коле- бания (без скачков), а подстановка (5.18) в формулу ДПФ (5.3) показывает, что вычисленное ДП Ф содержит лишь два спектральных отсчета, отличных от нуля: АУ, взТ вЂ” е", п= — У, 2 2п Х( ~', п = 1- — )т' п) = — е 2 О, в остальных едучах Таким образом, аналогично спектру непрерывного гармонического сигнала, ДПФ отличается от нуля всего для двух значений п.
Однако если отношение ХвТ/(2к) ~е является целым числом, спектр оказывается значительно более богатым, Этому можно дать простое объяснение: ведь в данном случае периодически продолженная последовательность уже не может являться набором отсчетов непрерывной синусоиды. Поэтому, в полном соответствии со свойствами преобразования Фурье, в спектре появляются дополнительные составляющие. Построим графики дискретных сигналов, содержащих по 16 отсчетов гармонических сигналов с периодами, равными 4 отсчетам (периодически продолженный сигнал является периодическим, рис.