Алгоритм Герцеля
Алгоритм Герцеля — это метод цифровой обработки сигналов (DSP) для эффективной оценки отдельных членов дискретного преобразования Фурье (DFT). Это полезно в некоторых практических приложениях, таких как распознавание тонов двухтональной многочастотной сигнализации (DTMF), производимых кнопками клавиатуры традиционного аналогового телефона . Алгоритм был впервые описан Джеральдом Герцелем в 1958 году. [1]
Как и ДПФ, алгоритм Герцеля анализирует одну выбираемую частотную составляющую дискретного сигнала . [2] [3] [4] В отличие от прямых вычислений ДПФ, алгоритм Герцеля применяет один коэффициент с действительным знаком на каждой итерации, используя арифметику с действительным знаком для входных последовательностей с действительным знаком. Для покрытия всего спектра (за исключением использования для непрерывного потока данных, где коэффициенты повторно используются для последующих вычислений, что имеет вычислительную сложность, эквивалентную скользящему ДПФ ), алгоритм Герцеля имеет более высокий порядок сложности, чем алгоритмы быстрого преобразования Фурье (БПФ). но для расчета небольшого количества выбранных частотных составляющих он более эффективен в цифровом отношении. Простая структура алгоритма Герцеля делает его хорошо подходящим для небольших процессоров и встроенных приложений.
Алгоритм Герцеля также можно использовать «обратно» в качестве функции синтеза синусоиды, которая требует только 1 умножения и 1 вычитания на сгенерированную выборку. [5]
Алгоритм
[ редактировать ]Этот раздел может потребовать очистки Википедии , чтобы соответствовать стандартам качества . Конкретная проблема заключается в следующем: несовместимые стили уравнений и меток. ( февраль 2014 г. ) |
Основной расчет в алгоритме Герцеля имеет форму цифрового фильтра , и по этой причине алгоритм часто называют фильтром Герцеля . Фильтр работает с входной последовательностью в каскаде из двух каскадов с параметром , что дает анализируемую частоту, нормализованную в радианах на выборку.
На первом этапе рассчитывается промежуточная последовательность, :
(1) |
На втором этапе применяется следующий фильтр к , создавая выходную последовательность :
(2) |
второго порядка Можно наблюдать, что первая ступень фильтра представляет собой БИХ-фильтр со структурой прямой формы . Эта конкретная структура обладает тем свойством, что ее внутренние переменные состояния равны прошлым выходным значениям этого этапа. Входные значения для предполагаются равными 0. Чтобы установить начальное состояние фильтра, чтобы можно было начать оценку с выборки состояниям фильтра присваиваются начальные значения . Чтобы избежать опасности наложения псевдонимов , частота часто ограничивается диапазоном от 0 до π (см. теорему выборки Найквиста – Шеннона ); использование значения вне этого диапазона не бессмысленно, но эквивалентно использованию совмещенной частоты внутри этого диапазона, поскольку экспоненциальная функция является периодической с периодом 2π в .
Фильтр второй ступени можно рассматривать как КИХ-фильтр , поскольку в его расчетах не используются какие-либо из его прошлых выходных данных.
Методы Z-преобразования могут применяться для изучения свойств каскада фильтров. Z-преобразование первой ступени фильтра, заданное в уравнении (1), равно
(3) |
Z-преобразование второй ступени фильтра, заданное в уравнении (2), равно
(4) |
Тогда объединенная передаточная функция каскада двух ступеней фильтра равна
(5) |
Это можно преобразовать обратно в эквивалентную последовательность во временной области, а термины развернуть обратно до первого входного термина по индексу. : [ нужна ссылка ]
(6) |
Численная стабильность
[ редактировать ]Можно заметить, что полюса фильтра Z-преобразования расположены в точках и , на окружности единичного радиуса с центром в начале плоскости комплексного Z-преобразования. Это свойство указывает на то, что процесс фильтрации минимально стабилен и уязвим к накоплению числовых ошибок при вычислении с использованием арифметических вычислений низкой точности и длинных входных последовательностей. [6] Численно устойчивая версия была предложена Кристианом Рейншем . [7]
Вычисления ДПФ
[ редактировать ]В важном случае вычисления члена ДПФ применяются следующие специальные ограничения.
- Фильтрация завершается по индексу , где — количество членов во входной последовательности ДПФ.
- Частоты, выбранные для анализа Герцеля, ограничены специальной формой
(7) |
- Индексный номер указывающий, что «частотный элемент» ДПФ выбран из набора индексных номеров
(8) |
Сделав эти замены в уравнении (6) и заметив, что член , уравнение (6) тогда примет следующий вид:
(9) |
Мы можем заметить, что правая часть уравнения (9) чрезвычайно похожа на определяющую формулу для члена ДПФ. , член ДПФ для индексного номера , но не совсем то же самое. Суммирование, показанное в уравнении (9), требует входные параметры, но только входные условия доступны при оценке ДПФ. Простой, но неэлегантный способ — расширить входную последовательность с еще одним искусственным значением . [8] Из уравнения (9) мы видим, что математическое влияние на конечный результат такое же, как и удаление члена от суммирования, таким образом получая предполагаемое значение ДПФ.
Однако существует более элегантный подход, позволяющий избежать дополнительного прохода фильтра. Из уравнения (1) мы можем отметить, что когда расширенный входной член используется на последнем этапе,
(10) |
Таким образом, алгоритм можно завершить следующим образом:
- завершить БИХ-фильтр после обработки входного термина ,
- примените уравнение (10) для построения из предыдущих результатов и ,
- применить уравнение (2) с рассчитанным ценность и с производится окончательным прямым расчетом фильтра.
Последние две математические операции упрощаются за счет их алгебраического объединения:
(11) |
Обратите внимание, что остановка обновлений фильтра в установленный срок и немедленное применение уравнения (2), а не уравнения (11), пропускает окончательные обновления состояния фильтра, что дает результат с неправильной фазой. [9]
Конкретная структура фильтрации, выбранная для алгоритма Герцеля, является ключом к его эффективным расчетам ДПФ. Мы можем заметить, что только одно выходное значение используется для расчета ДПФ, поэтому расчеты для всех остальных выходных членов опускаются. Поскольку КИХ-фильтр не рассчитывается, расчеты этапа БИХ и т. д. можно отбросить сразу после обновления внутреннего состояния первого этапа.
Кажется, это создает парадокс: для завершения алгоритма этап КИХ-фильтра должен быть оценен один раз с использованием двух последних выходных данных этапа БИХ-фильтра, в то время как для эффективности вычислений итерация БИХ-фильтра отбрасывает его выходные значения. Здесь применяются свойства структуры фильтра прямой формы. Две внутренние переменные состояния БИХ-фильтра предоставляют два последних значения выходного сигнала БИХ-фильтра, которые являются условиями, необходимыми для оценки ступени КИХ-фильтра.
Приложения
[ редактировать ]Условия спектра мощности
[ редактировать ]Анализ уравнения (6): окончательный проход БИХ-фильтра для расчета члена используя дополнительное входное значение применяет комплексный множитель величины 1 к предыдущему члену . Следовательно, и представляют собой эквивалентную мощность сигнала. В равной степени справедливо применить уравнение (11) и вычислить мощность сигнала из члена или применить уравнение (2) и вычислить мощность сигнала из члена . Оба случая приводят к следующему выражению для мощности сигнала, представленному термином ДПФ :
(12) |
В приведенном ниже псевдокоде входные данные с действительным знаком хранятся в массиве x
и переменные sprev
и sprev2
временно сохранить историю вывода БИХ-фильтра. Nterms
количество выборок в массиве, а Kterm
соответствует интересующей частоте, умноженной на период выборки.
Nterms defined here Kterm selected here ω = 2 × π × Kterm / Nterms; coeff := 2 × cos(ω) sprev := 0 sprev2 := 0 for each index n in range 0 to Nterms-1 do s := x[n] + coeff × sprev - sprev2 sprev2 := sprev sprev := s end power := sprev2 + sprev22 - (coeff × sprev × sprev2)
Это возможно [10] организовать вычисления так, чтобы входящие выборки доставлялись по отдельности в программный объект , который поддерживает состояние фильтра между обновлениями, а к окончательному результату мощности можно получить доступ после завершения остальной обработки.
Один термин ДПФ с вещественной арифметикой
[ редактировать ]Случай вещественных входных данных возникает часто, особенно во встроенных системах, где входные потоки являются результатом прямых измерений физических процессов. Когда входные данные имеют вещественное значение, внутренние переменные состояния фильтра sprev
и sprev2
Также можно наблюдать, что они имеют действительные значения, следовательно, на первом этапе БИХ не требуется никаких сложных арифметических действий. Оптимизация для арифметики с действительными значениями обычно так же проста, как применение соответствующих типов данных с действительными значениями для переменных.
После вычислений с использованием входного термина и итерации фильтра завершаются, для оценки члена ДПФ необходимо применить уравнение (11). В окончательном вычислении используется комплексная арифметика, но ее можно преобразовать в вещественную арифметику, разделив действительные и мнимые члены:
(13) |
По сравнению с приложением анализа спектра мощности, единственная разница заключается в расчете, используемом для завершения:
(Same IIR filter calculations as in the signal power implementation) XKreal = sprev * cr - sprev2; XKimag = sprev * ci;
Обнаружение фазы
[ редактировать ]Это приложение требует такой же оценки термина ДПФ. , как обсуждалось в предыдущем разделе, с использованием входного потока с действительным или комплексным знаком. Тогда фазу сигнала можно оценить как
(14) |
принимая соответствующие меры предосторожности для сингулярностей, квадрантов и т. д. при вычислении функции обратного тангенса.
Сложные сигналы в реальной арифметике
[ редактировать ]Поскольку сложные сигналы линейно разлагаются на действительную и мнимую части, алгоритм Герцеля можно вычислять в вещественной арифметике отдельно по последовательности действительных частей, что дает , и по последовательности мнимых частей, что дает . После этого два частичных результата с комплексными значениями можно повторно объединить:
(15) |
Вычислительная сложность
[ редактировать ]Этот раздел нуждается в дополнительных цитатах для проверки . ( февраль 2014 г. ) |
- Согласно теории сложности вычислений , вычисление набора Условия ДПФ с использованием применение алгоритма Герцеля к набору данных с значения с «стоимостью за операцию» имеет сложность .
- Чтобы вычислить один ДПФ бин для сложной входной последовательности длины , алгоритм Герцеля требует умножения и сложения/вычитания в цикле, а также 4 умножения и 4 конечных сложения/вычитания, всего умножения и добавления/вычитания. Это повторяется для каждого из частоты.
- Напротив, использование БПФ для набора данных с значения имеют сложность .
- Это сложнее применить напрямую, поскольку это зависит от используемого алгоритма БПФ, но типичным примером является БПФ по основанию 2, для которого требуется умножения и сложения/вычитания на бин ДПФ для каждого из контейнеры.
В выражениях порядка сложности, когда количество вычисляемых термов меньше, чем , преимущество алгоритма Герцеля очевидно. Но поскольку код БПФ сравнительно сложен, коэффициент «затраты на единицу работы» часто больше для БПФ, и практическое преимущество в пользу алгоритма Герцеля даже для в несколько раз больше, чем .
В качестве практического правила для определения того, является ли БПФ по основанию 2 или алгоритм Герцеля более эффективным, отрегулируйте количество членов. в наборе данных до ближайшей точной степени 2, называя это , и алгоритм Герцеля, вероятно, будет быстрее, если
Реализации БПФ и платформы обработки оказывают значительное влияние на относительную производительность. Некоторые реализации БПФ [11] выполнять внутренние вычисления комплексных чисел для генерации коэффициентов «на лету», значительно увеличивая их «стоимость K на единицу работы». Алгоритмы БПФ и ДПФ могут использовать таблицы предварительно вычисленных значений коэффициентов для повышения числовой эффективности, но это требует большего доступа к значениям коэффициентов, буферизованным во внешней памяти, что может привести к увеличению конкуренции за кэш, что сводит на нет некоторое числовое преимущество.
Оба алгоритма повышают эффективность примерно в 2 раза при использовании входных данных с действительными, а не с комплексными значениями. Однако этот выигрыш естественен для алгоритма Герцеля, но не будет достигнут для БПФ без использования определенных вариантов алгоритма. [ который? ] специализируется на преобразовании вещественных данных .
См. также
[ редактировать ]- Алгоритм Блюстейна БПФ (chirp-Z)
- Частотная манипуляция (FSK)
- Фазовая манипуляция (PSK)
Ссылки
[ редактировать ]- ^ Герцель, Г. (январь 1958 г.), «Алгоритм оценки конечных тригонометрических рядов», American Mathematical Monthly , 65 (1): 34–35, doi : 10.2307/2310304 , JSTOR 2310304
- ^ Мок, П. (21 марта 1985 г.), «Добавьте генерацию и декодирование DTMF в конструкции DSP-μP» (PDF) , EDN , ISSN 0012-7515 ; также можно найти в разделе «Приложения DSP с семейством TMS320», Vol. 1, Техасские инструменты, 1989.
- ^ Чен, Чиуги Дж. (июнь 1996 г.), Модифицированный алгоритм Герцеля для обнаружения DTMF с использованием DSP TMS320C80 (PDF) , Отчет о применении, Texas Instruments, SPRA066
- ^ Шмер, Гюнтер (май 2000 г.), Генерация и обнаружение тонов DTMF: реализация с использованием TMS320C54x (PDF) , Отчет о применении, Texas Instruments, SPRA096a
- ^ Ченг, Эрик; Худак, Пол (январь 2009 г.), Обработка звука и синтез звука в Haskell (PDF) , заархивировано из оригинала (PDF) 28 марта 2017 г.
- ^ Джентльмен, WM (1 февраля 1969 г.). «Анализ ошибок метода Герцеля (Ватта) для вычисления коэффициентов Фурье» . Компьютерный журнал . 12 (2): 160–164. дои : 10.1093/comjnl/12.2.160 .
- ^ Стер, Дж.; Булирш, Р. (2002), Введение в численный анализ , Springer, ISBN 9780387954523
- ^ «Алгоритм Герцеля» . Cnx.org. 12 сентября 2006 г. Проверено 3 февраля 2014 г.
- ^ «Время электронной инженерии | Соединение глобального сообщества электроники» . ЭЭ Таймс . Проверено 3 февраля 2014 г.
- ^ Эльменрайх, Вильфрид (25 августа 2011 г.). «Эффективное определение частоты с помощью фильтра Герцеля» . Проверено 16 сентября 2014 г.
- ^ Нажимать; Фланнери; Теукольский; Веттерлинг (2007), «Глава 12», Числовые рецепты, Искусство научных вычислений , Издательство Кембриджского университета
Дальнейшее чтение
[ редактировать ]- Проакис, Дж.Г.; Манолакис, Д.Г. (1996), Цифровая обработка сигналов: принципы, алгоритмы и приложения , Аппер-Сэддл-Ривер, Нью-Джерси: Прентис-Холл, стр. 480–481, Bibcode : 1996dspp.book.....P
Внешние ссылки
[ редактировать ]- Алгоритм Герцеля в Wayback Machine (архивировано 28 июня 2018 г.)
- Алгоритм DSP для частотного анализа
- Алгоритм Герцеля Кевина Бэнкса