Привет, сегодня поговорим про динамический пересчет спектральных отсчетов на каждом такте дискретизации, обещаю рассказать все что знаю. Для того чтобы лучше понимать что такое
динамический пересчет спектральных отсчетов на каждом такте дискретизации, модифицированный алгоритм герцеля , настоятельно рекомендую прочитать все из категории Цифровая обработка сигналов.
В данной статье мы рассмотрим довольно специфическую задачу анализа изменения заданного спектрального отсчета во времени. Такая задача актуальна при декодировании DTMF сигнала или при контроле во времени заданного набора кратных гармоник, когда использование алгоритмов БПФ нецелесообразно ввиду малого количества спектральный отсчетов.
Постановка задачи
Скажем несколько слов про обозначения, которые будут применяться в данной статье. Отсчеты исходного дискретного сигнала (в общем случае комплексного) мы будем обозначать малой
,
– номер отсчета. Спектральные отсчеты сигнала
мы будем обозначать заглавной буквой
,
– номер спектрального отсчета соответствующий частоте
,
– частота дискретизации,
– количество точек ДПФ.
На рисунке 1 показана трехмерная картина. По вертикальной оси мы имеем значения спектра сигнала
– номер спектрального отсчета . С течением времени мы получаем все новые и новые отсчеты и спектр
меняется. Так на рисунке 1 синим показано изменение спектра
для трех временных срезов соответствующих номерам отсчетов сигнала
.
Рисунок 1: Трехмерное представления спектра сигнала изменяющегося во времени
Тогда для какого-то конкретного значения спектрального отсчета
мы можем получить частотный срез
(показан красным) из которого можем проанализировать амплитуду и фазу спектрального отсчета
во времени. В данной статье мы будем заниматься анализом изменения заданного спектрального отсчета во времени при поступлении новых отсчетов сигнала.
Для декодирования DTMF широкое распространение получил алгоритм Герцеля (Goertzel algorithm), который позволил нам рассчитать заданный спектральный отсчет при помощи рекуррентного соотношения, которое мы представляли в виде БИХ — фильтра. Но мы говорили, что при использовании алгоритма Герцеля все промежуточные результаты рекуррентной формулы нас не интересуют, поэтому значение спектрального отсчета мы не могли получить не чаще чем через каждые
отсчетов. Мы же будем рассматривать алгоритм, который позволяет вести пересчет спектра «на лету», т. е. при поступлении каждого очередного отсчета. Мы увидим, что полученный алгоритм будет представлять собой модификацию алгоритма Герцеля для пересчета спектрального отсчета на каждом такте дискретизации
Рассмотрим дискретное преобразование Фурье (ДПФ), которое задается выражением:
Для расчета значения ДПФ для одного фиксированного спектрального отсчета (одной гармоники) с номером
выражение ДПФ принимает вид
Вычисления одной фиксированной гармоники с номером
можно осуществить при помощи структуры показанной на рисунке 2. По сути (2) это выход КИХ фильтра.
Рисунок 2: Вычисление фиксированной гармоники
Таким образом для вычисления одного спектрального отсчета требуется
комплексных умножений и сложений.
Пусть отсчеты входного сигнала
поступают в буфер длиной
и при поступлении каждого нового отсчета
необходимо пересчитать значение фиксированной гармоники как это показано на рисунке 3. Другими словами при поступлении очередного отсчета буфер сдвигается и выход КИХ фильтра изменяется.
Рисунок 3: Пересчет фиксированной гармоники за интервал дискретизации
На рисунке 3 обозначены значения гармоники
на предыдущем такте, т. е. при поступлении отсчета исходного сигнала
:
и
на текущем такте при поступлении отсчета исходного сигнала
.
За интервал дискретизации необходимо выполнить
комплексных умножений и сложений, что невозможно в реальном времени при высоких частотах дискретизации. Однако из рисунка 3 можно заметить, что пересчет всего спектрального отсчета крайне неэффективен, поскольку используются те же самые отсчеты что и на предыдущем такте, за исключением
, который не участвует в расчете
и
который не участвует в расчете
. Об этом говорит сайт https://intellect.icu . Таким образом, можно предположить, что существует способ рекуррентного пересчета спектрального отсчета на текущем и предыдущих тактах.
Рекуррентное соотношение для спектрального отсчета
Рассмотрим более внимательно вычисление
. На рисунке 4 показано, что при поступлении очередного отсчета
(показан зеленым), буфер сдвигается и отсчет
(отмечен желтым) выходит из буфера, или можно сказать, что выходит за пределы импульсной характеристики КИХ фильтра.
Рисунок 4: Сдвиг буфера на очередном такте
Тогда выражение для расчета гармоники на очередном такте можно записать:
Обратим внимание, что
Кроме того из выражения (3) можно заметить, что
Тогда окончательно можно записать:
Выражение (7) ничто иное, как рекуррентное соотношение, которое связывает значение ДПФ одной гармоники для предыдущего и следующего такта. Пересчет предыдущего такта в следующий требует всего одно комплексное умножение и два комплексных сложения, что можно реализовать в реальном времени. Очень важно, что сложность пересчета спектрального отсчета не зависит от
– всегда одно комплексное умножение и два сложения.
Фильтр расчета спектра заданной гармоники
Рекуррентное соотношение (7) можно трактовать как разностное уравнение БИХ фильтра:
где
– задержанный на
отсчетов входной сигнал
(комплексный или вещественный), в выражении (7)
соответствует
. Соотношение (7) получается из (8) при
.
Таким образом, мы сумели от КИХ структуры перейти к рекуррентному соотношению соответствующему БИХ фильтру. Структура БИХ фильтра соответствующего разностному уравнению (8) показана на рисунке 5.
Рисунок 5: БИХ фильтр для вычисления спектрального отсчета
Передаточная характеристика полученного фильтра равна:
Все входные, выходные отсчеты фильтра, равно как и коэффициент
являются комплексными.
Обратим внимание, что (9) очень похожа на передаточную характеристику
БИХ — фильтра соответствующего алгоритму Герцеля:
Тогда полученную передаточную характеристику
БИХ — фильтра, который «умеет пересчитывать» предыдущее значение спектрального отсчета в текущее при поступлении очередного отсчета дискретного сигнала можно представить через передаточную характеристику БИХ — фильтра алгоритма Герцеля:
Таким образом мы получили модификацию алгоритма Герцеля в виде нерекурсивной ветви
, которая позволяет вести динамический пересчет спектрального отсчета при поступлении отсчетов сигнала в реальном времени.
Пусть комплексный входной сигнал
равен:
Спектральные отсчеты на выходе фильтра равны:
Коэффициент фильтра равен:
Тогда выражение (8) можно записать:
Преобразовав (15) можно получить:
Тогда расчет спектрального отсчета можно представить структурной схемой показанной на рисунке 6 используя только вещественные умножения и сложения.
Рисунок 6: БИХ фильтр для вычисления спектрального отсчета с вещественными умножениями
Выделение набора фиксированных гармоник из спектра сигнала
Мы рассмотрим пример выделения двух гармоник с частотами
и
при частоте дискретизации
. Рассмотрим как правильно выбрать количество точек ДПФ
, а также номера спектральных отсчетов
и
соответствующих частотам
и
.
Для того чтобы мы могли в спектре различить данные сигналы, количество точек ДПФ
должно быть таким, чтобы частоты
и
«не сливались» в одну гармонику, т.е.
(17)
Тогда номер
спектрального отсчета для частоты
будет равен:
(18)
а номер
спектрального отсчета для частоты
будет равен:
(19)
Пусть частота дискретизации равна
,
и
. Тогда количество точек ДПФ должно быть:
(20)
Пусть
, тогда
, а
. Расположение гармоник показано на рисунке 7.
Рисунок 7: Расположение гармоник сигнала между точками ДПФ
Как видно из рисунка 7, гармоники расположены посередине между точками ДПФ, значит их амплитуды будут искажены за счет эффекта растекания спектра. Для исключения этого необходимо
округлить в большую сторону, тогда
и согласно (18)
. Тогда при
практически совпадает с 35-м номером спектрального отсчета, как это показано на рисунке 8.
Рисунок 8: Выбор длины буфера, для уменьшения эффектра растекани спектра
При совпадении частоты гармоники и частоты спектрального отсчета получим, что в буфер длиной
попадает целое количество периодов повторения сигнала, что уменьшит эффект растекания при расчете спектрального отсчета.
На рисунке 9 показаны графики измерения амплитуды гармоник
и
при чередовании сигналов с частотами
и
, частотой дискретизации
и
. Частоты
и
сменяют друг друга каждую секунду.
Рисунок 9: Чередование сигналов с контроллируемыми частотами
Из рисунка 9 можно видеть, что при изменении частот наблюдается «переходной процесс» длительность которого равна
. Это необходимо учитывать при обработке.
Выделение амплитуд кратных гармоник при нелинейном искажении сигнала
В данном параграфе мы приведем пример измерения кратных гармоник при помощи БИХ фильтра, показанного на рисунке 6. Для выделения амплитуд кратных гармоник нелинейно искаженного сигнала с частотой
.
Пусть сигнал на выходе нелинейного элемента описывается выражением:
(21)
На рисунке 10 показана осциллограмма сигнала
на выходе нелинейного элемента. Частота дискретизации равна
.
Рисунок 10: Сигнал на выходе нелинейного элемента
На выходе нелинейного элемента мы получим набор кратных гармоник, отстоящих друг от друга на
.
Длина буфера необходимая для различения кратных гармоник равна:
(22)
Для более качественного различения можно взять буфер длиной
точек. Тогда номера спектральных отсчетов соответствующих первым четырем гармоникам
равны:
Все гармоники попадают на точки ДПФ, поэтому растекания спектра не будет наблюдаться. На рисунке 11 показан спектр сигнала
, а на рисунке 12 – оценка амплитуд первых четырех гармоник при помощи модифицированного алгоритма Герцеля.
Рисунок 11: Спектр сигнала на выходе нелинейного элемента
Рисунок 12: Динамическое сопровождение амплитуд кратных гармоник сигнала
Из рисунка 12 видно, что первые
точек модифицированный алгоритм полностью повторяет алгоритм Герцеля, но после того как буфер полностью заполнен, и нерекурсивная ветвь БИХ — фильтра начинает работать мы получаем динамический пересчет амплитуд гармоник на каждом такте дискретизации. Это позволяет нам вести непрерывное сопровождение амплитуд кратных гармоник на выходе нелинейного элемента. Измеренные амплитуды точно равны амплитудам гармоник показанным на рисунке 11, но мы можем наблюдать их изменение во времени как это показано на трехмерной проекции (рисунок 1).
Выводы
В данной статье мы рассмотрели модификацию алгоритма Герцеля, которая позволяем нам вести пересчет заданного спектрального отсчета на каждом такте дискретизации при помощи рекуррентного соотношения (7). Было показано, что модификация алгоритма Герцеля заключается в добавлении нерекурсивной ветви с задержкой на
отсчетов к БИХ — фильтру алгоритма Герцеля и позволяет учесть все промежуточные результаты при расчете заданной гармоники спектра сигнала. Также показаны примеры выбора длины буфера
при анализе двух спектральных составляющих, а также гармоник кратной частоты на выходе нелинейного элемента.
Вау!! 😲 Ты еще не читал? Это зря!
Надеюсь, эта статья про динамический пересчет спектральных отсчетов на каждом такте дискретизации, была вам полезна, счастья и удачи в ваших начинаниях! Надеюсь, что теперь ты понял что такое динамический пересчет спектральных отсчетов на каждом такте дискретизации, модифицированный алгоритм герцеля
и для чего все это нужно, а если не понял, или есть замечания,
то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории
Цифровая обработка сигналов
Комментарии
Оставить комментарий
Цифровая обработка сигналов
Термины: Цифровая обработка сигналов