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

 
 
> Точно измерить частоту.
b-volkov
сообщение Feb 21 2008, 16:40
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 137
Регистрация: 10-04-07
Из: г. Троицк
Пользователь №: 26 907



Имеем на выходе датчика синусоиду примерно 2кГц в течении 0.5 сек. , т.е. цуг из примерно 1000 периодов. В зависимости от физ. величины частота меняется на +-10% Считается, что во время цуга частота не меняется. Надо определить частоту с точностью хотя бы до 0.01Гц. На данный момент метод используетсяпрямое измерение периода каждого колебания с дальнейшей статистической обработкой. При существующем уровне помех, наводок и т.д. точность получается не лучше 0.1Гц. Вопрос: как методами ЦОС уточнить результат измерения? Это вообще возможно теоретически? Сразу должен оговориться, что я о цифровой обработке имею весьма общие представления и никакой практики. Мне в голову приходит только свертка с синусоидами от (f0 – 0.1Гц) до ( f0 + 0.1Гц) с шагом 0.01Гц (f0-приблицительно измеренная частота) и поиском "резонанса". Может быть можно как по другому, попроще?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
TigerSHARC
сообщение Mar 2 2010, 20:12
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 688
Регистрация: 4-09-09
Пользователь №: 52 195



Я так понимаю, что это всё рекомендации для общего случая.

А у меня сигнал известен - синусоида сетевой частоты (42.5... 57.5Гц). Синусоида может содержать гаромники кратные 5Гц. Амплитуда гармоник не превышает 10% от основной.
Погрешность вычисления частоты должна быть >0,01Гц.
Алгоритм тестируется с гауссовым шумом при ОСШ >40дБ.

А если отфильтровать сигнал полосовиком! Диапазон частоты ведь известен. Скажем полосовой БИХ-фильтр на частоту 40-70 Гц. Тогда же можно будет мерять частоту по двум опорным точкам (если нтерполировать вблизи них). Да! Частота должна ещё усредняться по нескольким десяткам периодов.

P.S. Просто здаётся мне: что БПФ, что автокореляция - это много процессорного времени.

Сообщение отредактировал TigerSHARC - Mar 2 2010, 20:28
Go to the top of the page
 
+Quote Post
bahurin
сообщение Mar 3 2010, 05:17
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 240
Регистрация: 20-09-08
Пользователь №: 40 347



Вариант такой есть. Умножить на комплексную экспоненту и взять фазу. Угол наклона фазы покажет разность частоты синусоиды и частоты комплексной экспоненты. соответсвенно df = dPhi/dT. Таким образом увеличивая интервал обработки вы получите сколь угодно высокую точность. Такую обработка лучше чем просто бпф.
Go to the top of the page
 
+Quote Post
fontp
сообщение Mar 3 2010, 07:49
Сообщение #4


Эксперт
*****

Группа: Свой
Сообщений: 1 467
Регистрация: 25-06-04
Пользователь №: 183



Цитата(bahurin @ Mar 3 2010, 08:17) *
Вариант такой есть. Умножить на комплексную экспоненту и взять фазу. Угол наклона фазы покажет разность частоты синусоиды и частоты комплексной экспоненты. соответсвенно df = dPhi/dT. Таким образом увеличивая интервал обработки вы получите сколь угодно высокую точность. Такую обработка лучше чем просто бпф.


Увеличивая интервал обработки можно получить как-угодную точность каким-угодно методом. В этих задачах
оптимальность означает - как быстро растёт точность при увеличении интервала. Оптимальность это не только научные понты для ученых. Мы не можем реально значительно увеличивать интервал измерения, только в пределах стабильности самих параметров сигнала (амплитуды, частоты)

Такая обработка ничем не лучше спектрального оценивания, хотя по определению должна давать точность по максимуму правдоподобия (CRLB), если честно подогнать минимум квадратов. Только вычислительно это даже сложнее, ибо Вы должны
1. Умножить на центральную комплексную экспоненту (снести сигнал в 0) и отфильтровать ФНЧ.
2. В каждой точке (возможно после какого то усреднения-сабсамплинга) взять арктангенс с поправкой на непрерывность фазы (2*pi туда-сюда)
3. Подогнать линейную регрессию Ф=at+B, a - частота
Вычислительно это будет скорее сложнее чем спектральное оценивание, а не проще, даже с применением CORDIC для арктангенса. (Не говоря уже о том, что это будет работать только при достаточно высоком SNR)

Сравните с оцениванием спектра и обратной квадратичной интерполяцией. Если интервал частот узкий, то сразу можно начинать с того, что называют ML-extension

1. Умножить на центральную комплексную экспоненту (снести сигнал в 0) и отфильтровать ФНЧ. Соответственно прорежение.
2. Взять 5-7 сумм типа ДПФ в интервале [-7.5, 7.5]. Оценка энергии
3. Найти максимум энергии и по трём точкам построить параболу. Аргумент максимума - частота

Точность будет примерно такая-же.
Go to the top of the page
 
+Quote Post
bahurin
сообщение Mar 3 2010, 08:39
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 240
Регистрация: 20-09-08
Пользователь №: 40 347



Цитата(fontp @ Mar 3 2010, 10:49) *
Такая обработка ничем не лучше БПФ, хотя по определению должна давать точность по максимуму правдоподобия (CRLB).


Интересно, почему тогда системы слежения выделяют фазу и производят подстройку частоты именно на основе фазового измерения, а не на основе БПФ?
На самом деле такая оценка дает точность соответсвующую методу максимального правдоподобия. Именно поэтому она лучше БПФ. При бпф после умножения на комплексную экспоненту все значения складываются (этакий фильтр) в результате вы получите некую среднюю фазу и не сможете понять как она меняется на интервале обработки. Здесь же у вас есть информация о фазе. Зная что у нас одна синусоида это линейная функция. Это можно использовать для определения df. Кстати в этом случае раскрыть периодичность арктангенса вполне не сложно читай например здесь

ЗЫ кстати данная реализация куда быстее бпф, так как арктангенс можно вообще не вычислять а задать таблично.

Сообщение отредактировал bahurin - Mar 3 2010, 08:41
Go to the top of the page
 
+Quote Post
fontp
сообщение Mar 3 2010, 11:41
Сообщение #6


Эксперт
*****

Группа: Свой
Сообщений: 1 467
Регистрация: 25-06-04
Пользователь №: 183



Цитата(bahurin @ Mar 3 2010, 11:39) *
Интересно, почему тогда системы слежения выделяют фазу и производят подстройку частоты именно на основе фазового измерения, а не на основе БПФ?
На самом деле такая оценка дает точность соответсвующую методу максимального правдоподобия. Именно поэтому она лучше БПФ. При бпф после умножения на комплексную экспоненту все значения складываются (этакий фильтр) в результате вы получите некую среднюю фазу и не сможете понять как она меняется на интервале обработки. Здесь же у вас есть информация о фазе. Зная что у нас одна синусоида это линейная функция. Это можно использовать для определения df. Кстати в этом случае раскрыть периодичность арктангенса вполне не сложно читай например здесь

ЗЫ кстати данная реализация куда быстее бпф, так как арктангенс можно вообще не вычислять а задать таблично.




Она не лучше спектрального оценивания ("БПФ"), именно потому, что в очень широких пределах SNR (0-40дб) после интерполяции спектра это "БПФ" даёт именно точность максимального правдоподобия, соответствующую предельной оценке Крамера-Рао. Ваше утверждение про "лучше" - голословно, а я приводил ссылки на работы, где предельные оценки достигнуты. Спектральные оценки ДПФ это то же самое синхронное детектирование и линейную фазу гармоники ДПФ фильтруют оптимально, чего уж там "понимать". Нельзя быть святее Папы.

Возможно "такая оценка" с измерением фазы и будет лучше, но только при ещё более высоких SNR.
При SNR<10 дб "такая оценка" наоборот работать будет плохо, поскольку сама возможность восстанавливать линейную фазу по непрерывности по значению в пределах 2*pi исчезает - всё забито шумом. Это я говорю по собственному опыту. Я все эти способы пробовал.

По производительности. Это арктангенс двух переменных с восстановлением непрерывности фазы
Ph[m] = arctg2(SIm,SQm);
if (ABS(Ph[m-1]-Ph[m]) > M_PI) {// phase jump is detected
if (ABS(Ph[m-1]-Ph[m]-2*M_PI) <= M_PI) {
Ph[m] += 2*M_PI;
}else {
Ph[m] -= 2*M_PI;
}
}

1. 2 сравнения чтобы выяснить квадрант
2. Деление (x/y) или (y/x) после сравнения кто из них меньше, чтобы не делить на примерно 0 и не получать примерно бесконечность
3. Чтобы считать арктангенс уже от одной переменной в лоб по таблице с приличной точностью таблица должна быть уж очень большой. Поэтому обычно считают по быстрому алгоритму CORDIC по небольшой "фрактальной" таблице для одного квадранта.
4. Восстановление непрерывности фазы - еще несколько сравнений и вычитаний как написано выше

Всё про всё займет если не аппаратно тактов 50-100. Итого имеем пусть 50*N - N длина блока. Вычисление FFT требует примерно 4*N*log(N), DFT на современной архитектуре с двумя МАС-аккумуляторами - просто k*N, k - число вычисляемых гармоник в диапазоне. Плюс корреляция (Ph[i]*i), необходимая для подгонки линейной модели (регрессии, сумма(i*i) пусть расчитано предварительно, частота по линейной регрессии = сумма(Ph[i]*i)/сумма(i*i)). Арктангенсы выгодней считать получается только ассимптотически при очень больших блоках N и то только в некоторых случаях, когда 50 гармоник DFT (синхронных детекторов) недостаточно.

ЗЫ. Что касается "систем слежения" (видимо ФАПЧ c обратной связью) то можно совершенно определённо сказать, что всякий ФАПЧ в синхронизм входит медленней, чем это делают измерительные feed-forward системы, причем последние для области низких SNR работают как раз чаще всего на оценивании спектра через интерполяцию.
Если не ставить целью провести измерение частоты максимально быстро, то в принципе, задачу можно решать стандартно именно с помощью ФАПЧ. Вполне приемлемое решение, но оно никогда не будет оптимально по времени измерения. Есть даже такие готовые микросхемы квадратурной демодуляции с фазовым детектором и цифровым генератором. Код управляющий частотой и соответствует частоте входного сигнала. Только это всегда будет немного тормозное решение, уступающее схемам по прямому измерению без обратной связи по точности/времени измерения
Go to the top of the page
 
+Quote Post
bahurin
сообщение Mar 3 2010, 14:08
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 240
Регистрация: 20-09-08
Пользователь №: 40 347



Цитата(fontp @ Mar 3 2010, 14:41) *
Возможно "такая оценка" с измерением фазы и будет лучше, но только при ещё более высоких SNR.
При SNR<10 дб "такая оценка" наоборот работать будет плохо, поскольку сама возможность восстанавливать линейную фазу по непрерывности по значению в пределах 2*pi исчезает - всё забито шумом. Это я говорю по собственному опыту. Я все эти способы пробовал.


Думаю, что поставленные требования к точности оценки частоты подразумевают, что отношение сигнал-шум велико (гораздо больше 10 дБ). Именно поэтому я и предложил такой вариант.

Цитата(fontp @ Mar 3 2010, 14:41) *
Чтобы считать арктангенс уже от одной переменной в лоб по таблице с приличной точностью таблица должна быть уж очень большой


Как раз в этом случае высокая точность арктангенса и не нужна, поскольку мы измеряем не мгновенную фазу, а "медленное" изменение этой фазы. Так например если есть таблица из 360-и значений арктангенса, то средняя ошибка измерения одной фазы будет 0.5 градуса. 0.5 градуса на интервале T = 1 сек приведут к ошибке по частоте равной 0.5*pi/180 =0.008 Гц.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- b-volkov   Точно измерить частоту.   Feb 21 2008, 16:40
- - akl   Цитата(b-volkov @ Feb 21 2008, 20:40...   Feb 21 2008, 17:35
- - fontp   Существует теоретический предел точности измерения...   Feb 21 2008, 20:13
|- - TigerSHARC   Цитата(fontp @ Feb 22 2008, 00:13) Сущест...   Mar 1 2010, 14:38
|- - fontp   Цитата(TigerSHARC @ Mar 1 2010, 17:38) А ...   Mar 1 2010, 15:01
|- - TigerSHARC   Цитата(fontp @ Mar 1 2010, 19:01) Чем бол...   Mar 1 2010, 15:09
|- - fontp   Цитата(TigerSHARC @ Mar 1 2010, 18:09) Сп...   Mar 1 2010, 15:13
- - Михаил_K   Судя по тому, что вы производите статистическую об...   Feb 29 2008, 11:08
- - TigerSHARC   А как насчёт способа когда определяем две опорные ...   Mar 1 2010, 17:54
|- - fontp   Цитата(TigerSHARC @ Mar 1 2010, 20:54) А ...   Mar 1 2010, 18:18
- - DMax   Цитата(b-volkov @ Feb 21 2008, 19:40...   Mar 2 2010, 11:57
|- - fontp   Цитата(DMax @ Mar 2 2010, 14:57) Если час...   Mar 2 2010, 12:58
|||- - petrov   Цитата(fontp @ Mar 3 2010, 14:41) Она не ...   Mar 3 2010, 12:58
||||- - fontp   Цитата(petrov @ Mar 3 2010, 15:58) Без вс...   Mar 3 2010, 13:18
||||- - petrov   Цитата(fontp @ Mar 3 2010, 16:18) Но не т...   Mar 3 2010, 13:40
||||- - fontp   Цитата(petrov @ Mar 3 2010, 16:40) Но име...   Mar 3 2010, 14:06
|||- - fontp   Цитата(bahurin @ Mar 3 2010, 17:08) Думаю...   Mar 3 2010, 14:38
||- - blackfin   Цитата(fontp @ Mar 3 2010, 10:49) Сравнит...   Mar 4 2010, 07:54
||- - fontp   Цитата(blackfin @ Mar 4 2010, 10:54) Мне ...   Mar 4 2010, 08:15
|- - blackfin   Цитата(TigerSHARC @ Mar 2 2010, 23:12) Пр...   Mar 3 2010, 08:37
- - leksa   Всем здравствуйте! Тема интересная, позвольте ...   Mar 3 2010, 17:04
- - TigerSHARC   для fontp: хочу всё таки запустить метод маклеода....   Mar 3 2010, 17:38
|- - fontp   Цитата(TigerSHARC @ Mar 3 2010, 20:38) дл...   Mar 3 2010, 18:04
|- - TigerSHARC   Цитата(fontp @ Mar 3 2010, 21:04) Во всех...   Mar 3 2010, 21:26
- - fontp   вот ещё нашелся тот матлабовский тест по ссылке, ...   Mar 4 2010, 07:31
- - TigerSHARC   А я делаю так. Беру выборку размером в два периода...   Mar 4 2010, 12:57
|- - КонстантинТ   Судя по всему измеряете частоту прецессии (измерен...   Mar 4 2010, 13:38
|- - TigerSHARC   Цитата(КонстантинТ @ Mar 4 2010, 16:38) С...   Mar 4 2010, 14:27
|- - КонстантинТ   Цитата(TigerSHARC @ Mar 4 2010, 18:27) Не...   Mar 5 2010, 08:51
- - TigerSHARC   Скажите мне, ну причём тут разговоры про сигнал/шу...   Mar 11 2010, 17:31
|- - Oldring   Цитата(TigerSHARC @ Mar 11 2010, 20:31) С...   Mar 11 2010, 18:13
|- - fontp   Цитата(TigerSHARC @ Mar 11 2010, 20:31) Т...   Mar 11 2010, 19:15
- - vadon   случайно наткнулся на открытый проект по измерению...   Jul 28 2010, 09:08
- - Pechka   А не пробовали моделировать фильтр Герцеля? В смыс...   Jul 31 2010, 16:04
- - bahurin   читаю и понимаю, что люди вопросы задают и ждут оп...   Aug 2 2010, 05:19


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

 


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


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