Перейти к содержанию
    

Помогите освоить алгоритм Герцеля

Формулу рассчёта к-той выборки я понял. Но не могу никак связать количество выборок в массиве с частотным спектром. Я недавно разобрался с БПФ, понял зачем нужны окна и что такое "размазывание" сигнала по спектру. Как избежать размазывания в алгортиме Герцеля и где об этом почитать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Формулу рассчёта к-той выборки я понял. Но не могу никак связать количество выборок в массиве с частотным спектром. Я недавно разобрался с БПФ, понял зачем нужны окна и что такое "размазывание" сигнала по спектру. Как избежать размазывания в алгортиме Герцеля и где об этом почитать?

 

Алгоритм Герцеля - просто способ рассчета ДПФ для некоторых значений частот. Он выгоден, когда значения ДПФ для всех частот, кроме ограниченного набора, не интересуют. Если нужны окна, то их можно применять на входе Герцеля также как и на входе БПФ. Для этого, также как и в случае "полноценного" спектрального анализа, сигнал надо умножить на периодическую оконнную функцию.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо, понял сам. Частотный шаг для каждого коэффициента в алгоритме герцеля определяется так же как и при ДПФ/БПФ (Частота дискретизации/(2*N))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

При реализации непрерывного Герцеля (всегда работает, всегда требуются данные на выходе преобразования) могут возникнуть проблемы с устойчивостью, т.к. в отличие от ДПФ Герцель суть БИХ фильтр. Если делается на ПЛИС нужно будет увеличивать разрядность на умножителе, т.к. незначительная ошибка в точности очень быстро разрастается в рекурсии. Для решения проблемы с устойчивостью вводят поправки а-ля "забывание", но там все так тонко, чуть чуть отходишь от исходной рекурсии - все разваливается :rolleyes: (мне этот алгоритм показался больно уж "нежным" или это я такой криворукий)

 

в свое время делал по вот такой статье:

slidingdft_bw.pdf

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Алгоритм Герцеля принадлежит к числу так называемых алгоритмов полубыстрого преобразования Фурье, так как для расчета всего спектра требуется всего в 2 раза меньше операций, чем для обычного дискретного. В этом плане БПФ выигрывает.

1 Если Вам всё-таки нужно считать полный спектр, что неэффективно, поступаете так же, как с БПФ

2 Если Вам нужно посчитать какие-то отдельные гармоники (а вот здесь как раз АГ может дать выигрыш, но надо посчитать), то в целом можно обойтись и без окон. Выигрыш в производительности зависит от числа требуемых к нахождению гармоник и размера буфера.

3 АГ по сути является БИХ-фильтром, так что при реализации в целочисленной арифметике см. рекомендации выше.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Алгоритм Герцеля принадлежит к числу так называемых алгоритмов полубыстрого преобразования Фурье, так как для расчета всего спектра требуется всего в 2 раза меньше операций, чем для обычного дискретного. В этом плане БПФ выигрывает.

 

Грубая оценка для выбора Герцель-FFT по комплексным сложениям - log(N)/2 бинов. N - длина требуемого DFT.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Алгоритм Герцеля принадлежит к числу так называемых алгоритмов полубыстрого преобразования Фурье, так как для расчета всего спектра требуется всего в 2 раза меньше операций, чем для обычного дискретного. В этом плане БПФ выигрывает.

1 Если Вам всё-таки нужно считать полный спектр, что неэффективно, поступаете так же, как с БПФ

2 Если Вам нужно посчитать какие-то отдельные гармоники (а вот здесь как раз АГ может дать выигрыш, но надо посчитать), то в целом можно обойтись и без окон. Выигрыш в производительности зависит от числа требуемых к нахождению гармоник и размера буфера.

3 АГ по сути является БИХ-фильтром, так что при реализации в целочисленной арифметике см. рекомендации выше.

Алгоритм Герцеля наглядно показывает выигрыш когда нужно получить спектр на каждый входной отчёт. Для всего спектра получаем N умножений для Герцеля, N*log(N) - для FFT, N^2 - для DFT. И это на каждый входной отчёт. Но разрядность умножителей Герцеля должна быть выше (я делал почти в 2 раза) для того что бы показать теже характеристики что и в схемах без рекурсии. Но если нам нужно отслеживать спекральные компоненты числом M << N, то тогда для Герцеля получаем M умножений, а для FFT и DFT их число сохраняется. Тогда и выигрыш становится более очевидным. Для больших символьных скоростей этот алгоритм единственное решение для непрерывного отслеживания спектральных составляющих, т.к. Делать FFT на каждый отчёт при большой символьной задача нереализуемая.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Краткое сравнение алгоритма с БПФ в приложении... Может пригодится.

st5_3_________.pdf

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Исходный сигнал - 1 кГц

Частота дискретизации - 16 кГц

массив из 16 выборок

Следовательно частотный шаг Sf = 16 / 16 = 1 кГц. то есть если я реализую алгоритм Герцеля по формуле

S(k) = W*v(N-1)-v(N-2)

v(N-1) = v(15) или v(14). То есть N = 0..15 или N = 1..16

И ещё

W = cos(a) - j*sin (a)

Но в алгоритме Герцеля у поворачивающего коэффициента W есть отрицательный множитель k, следует ли из этого

W = cos(a) + j*sin (a)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...