реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Помогите освоить алгоритм Герцеля, Как связанана разрядность выборок с частотным шагом в алгоритме Герцел
alexandr.krupnov
сообщение Apr 10 2015, 10:44
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 41
Регистрация: 3-12-14
Пользователь №: 83 961



Формулу рассчёта к-той выборки я понял. Но не могу никак связать количество выборок в массиве с частотным спектром. Я недавно разобрался с БПФ, понял зачем нужны окна и что такое "размазывание" сигнала по спектру. Как избежать размазывания в алгортиме Герцеля и где об этом почитать?
Go to the top of the page
 
+Quote Post
Lmx2315
сообщение Apr 10 2015, 10:50
Сообщение #2


отэц
*****

Группа: Свой
Сообщений: 1 729
Регистрация: 18-09-05
Из: Москва
Пользователь №: 8 684



http://www.dsplib.ru/content/goertzel/goertzel.html
может будет полезно


--------------------
b4edbc0f854dda469460aa1aa a5ba2bd36cbe9d4bc8f92179f 8f3fec5d9da7f0
SHA-256
Go to the top of the page
 
+Quote Post
andyp
сообщение Apr 10 2015, 11:15
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 453
Регистрация: 23-07-08
Пользователь №: 39 163



Цитата(alexandr.krupnov @ Apr 10 2015, 13:44) *
Формулу рассчёта к-той выборки я понял. Но не могу никак связать количество выборок в массиве с частотным спектром. Я недавно разобрался с БПФ, понял зачем нужны окна и что такое "размазывание" сигнала по спектру. Как избежать размазывания в алгортиме Герцеля и где об этом почитать?


Алгоритм Герцеля - просто способ рассчета ДПФ для некоторых значений частот. Он выгоден, когда значения ДПФ для всех частот, кроме ограниченного набора, не интересуют. Если нужны окна, то их можно применять на входе Герцеля также как и на входе БПФ. Для этого, также как и в случае "полноценного" спектрального анализа, сигнал надо умножить на периодическую оконнную функцию.
Go to the top of the page
 
+Quote Post
alexandr.krupnov
сообщение Apr 10 2015, 11:30
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 41
Регистрация: 3-12-14
Пользователь №: 83 961



Спасибо, понял сам. Частотный шаг для каждого коэффициента в алгоритме герцеля определяется так же как и при ДПФ/БПФ (Частота дискретизации/(2*N))
Go to the top of the page
 
+Quote Post
serjj
сообщение Apr 10 2015, 11:49
Сообщение #5


Знающий
****

Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866



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

в свое время делал по вот такой статье:
Прикрепленный файл  slidingdft_bw.pdf ( 150.16 килобайт ) Кол-во скачиваний: 265
Go to the top of the page
 
+Quote Post
eugen_pcad_ru
сообщение Apr 11 2015, 05:00
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 642
Регистрация: 15-11-07
Пользователь №: 32 353



Алгоритм Герцеля принадлежит к числу так называемых алгоритмов полубыстрого преобразования Фурье, так как для расчета всего спектра требуется всего в 2 раза меньше операций, чем для обычного дискретного. В этом плане БПФ выигрывает.
1 Если Вам всё-таки нужно считать полный спектр, что неэффективно, поступаете так же, как с БПФ
2 Если Вам нужно посчитать какие-то отдельные гармоники (а вот здесь как раз АГ может дать выигрыш, но надо посчитать), то в целом можно обойтись и без окон. Выигрыш в производительности зависит от числа требуемых к нахождению гармоник и размера буфера.
3 АГ по сути является БИХ-фильтром, так что при реализации в целочисленной арифметике см. рекомендации выше.


--------------------
Правильно сформулированый вопрос содержит в себе половину ответа.
P.S.: Некоторые модераторы в качестве ответа так навязчиво предлагают посетить свой сайт, что иначе как саморекламу такие действия интерпретировать сложно.
Go to the top of the page
 
+Quote Post
andyp
сообщение Apr 11 2015, 06:55
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 453
Регистрация: 23-07-08
Пользователь №: 39 163



Цитата(eugen_pcad_ru @ Apr 11 2015, 08:00) *
Алгоритм Герцеля принадлежит к числу так называемых алгоритмов полубыстрого преобразования Фурье, так как для расчета всего спектра требуется всего в 2 раза меньше операций, чем для обычного дискретного. В этом плане БПФ выигрывает.


Грубая оценка для выбора Герцель-FFT по комплексным сложениям - log(N)/2 бинов. N - длина требуемого DFT.
Go to the top of the page
 
+Quote Post
serjj
сообщение Apr 11 2015, 08:20
Сообщение #8


Знающий
****

Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866



Цитата
Алгоритм Герцеля принадлежит к числу так называемых алгоритмов полубыстрого преобразования Фурье, так как для расчета всего спектра требуется всего в 2 раза меньше операций, чем для обычного дискретного. В этом плане БПФ выигрывает.
1 Если Вам всё-таки нужно считать полный спектр, что неэффективно, поступаете так же, как с БПФ
2 Если Вам нужно посчитать какие-то отдельные гармоники (а вот здесь как раз АГ может дать выигрыш, но надо посчитать), то в целом можно обойтись и без окон. Выигрыш в производительности зависит от числа требуемых к нахождению гармоник и размера буфера.
3 АГ по сути является БИХ-фильтром, так что при реализации в целочисленной арифметике см. рекомендации выше.

Алгоритм Герцеля наглядно показывает выигрыш когда нужно получить спектр на каждый входной отчёт. Для всего спектра получаем N умножений для Герцеля, N*log(N) - для FFT, N^2 - для DFT. И это на каждый входной отчёт. Но разрядность умножителей Герцеля должна быть выше (я делал почти в 2 раза) для того что бы показать теже характеристики что и в схемах без рекурсии. Но если нам нужно отслеживать спекральные компоненты числом M << N, то тогда для Герцеля получаем M умножений, а для FFT и DFT их число сохраняется. Тогда и выигрыш становится более очевидным. Для больших символьных скоростей этот алгоритм единственное решение для непрерывного отслеживания спектральных составляющих, т.к. Делать FFT на каждый отчёт при большой символьной задача нереализуемая.
Go to the top of the page
 
+Quote Post
eugen_pcad_ru
сообщение Apr 14 2015, 18:45
Сообщение #9


Знающий
****

Группа: Свой
Сообщений: 642
Регистрация: 15-11-07
Пользователь №: 32 353



Краткое сравнение алгоритма с БПФ в приложении... Может пригодится.
Прикрепленные файлы
Прикрепленный файл  st5_3_________.pdf ( 44.87 килобайт ) Кол-во скачиваний: 64
 


--------------------
Правильно сформулированый вопрос содержит в себе половину ответа.
P.S.: Некоторые модераторы в качестве ответа так навязчиво предлагают посетить свой сайт, что иначе как саморекламу такие действия интерпретировать сложно.
Go to the top of the page
 
+Quote Post
alexandr.krupnov
сообщение Apr 15 2015, 06:32
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 41
Регистрация: 3-12-14
Пользователь №: 83 961



Исходный сигнал - 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)
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th June 2025 - 16:09
Рейтинг@Mail.ru


Страница сгенерированна за 0.01432 секунд с 7
ELECTRONIX ©2004-2016