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

Особенности алгоритма Герцеля

Добрый день! Есть задача - определение в сигнале составлющей 22 Гц. АЦП достаточно мощный. Мне требуется в секунду делать порядка 10 проверок того, что сигнал 22Гц есть. Как оптимизировать частоту дискретизации и величину выборки на обработку для данной задачи?(при величине выборки 50 на высоких частотах дискретизации у меня получается полная фигня) В инете копал, но не нашёл прямого ответа на этот вопрос. Книга Блейхута же так написана, что мне, несмотря на физическое образование, не хватает математической подготовки, чтобы её расшифровать.

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


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

Как оптимизировать частоту дискретизации и величину выборки на обработку для данной задачи?(при величине выборки 50 на высоких частотах дискретизации у меня получается полная фигня)

Алгоритм Герцеля есть по своей сути частный случай БПФ. Если мусор показывает БПФ, то и алгоритм Герцеля тже ничего не даст (он дает только выигрыш во времени). ИМХО для оценки точности определения частоты можно воспользоваться требованиями к разрешающей способности спектра мощности (с учетом применяесого окна). Mожно наверное попробовать промоделировать?

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


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

Добрый день! Есть задача - определение в сигнале составлющей 22 Гц. АЦП достаточно мощный. Мне требуется в секунду делать порядка 10 проверок того, что сигнал 22Гц есть. Как оптимизировать частоту дискретизации и величину выборки на обработку для данной задачи?(при величине выборки 50 на высоких частотах дискретизации у меня получается полная фигня) В инете копал, но не нашёл прямого ответа на этот вопрос. Книга Блейхута же так написана, что мне, несмотря на физическое образование, не хватает математической подготовки, чтобы её расшифровать.

 

Дело не в Герцеле. А в принципе. Герцель - это просто способ вычислять отсчёт ДПФ с помощью простейшего фильтра.

Существует принцип непределённости - dF*dT ~ 1. Неопределённость частоты, время измерения...

Поэтому, если измерять в течентии секунды - то все частоты находящиеся примерно в окрестности +-1гц от 22 гц будут схвачены. Или другими словами, если частота дискретизации АЦП 8кгц, частота Найквиста 4 кгц

то необходимо использовать 4кгц/1гц=4000 точек, чтобы иметь непределённость частоты 1 гц. Где здесь 50 точек? 50 точек дают полосу измерения (неопределённость) 4000/50 = 80 гц. 80 гц много больше 22 гц и прихватывают много мусора, в том числе и огромный дрейф обычно присущий в АЦП на постоянной составляющей

 

 

Алгоритм Герцеля есть по своей сути частный случай БПФ.

 

Только ДПФ. БПФ из другой, быстрой, оперы ))

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


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

Так всё же - мне отправляться от величины выборки для Герцеля и подбирать под неё частоту дискретизации или наоборот? Требуется просто обнаружить 22 Гц и всё. Я пробовал 50 точек в выборке с частотой дискретизации 200 Гц(именно по алгоритму Герцеля). При этом был хороший результат - при сигнале 22,5 Гц мощность(22Гц-овой компоненты), рассчитанная по Герцелю была меньше на порядок, чем если подать именно 22Гц. При 500Гц дискр-ии уже хуже - что 22Гц подавай, что 23, а результат вычисления 22 герцовой компоненты почти один и тот же.

Предложите, пожауйста рецепт - я раньше не работал ни сБПФ, ни с ДПФ, так что в предыдущий постах понял не всё, простите меня,теоретика.

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


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

Алгоритм Герцеля есть по своей сути частный случай БПФ. Если мусор показывает БПФ, то и алгоритм Герцеля тже ничего не даст (он дает только выигрыш во времени). ИМХО для оценки точности определения частоты можно воспользоваться требованиями к разрешающей способности спектра мощности (с учетом применяесого окна). Mожно наверное попробовать промоделировать?

Это ни в коей мере не БПФ и даже не ДПФ !!! Это скорее FIFO фильтр с неким подобием коррелятора. Основное отличие Герцеля - он может быть настроен на любую частоту включая дробную частоте дискретизации!

 

Так всё же - мне отправляться от величины выборки для Герцеля и подбирать под неё частоту дискретизации или наоборот? Требуется просто обнаружить 22 Гц и всё. Я пробовал 50 точек в выборке с частотой дискретизации 200 Гц(именно по алгоритму Герцеля). При этом был хороший результат - при сигнале 22,5 Гц мощность(22Гц-овой компоненты), рассчитанная по Герцелю была меньше на порядок, чем если подать именно 22Гц. При 500Гц дискр-ии уже хуже - что 22Гц подавай, что 23, а результат вычисления 22 герцовой компоненты почти один и тот же.

Предложите, пожауйста рецепт - я раньше не работал ни сБПФ, ни с ДПФ, так что в предыдущий постах понял не всё, простите меня,теоретика.

Немного странно что у Вас с повышением частоты дискретизации качество фильтрации падает...хм... а Вы при этом сам фильтр Герцеля, надеюсь, меняете? Еще вопрос - Вы это делаете на какой-то физической установке или в опиумном MatLabе?

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


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

Это ни в коей мере не БПФ и даже не ДПФ !!! Это скорее FIFO фильтр с неким подобием коррелятора. Основное отличие Герцеля - он может быть настроен на любую частоту включая дробную частоте дискретизации!

 

Это в точности ДПФ. Хоть и к БПФ отношения не имеет. ДПФ тоже может быть "настроен" на дробные. ДПФ = Сумма (s(j)*exp(iwj))

Одинаково смещённые при этом будут линейно независимы. Остальные будут от них зависить.

В чём проблема ДПФ, если взять N отсчётных точек , а частот - 2*N? или даже 10*N ?

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

Ширина полосы этих фильтриков в точности определяется величиной 1/(длительность измерения).

Если интересуют две частоты расположенные далеко друг от друга - то может проблем и нет как у Герцеля так и у ДПФ. Если частоты расположены плотно - то и у Герцеля и у ДПФ одинаковые проблемы. Герцель всего лишь удобный рекурсивный способ вычисления ДПФ

 

Так всё же - мне отправляться от величины выборки для Герцеля и подбирать под неё частоту дискретизации или наоборот? Требуется просто обнаружить 22 Гц и всё. Я пробовал 50 точек в выборке с частотой дискретизации 200 Гц(именно по алгоритму Герцеля). При этом был хороший результат - при сигнале 22,5 Гц мощность(22Гц-овой компоненты), рассчитанная по Герцелю была меньше на порядок, чем если подать именно 22Гц. При 500Гц дискр-ии уже хуже - что 22Гц подавай, что 23, а результат вычисления 22 герцовой компоненты почти один и тот же.

Предложите, пожауйста рецепт - я раньше не работал ни сБПФ, ни с ДПФ, так что в предыдущий постах понял не всё, простите меня,теоретика.

 

Ширина полосы вашего спектроанализатора, если не брать эктремальных случаев, определяется длительностью измерений в сек. Задавшись точностью измерения частоты (определяется её стабильностью в случае детектора) Вы определяете время измерения, как Т=1/df. Дальше просто умножив на частоту дискретизации получите число точек для Герцеля N=Fs/df

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


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

Гость TSerg
Это ни в коей мере не БПФ и даже не ДПФ !!!

 

И все же это разновидность ДПФ.

 

 

 

Я пробовал 50 точек в выборке с частотой дискретизации 200 Гц

 

Как видим, даже при частоте дискретизации 70 Гц, но при времени наблюдения 1 с мы получаем вполне различимый пик на 22 Гц

post-29537-1209024629_thumb.jpg

 

А при частоте 200 Гц ситуация намного лучше.

post-29537-1209025586_thumb.jpg

 

Если же время наблюдения 500 мс, то разрешение по частоте ухудшается и в полном соответствии с вышесказанным группой товарищей.

post-29537-1209025701_thumb.jpg

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


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

Немного странно что у Вас с повышением частоты дискретизации качество фильтрации падает...хм... а Вы при этом сам фильтр Герцеля, надеюсь, меняете? Еще вопрос - Вы это делаете на какой-то физической установке или в опиумном MatLabе?

У меня реальная физическая система - антенна, фильтры, микроконтроллер.

Что значит менять фильтр, ведь это алгоритм вычисления по формулам, в которые входят частота дискретизации, величина выборки, собственно частота, амплитуду которой я ищу (22Гц) и значения сигнала, снятые с АЦП. Естественно, я при изменении величины выборки или частоты дискретизации меняю соответствующие сонстанты в функции алгоритма Герцеля.

 

 

Ширина полосы вашего спектроанализатора, если не брать эктремальных случаев, определяется длительностью измерений в сек. Задавшись точностью измерения частоты (определяется её стабильностью в случае детектора) Вы определяете время измерения, как Т=1/df. Дальше просто умножив на частоту дискретизации получите число точек для Герцеля N=Fs/df

Т.е. если я хочу проверять наличие 22Гц составляющей 10 раз в секунду, то время измерения будет 0,1с а ситуация по частоте будет плохая - df=10Гц. Обидно, а вообще есть обходные пути(Если не строить цифровой фильтр), чтобы измерять 10 раз в секунду, а диапазон частот 22+/-0,5 Гц?

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


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

Т.е. если я хочу проверять наличие 22Гц составляющей 10 раз в секунду, то время измерения будет 0,1с а ситуация по частоте будет плохая - df=10Гц. Обидно, а вообще есть обходные пути(Если не строить цифровой фильтр), чтобы измерять 10 раз в секунду, а диапазон частот 22+/-0,5 Гц?

 

Ну на пределе... На самом деле там может быть множитель 2 или ещё какой - это всё написано было по-порядку. Скорее непределённость частоты у Вас будет +-5гц. Самое лучшее, что Вы можете сделать - это выбрать частоту дискретизации кратной своим 22гц - так чтобы обнулить отклик фильтра на постоянной составляющей, посадив ему боковой 0 sinc-а на постоянную составляющую. (У реальных АЦП обычно на частотном нуле имеется сильный тепловой дрейф). Возьмите 88 или 110гц, например

 

Принцип неопределённости - самый общий принцип, не зависит от метода и обходных путей его обойти нет. Эксперты по спектральному анализу говорят, что немного лучшие результаты дают нелинейные методы, типа AR-моделей. Но не на много...Впрочем, всё зависит от постановки задачи. Если задача такая, что 22 гц - обнаруживается, на фоне частоты 21гц - то определённо можно сказать, что улучшить метод не получится.

 

Если же Вам нужно отличить наличие сигнала 22гц, от его отсутствия, причём АПРИОРНО известно, что никаких других гармоник там не может присутствовать кроме небольшого шума - то можно что-то придумать...

Такие методы называют "сверхразрешением", при высоком отношении сигнал/шум время измерения можно улучшить хоть и на порядок. Записать максимум правдоподобия и строить пороговый обнаружитель...

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


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

Т.е. если я хочу проверять наличие 22Гц составляющей 10 раз в секунду, то время измерения будет 0,1с а ситуация по частоте будет плохая - df=10Гц.
Совершенно неверное утверждение. Если отношение С/Ш сколь угодно велико, за время 0,1С можно измерить частоту синусоидального сигнала со сколь угодной точностью.

Только каким боком здесь всё это? Вам же нужно определить наличие/отсутствие гармонического тона с частотой 22Гц, и только лишь, верно?

Для решения задачи нужны такие данные, как отношение С/Ш на входе анализатора, вид и спектральный состав иных помех, и др... Иначе оценить применимость того или иного метода будет затруднительно.

 

 

...Обидно, а вообще есть обходные пути(Если не строить цифровой фильтр), чтобы измерять 10 раз в секунду, а диапазон частот 22+/-0,5 Гц?
Методов есть несколько. Например, корреляционный. Применимость зависит от условий.

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


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

Совершенно неверное утверждение. Если отношение С/Ш сколь угодно велико, за время 0,1С можно измерить частоту синусоидального сигнала со сколь угодной точностью.
Гениально! Вот до чего могут довести умные книжки :) Особенно если их читать и не думать.

 

Рекомендую слушать fontp.

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


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

Это в точности ДПФ.

 

Угу...Только FIFO и на основе резонатора с БИХ. Еще он легко, при желании, переделывается на спектр мощностей. Уж лучше его классифицировать как фильтр

Хоть и к БПФ отношения не имеет. ДПФ тоже может быть "настроен" на дробные. ДПФ = Сумма (s(j)*exp(iwj))

 

По определению ДПФ не может быть настроен на дробные по отношению к частоте дискретизации, а "механически", как накапливающий оконный фильтр - конечно может...

 

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

 

Это как с нейросетями - для одного никакого, а другой на эффекте прибор разработал.

 

Герцель всего лишь удобный рекурсивный способ вычисления ДПФ

...

В свете царящей на данный момент языково-смысловой парадигмы в программировании лучше это слово не применять...

 

И все же это разновидность ДПФ.

 

Все-таки это даже близко не она. Ни как алгоритм ни как физический принцип(формула)...

 

Как видим, даже при частоте дискретизации 70 Гц, но при времени наблюдения 1 с мы получаем вполне различимый пик на 22 Гц

 

А при частоте 200 Гц ситуация намного лучше.

 

Если же время наблюдения 500 мс, то разрешение по частоте ухудшается и в полном соответствии с вышесказанным группой товарищей.

 

... При 500Гц дискр-ии уже хуже...

При повышении частоты ситуация улучшается, где упоминание о 500 ms?

 

Т.е. если я хочу проверять наличие 22Гц составляющей 10 раз в секунду, то время измерения будет 0,1с а ситуация по частоте будет плохая - df=10Гц. Обидно, а вообще есть обходные пути(Если не строить цифровой фильтр), чтобы измерять 10 раз в секунду, а диапазон частот 22+/-0,5 Гц?

 

Да с чего же это??? Измеряйте на порядки чаще, кто мешает?...

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


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

Принцип неопределённости - самый общий принцип, не зависит от метода и обходных путей его обойти нет.
Это верно. Только не нужно прикручивать его к задаче, где он ни к селу, ни к городу.

 

...Эксперты по спектральному анализу говорят, что немного лучшие результаты дают нелинейные методы, типа AR-моделей. Но не на много...Впрочем, всё зависит от постановки задачи. Если задача такая, что 22 гц - обнаруживается, а 21 - гц уже нет, то определённо можно сказать, что улучшить метод не получится.
Ну, во-первых, AR относится всё-таки к линейным методам анализа систем. А во-вторых, при отсутствии гармонических и иных помех можно обойтись и другим методом, например, прямым замером изменения фазы сигнала на заданном интервале времени. Была здесь, на форуме, подобная тема, я там этот метод подробно расписал.

 

...Если же Вам нужно отличить наличие сигнала 22гц, от его отсутствия, причём АПРИОРНО известно, что никаких других гармоник там не может присутствовать кроме небольшого шума - то можно что-то придумать...
Вне всякого сомнения. :)

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


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

Гениально! Вот до чего могут довести умные книжки :) Особенно если их читать и не думать.

 

Рекомендую слушать fontp.

 

:-)))))

 

Он сказал примерно то же самое, только другим боком. Вы бы не лезли с теоремой Котельникова :-)

 

Если нужно обнаружить единичную гармонику на фоне шума - то можно, всё зависит от отношения сигнал/шум. Если нужно обнаруживать гармонику на фоне других гармоник - то нельзя. Причём нужно учесть, что скорее всего постоянная составляющая в сигнале АЦП присутствует паразитно. Т.е. ему всё таки нужно отличить 22 гц от 0 гц, т.е нужно иметь хотя бы 10 гц "разрешения"

 

Угу...Только FIFO и на основе резонатора с БИХ. Еще он легко, при желании, переделывается на спектр мощностей. Уж лучше его классифицировать как фильтр

По определению ДПФ не может быть настроен на дробные по отношению к частоте дискретизации, а "механически", как накапливающий оконный фильтр - конечно может...

 

Тот ДПФ, что в курсе математики - не может. Там интересуются только ортогональными базисами.

Если рассматривать любые суммы с комплексными экспонентами - то может.

И его возможности в точности такие же как у Герцеля. Хоть со спектром мощности хоть без

Герцель - это просто IIR реализация сумм ДПФ, которые типа FIR :-)))

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


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

Гениально! Вот до чего могут довести умные книжки :) Особенно если их читать и не думать.

 

Рекомендую слушать fontp.

А я вот рекомендую лично Вам почитать умные книжки. Невежество существует не для того, чтобы выставлять его напоказ, а для того, чтобы его лечить; я уже писал об этом.

А если имеете что возразить - пишите по существу, а не устраивайте обезьянник в очередной теме.

 

Все-таки это даже близко не она. Ни как алгоритм ни как физический принцип(формула)...
Вам тоже сильно рекомендую. Почитайте у Романюка. Глава называется что-то типа "Связь полосовой фильтрации с ДПФ".

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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