Вам бонус- начислено 1 монета за дневную активность. Сейчас у вас 1 монета

Алгоритм Герцеля (Goertzel algorithm)

Лекция



Привет, сегодня поговорим про алгоритм герцеля goertzel algorithm , обещаю рассказать все что знаю. Для того чтобы лучше понимать что такое алгоритм герцеля goertzel algorithm , настоятельно рекомендую прочитать все из категории Цифровая обработка сигналов.

Содержание
Введение
Рекуррентное соотношения для расчета фиксированного спектрального отсчета сигнала
Алгоритм Герцеля
Пример использования алгоритма Герцеля
Выводы

Введение
Ранее мы рассмотрели дискретное преобразование Фурье (ДПФ) и его свойства, а также алгоритмы быстрого преобразования Фурье (БПФ). Мы выяснили, что алгоритмы БПФ позволяют существенно экономить вычислительные ресурсы при расчете ДПФ. Однако часто требуется произвести расчет не всего ДПФ, а лишь фиксированного количества спектральных отсчетов. Например такая задача встает при декодировании DTMF сигналов. В этом случае применение алгоритмов БПФ может оказаться не эффективным, поскольку для получения одного спектрального отсчета потребуется произвести расчет всего ДПФ.
В данной статье мы рассмотрим алгоритм Герцеля расчета дискретного преобразования Фурье, который нашел широкое применение в задачах декодирования DTMF сигналов. Данный алгоритм позволяет эффективно рассчитывать фиксированные спектральные отсчеты ДПФ без необходимости рассчитать все ДПФ. Как будет показано ниже алгоритм Герцеля представляет собой реализацию ДПФ в виде БИХ — фильтра, что упрощает его аппаратную реализацию.

Рекуррентное соотношение для расчета фиксированного спектрального отсчета сигнала
Выражение для дискретного Алгоритм Герцеля (Goertzel algorithm) – точечного преобразования Фурье сигнала Алгоритм Герцеля (Goertzel algorithm) Алгоритм Герцеля (Goertzel algorithm) имеет вид:
Алгоритм Герцеля (Goertzel algorithm) (1)
Поворотные коэффициенты Алгоритм Герцеля (Goertzel algorithm) обладают следующим свойством:
Алгоритм Герцеля (Goertzel algorithm) (2)
Таким образом, умножение выражения (1) на Алгоритм Герцеля (Goertzel algorithm) не приводит к изменению результата:
Алгоритм Герцеля (Goertzel algorithm) (3)
Распишем сумму (3):
Алгоритм Герцеля (Goertzel algorithm) (4)
Обозначим Алгоритм Герцеля (Goertzel algorithm), для фиксированного номера спектрального отсчета Алгоритм Герцеля (Goertzel algorithm), кроме того вынесем в (4) Алгоритм Герцеля (Goertzel algorithm)за скобки и получим:
Алгоритм Герцеля (Goertzel algorithm) (5)
Внутри скобок в выражении (5) можно выделить Алгоритм Герцеля (Goertzel algorithm), в котором также можно вынести Алгоритм Герцеля (Goertzel algorithm) за скобки:
Алгоритм Герцеля (Goertzel algorithm) (6)
Теперь получили что Алгоритм Герцеля (Goertzel algorithm) может быть получено через Алгоритм Герцеля (Goertzel algorithm), в котором снова можно Алгоритм Герцеля (Goertzel algorithm) вынести за скобки. Таким образом, мы получили рекуррентное соотношение для вычисления Алгоритм Герцеля (Goertzel algorithm) на любом шаге Алгоритм Герцеля (Goertzel algorithm)через Алгоритм Герцеля (Goertzel algorithm) полученных на предыдущем шаге для фиксированного номера спектрального отсчета Алгоритм Герцеля (Goertzel algorithm):
Алгоритм Герцеля (Goertzel algorithm) (7)
где Алгоритм Герцеля (Goertzel algorithm) – отсчет входного сигнала с номером Алгоритм Герцеля (Goertzel algorithm). Данное рекуррентное соотношение на шаге с номером Алгоритм Герцеля (Goertzel algorithm)приводит нас к Алгоритм Герцеля (Goertzel algorithm), т.е. Об этом говорит сайт https://intellect.icu . на Алгоритм Герцеля (Goertzel algorithm)-ом шаге мы получим спектральный отсчет с номером Алгоритм Герцеля (Goertzel algorithm). Проанализировав (7), можно заметить, что рекуррентное соотношение можно трактовать как разностное уравнение БИХ-фильтра с комплексным коэффициентом Алгоритм Герцеля (Goertzel algorithm), структурная схема которого приведена на рисунке 1 .

Алгоритм Герцеля (Goertzel algorithm)
Рисунок 1: Структурная схема БИХ-фильтра реализующего расчет спектрального отсчета с номером k

Обозначив через Алгоритм Герцеля (Goertzel algorithm) и Алгоритм Герцеля (Goertzel algorithm) z – образы Алгоритм Герцеля (Goertzel algorithm) и Алгоритм Герцеля (Goertzel algorithm) соответственно, выражение (7) можно представить в виде:
Алгоритм Герцеля (Goertzel algorithm) (8)
Из (8) можно получить передаточную характеристику БИХ – фильтра
Алгоритм Герцеля (Goertzel algorithm) (9)
Теперь самое время проанализировать к чему привели нас все предыдущие рассуждения.
Напомню, что мы зафиксировали номер спектрального отсчета Алгоритм Герцеля (Goertzel algorithm) и преобразовали выражение ДПФ для одного фиксированного спектрального отсчета к рекуррентному соотношению, которое позволяет нам на Алгоритм Герцеля (Goertzel algorithm)-м шаге получить значение искомого Алгоритм Герцеля (Goertzel algorithm)-го спектрального отсчета Алгоритм Герцеля (Goertzel algorithm). При этом все промежуточные значения рекуррентного соотношенияАлгоритм Герцеля (Goertzel algorithm) нас не интересуют, а интересует только Алгоритм Герцеля (Goertzel algorithm). Это важно и пригодится нам в дальнейшем. После мы рекуррентное соотношение трактовали как разностное уравнение БИХ фильтра с передаточной характеристикой (9). В результате мы получили «хитроумный фильтр» с комплексным коэффициентом Алгоритм Герцеля (Goertzel algorithm) применение которого на Алгоритм Герцеля (Goertzel algorithm)-ой итерации на выходе дает Алгоритм Герцеля (Goertzel algorithm). При фиксированном Алгоритм Герцеля (Goertzel algorithm) значение комплексного коэффициента Алгоритм Герцеля (Goertzel algorithm) всегда постоянно.

Алгоритм Герцеля
Для вычисления одного спектрального отсчета Алгоритм Герцеля (Goertzel algorithm) при использовании БИХ — фильтра требуется Алгоритм Герцеля (Goertzel algorithm) комплексных умножений и сложений, что не дает никаких преимуществ по сравнению с вычислением ДПФ «в лоб» согласно выражению (1).
Однако сокращение вычислений можно получить, если домножить числитель и знаменатель передаточной характеристики БИХ фильтра (9) на Алгоритм Герцеля (Goertzel algorithm):
Алгоритм Герцеля (Goertzel algorithm) (10)
Рассмотрим более подробно сумму:
Алгоритм Герцеля (Goertzel algorithm) (11)
тогда (10) с учетом(11) можно записать:
Алгоритм Герцеля (Goertzel algorithm) (12)
Структурная схема БИХ — фильтра второго порядка, соответствующего (12) показана на рисунке 2 (подробно структурные схемы БИХ — фильтров были рассмотрены здесь), где Алгоритм Герцеля (Goertzel algorithm).

Алгоритм Герцеля (Goertzel algorithm)
Рисунок 2: Структурная схема БИХ - фильтра 2-го порядка

Обратим внимание, что Алгоритм Герцеля (Goertzel algorithm) – вещественный коэффициент, соответственно умножения в рекурсивной ветви фильтра стали вещественными, причем умножения на -1 можно не учитывать. У нас остался один комплексный коэффициент Алгоритм Герцеля (Goertzel algorithm) в числителе передаточной характеристики. Но мы выяснили, что промежуточные значенияАлгоритм Герцеля (Goertzel algorithm) нам не важны, соответственно умножать на Алгоритм Герцеля (Goertzel algorithm) можно только на Алгоритм Герцеля (Goertzel algorithm) итерации, когда рассчитывается непосредственно Алгоритм Герцеля (Goertzel algorithm), поскольку на промежуточные значения Алгоритм Герцеля (Goertzel algorithm) это никак не повлияет. Таким образом применение фильтра второго порядка позволяет рассчитать Алгоритм Герцеля (Goertzel algorithm) для фиксированного Алгоритм Герцеля (Goertzel algorithm) с использованием Алгоритм Герцеля (Goertzel algorithm) умножений, но не комплексных, а вещественных, что приводит к сокращению вычислений в 2 раза (одно комплексное умножение требует два вещественных), плюс одно комплексное умножение на Алгоритм Герцеля (Goertzel algorithm) на последней итерации при расчете непосредственно Алгоритм Герцеля (Goertzel algorithm).
Исходя из рисунка 2 спектральный отсчет Алгоритм Герцеля (Goertzel algorithm) равен:
Алгоритм Герцеля (Goertzel algorithm) (13)
где Алгоритм Герцеля (Goertzel algorithm) – промежуточные значения (смотри рисунок 2), которые рассчитываются итерационно:
Алгоритм Герцеля (Goertzel algorithm) (14)
Таким образом алгоритм сводится к итерационному расчету Алгоритм Герцеля (Goertzel algorithm) согласно (14), после чего последние два значенияАлгоритм Герцеля (Goertzel algorithm) и Алгоритм Герцеля (Goertzel algorithm) используются для расчета спектрального отсчета Алгоритм Герцеля (Goertzel algorithm).

Пример использования алгоритма Герцеля
Пусть Алгоритм Герцеля (Goertzel algorithm), исходный сигнал Алгоритм Герцеля (Goertzel algorithm) показан на рисунке 3.

Алгоритм Герцеля (Goertzel algorithm)
Рисунок 3: Исходный сигнал

Рассчитаем при помощи алгоритма Герцеля спектральный отсчетАлгоритм Герцеля (Goertzel algorithm) с номером Алгоритм Герцеля (Goertzel algorithm). Предварительно рассчитаем коэффициентАлгоритм Герцеля (Goertzel algorithm) и Алгоритм Герцеля (Goertzel algorithm):
Алгоритм Герцеля (Goertzel algorithm) (15)
В качестве начальных условий расчета зададим:
Алгоритм Герцеля (Goertzel algorithm) (16)
Произведем итерационный расчет Алгоритм Герцеля (Goertzel algorithm) согласно (14):
Алгоритм Герцеля (Goertzel algorithm) (17)
Тогда согласно выражению (13) можно получить значения для спектрального отсчета :
Алгоритм Герцеля (Goertzel algorithm) (18)
Вы можете самостоятельно удостовериться, что полученное значение Алгоритм Герцеля (Goertzel algorithm) полностью соответствует результату ДПФ.
Ниже приведен исходный код программы на языке си, производящий расчет спектрального отсчета Алгоритм Герцеля (Goertzel algorithm) согласно рассмотренному примеру.


#include < stdio.h > 
#include < stdlib.h > 
#define _USE_MATH_DEFINES 
#include < math.h >


int main(){
    // исходные данные    
    int N = 8; //точек ДПФ
    int k = 1; //номер спектрального отсчта

    //исходный сигнал
    double s[8] = {3, 2, 1, -1, 1, -2, -3, -2};

    //массив промежуточных результатов
    double v[8] = {0, 0, 0, 0, 0, 0, 0, 0};

    //параметр альфа
    double a = 2*cos(2*M_PI*k/N);

    //поворотный к-т W_N^-k
    double wr =    cos(2*M_PI*k/N); //реальная часть
    double wi =    sin(2*M_PI*k/N); //мнимая часть

    //учет v[-1] = v[-2] = 0
    v[0] = s[0];    
    v[1] = s[1]+a*v[0];

    // итерационный расчет массива v согласно (14)
    for(int i = 2; i < N; i++)
        v[i] = s[i] + a*v[i-1] - v[i-2];

    //реальная и мнимая части спектрального отсчета S(1) согласно (13)
    double SR = v[N-1]*wr-v[N-2];
    double SI = v[N-1]*wi;

    //печать результата
    printf("S(%d) = %.4f%+.4fj\n",k,SR,SI);

    system("Pause");
    return 0;




Выводы
Фильтр показанный на рисунке 2 реализует расчет спектрального отсчета с номером Алгоритм Герцеля (Goertzel algorithm). Для реализации расчета всехАлгоритм Герцеля (Goertzel algorithm) спектральных отсчетов, необходимо параллельно поставить Алгоритм Герцеля (Goertzel algorithm) таких фильтров. Преимущество алгоритма Герцеля заключается в том, что каждый спектральный отсчет рассчитывается независимо от других, и не нужно считать все ДПФ ради нескольких отсчетов. Это широко применяется при декодировании DTMF сигналов когда анализируется амплитуда нескольких гармоник сигнала. Но алгоритм Герцеля также обладает недостатком. Для расчета одного спектрального отсчета требуется Алгоритм Герцеля (Goertzel algorithm) итераций, причем промежуточные значения Алгоритм Герцеля (Goertzel algorithm), кроме двух последних, не несут полезной информации, но их приходится рассчитывать. Алгоритм Герцеля малопривлекателен для расчета всех спектральных отсчетов ДПФ ввиду высокой вычислительной сложности. Для расчета «полного» ДПФ гораздо лучше подходят алгоритмы быстрого преобразования Фурье.
 

Надеюсь, эта статья про алгоритм герцеля goertzel algorithm , была вам полезна, счастья и удачи в ваших начинаниях! Надеюсь, что теперь ты понял что такое алгоритм герцеля goertzel algorithm и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории Цифровая обработка сигналов

Из статьи мы узнали кратко, но содержательно про алгоритм герцеля goertzel algorithm
создано: 2015-05-23
обновлено: 2024-11-12
875



Рейтиг 9 of 10. count vote: 2
Вы довольны ?:


Поделиться:

Найди готовое или заработай

С нашими удобными сервисами без комиссии*

Как это работает? | Узнать цену?

Найти исполнителя
$0 / весь год.
  • У вас есть задание, но нет времени его делать
  • Вы хотите найти профессионала для выплнения задания
  • Возможно примерение функции гаранта на сделку
  • Приорететная поддержка
  • идеально подходит для студентов, у которых нет времени для решения заданий
Готовое решение
$0 / весь год.
  • Вы можите продать(исполнителем) или купить(заказчиком) готовое решение
  • Вам предоставят готовое решение
  • Будет предоставлено в минимальные сроки т.к. задание уже готовое
  • Вы получите базовую гарантию 8 дней
  • Вы можете заработать на материалах
  • подходит как для студентов так и для преподавателей
Я исполнитель
$0 / весь год.
  • Вы профессионал своего дела
  • У вас есть опыт и желание зарабатывать
  • Вы хотите помочь в решении задач или написании работ
  • Возможно примерение функции гаранта на сделку
  • подходит для опытных студентов так и для преподавателей

Комментарии


Оставить комментарий
Если у вас есть какое-либо предложение, идея, благодарность или комментарий, не стесняйтесь писать. Мы очень ценим отзывы и рады услышать ваше мнение.
To reply

Цифровая обработка сигналов

Термины: Цифровая обработка сигналов