alexandr.krupnov 0 10 апреля, 2015 Опубликовано 10 апреля, 2015 · Жалоба Формулу рассчёта к-той выборки я понял. Но не могу никак связать количество выборок в массиве с частотным спектром. Я недавно разобрался с БПФ, понял зачем нужны окна и что такое "размазывание" сигнала по спектру. Как избежать размазывания в алгортиме Герцеля и где об этом почитать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Lmx2315 5 10 апреля, 2015 Опубликовано 10 апреля, 2015 · Жалоба http://www.dsplib.ru/content/goertzel/goertzel.html может будет полезно Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andyp 10 10 апреля, 2015 Опубликовано 10 апреля, 2015 · Жалоба Формулу рассчёта к-той выборки я понял. Но не могу никак связать количество выборок в массиве с частотным спектром. Я недавно разобрался с БПФ, понял зачем нужны окна и что такое "размазывание" сигнала по спектру. Как избежать размазывания в алгортиме Герцеля и где об этом почитать? Алгоритм Герцеля - просто способ рассчета ДПФ для некоторых значений частот. Он выгоден, когда значения ДПФ для всех частот, кроме ограниченного набора, не интересуют. Если нужны окна, то их можно применять на входе Герцеля также как и на входе БПФ. Для этого, также как и в случае "полноценного" спектрального анализа, сигнал надо умножить на периодическую оконнную функцию. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexandr.krupnov 0 10 апреля, 2015 Опубликовано 10 апреля, 2015 · Жалоба Спасибо, понял сам. Частотный шаг для каждого коэффициента в алгоритме герцеля определяется так же как и при ДПФ/БПФ (Частота дискретизации/(2*N)) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
serjj1333 0 10 апреля, 2015 Опубликовано 10 апреля, 2015 · Жалоба При реализации непрерывного Герцеля (всегда работает, всегда требуются данные на выходе преобразования) могут возникнуть проблемы с устойчивостью, т.к. в отличие от ДПФ Герцель суть БИХ фильтр. Если делается на ПЛИС нужно будет увеличивать разрядность на умножителе, т.к. незначительная ошибка в точности очень быстро разрастается в рекурсии. Для решения проблемы с устойчивостью вводят поправки а-ля "забывание", но там все так тонко, чуть чуть отходишь от исходной рекурсии - все разваливается :rolleyes: (мне этот алгоритм показался больно уж "нежным" или это я такой криворукий) в свое время делал по вот такой статье: slidingdft_bw.pdf Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
eugen_pcad_ru 0 11 апреля, 2015 Опубликовано 11 апреля, 2015 · Жалоба Алгоритм Герцеля принадлежит к числу так называемых алгоритмов полубыстрого преобразования Фурье, так как для расчета всего спектра требуется всего в 2 раза меньше операций, чем для обычного дискретного. В этом плане БПФ выигрывает. 1 Если Вам всё-таки нужно считать полный спектр, что неэффективно, поступаете так же, как с БПФ 2 Если Вам нужно посчитать какие-то отдельные гармоники (а вот здесь как раз АГ может дать выигрыш, но надо посчитать), то в целом можно обойтись и без окон. Выигрыш в производительности зависит от числа требуемых к нахождению гармоник и размера буфера. 3 АГ по сути является БИХ-фильтром, так что при реализации в целочисленной арифметике см. рекомендации выше. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andyp 10 11 апреля, 2015 Опубликовано 11 апреля, 2015 · Жалоба Алгоритм Герцеля принадлежит к числу так называемых алгоритмов полубыстрого преобразования Фурье, так как для расчета всего спектра требуется всего в 2 раза меньше операций, чем для обычного дискретного. В этом плане БПФ выигрывает. Грубая оценка для выбора Герцель-FFT по комплексным сложениям - log(N)/2 бинов. N - длина требуемого DFT. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
serjj1333 0 11 апреля, 2015 Опубликовано 11 апреля, 2015 · Жалоба Алгоритм Герцеля принадлежит к числу так называемых алгоритмов полубыстрого преобразования Фурье, так как для расчета всего спектра требуется всего в 2 раза меньше операций, чем для обычного дискретного. В этом плане БПФ выигрывает. 1 Если Вам всё-таки нужно считать полный спектр, что неэффективно, поступаете так же, как с БПФ 2 Если Вам нужно посчитать какие-то отдельные гармоники (а вот здесь как раз АГ может дать выигрыш, но надо посчитать), то в целом можно обойтись и без окон. Выигрыш в производительности зависит от числа требуемых к нахождению гармоник и размера буфера. 3 АГ по сути является БИХ-фильтром, так что при реализации в целочисленной арифметике см. рекомендации выше. Алгоритм Герцеля наглядно показывает выигрыш когда нужно получить спектр на каждый входной отчёт. Для всего спектра получаем N умножений для Герцеля, N*log(N) - для FFT, N^2 - для DFT. И это на каждый входной отчёт. Но разрядность умножителей Герцеля должна быть выше (я делал почти в 2 раза) для того что бы показать теже характеристики что и в схемах без рекурсии. Но если нам нужно отслеживать спекральные компоненты числом M << N, то тогда для Герцеля получаем M умножений, а для FFT и DFT их число сохраняется. Тогда и выигрыш становится более очевидным. Для больших символьных скоростей этот алгоритм единственное решение для непрерывного отслеживания спектральных составляющих, т.к. Делать FFT на каждый отчёт при большой символьной задача нереализуемая. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
eugen_pcad_ru 0 14 апреля, 2015 Опубликовано 14 апреля, 2015 · Жалоба Краткое сравнение алгоритма с БПФ в приложении... Может пригодится. st5_3_________.pdf Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexandr.krupnov 0 15 апреля, 2015 Опубликовано 15 апреля, 2015 · Жалоба Исходный сигнал - 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) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться