|
минимизация погрешности, при плавающей частоте |
|
|
|
 |
Ответов
|
Oct 16 2009, 19:04
|
Участник

Группа: Участник
Сообщений: 26
Регистрация: 25-06-06
Пользователь №: 18 344

|
Если нужно что то померить и точности FFT не хватает, то можно порекомендовать такие варианты 1. Увеличить длину FFT, добив нулями входную последовательность - это увеличивает разрешение по частоте, выгодно использовать если нужно анализировать весь частотный диапазон 2. Использовать квадратичную и прочие интерполяции, уточняя положение максимума по трем бинам FFT - вроде так делают когда интересных точек в спектре не так много чтобы использовать [1], но и не так мало чтобы использовать [3]. В общем это некиий компромисс между экономией ресурсов и качеством, мне не очень нравится... 3. Поиск локального максимума спектра при помощи алгоритма Герцеля и любого из известных методов поиска экстремума. Способ хорош тем, что не накладывает априорных ограничений на точность, его удобно использовать при отсутствии шума (точнее когда шум сравним с машинной точностью), например если надо эксперементально проверить частотные характеристики рассчитанного фильтра. Если важна скорость, то для поиска лучше использовать метод Брента или другой с квадратичной интерполяцией. Понятно, что выгодно использовать если в спектре интересны 1-2 точки.
Все эти варианты увеличивают точность как по частоте, так и по амплитуде.
Если же интересует только амплитуда, то тут помогают окна без scalloping loss, типа FlatTop и прочих (Potter xxx, Mennen xxx). Ну а использовать их можно как с обычным FFT, если частота заранее неизвестна, или с тем же Герцелем. Последний вариант можно рассматривать как перестраиваемый фильтр - Герцель модулирует, а FlatTop - это тот же НЧ фильтр. Если частота известна с точностью до пол-бина то со стандартными окнами должно хватить одного прохода.
|
|
|
|
|
Oct 17 2009, 05:54
|

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

|
Цитата(AndeyP @ Oct 16 2009, 23:04)  Если нужно что то померить и точности FFT не хватает, то можно порекомендовать такие варианты 1. Увеличить длину FFT, добив нулями входную последовательность - это увеличивает разрешение по частоте, выгодно использовать если нужно анализировать весь частотный диапазон Добавление нулей НЕ УЛУЧШАЕТ разрешения спектрального анализа! Читайте матчасть прежде чем говорить. Иначе вы противоречите фундаментальному принципу неопредлнности Гейзенберга по малому промежутку можете получить сколь угодно высокое частотное разрешение! Цитата(AndeyP @ Oct 16 2009, 23:04)  3. Поиск локального максимума спектра при помощи алгоритма Герцеля и любого из известных методов поиска экстремума. Способ хорош тем, что не накладывает априорных ограничений на точность, его удобно использовать при отсутствии шума (точнее когда шум сравним с машинной точностью), например если надо эксперементально проверить частотные характеристики рассчитанного фильтра. Если важна скорость, то для поиска лучше использовать метод Брента или другой с квадратичной интерполяцией. Понятно, что выгодно использовать если в спектре интересны 1-2 точки. Алгоритм герцеля ничем по сути не отличается от ДПФ, а следовательно вы не получите увеличения разрешения по частоте с его помощью. Алгоритм Герцеля применяют для рассчета спектральной составляющей на заданной частоте без необходимости вычисления ДПФ во всех точках. Принцип неопределенности он не не отменяет и разрешение не улучшает! Цитата(AndeyP @ Oct 16 2009, 23:04)  Все эти варианты увеличивают точность как по частоте, так и по амплитуде. Очередное заблуждение! для увеличения точности оценки частоты необходимо увеличить интервал анализа во времени. Если не увеличивать интервал анализа то невозможно обеспечить улучшение разрешающей способности по частоте! Если у вас выборка сигнала во времени короче 1 секунды, то спектральные составляющие отстоящие менее чем на 1 Гц будут неразличимы что бы вы не делали. Для точного измерения амплитуды используют сглаживающие окна.
|
|
|
|
|
Oct 17 2009, 09:48
|
Участник

Группа: Участник
Сообщений: 26
Регистрация: 25-06-06
Пользователь №: 18 344

|
Цитата(bahurin @ Oct 17 2009, 09:54)  Добавление нулей НЕ УЛУЧШАЕТ разрешения спектрального анализа! Читайте матчасть прежде чем говорить. Иначе вы противоречите фундаментальному принципу неопредлнности Гейзенберга по малому промежутку можете получить сколь угодно высокое частотное разрешение!
Алгоритм герцеля ничем по сути не отличается от ДПФ, а следовательно вы не получите увеличения разрешения по частоте с его помощью. Алгоритм Герцеля применяют для рассчета спектральной составляющей на заданной частоте без необходимости вычисления ДПФ во всех точках. Принцип неопределенности он не не отменяет и разрешение не улучшает! Гейзенберг, герцы и секунды - это из физики, а вопрос судя по всему был про оцифрованный сигнал. Тут не то что Гейзенберга, а даже Котельникова уже поздно вспоминать, поскольку от сигнала осталась только последовательность x[i] из N цифр. И даже секунд между этими цифрами не осталось, а частота меряется уже не герцах или радианах в секунду, а просто в радианах (понятно о чем речь?). А задача стоит как ловчее найти интересные точки на спектре, то есть на еденичной окружности z-образа последовательности x[i]. Заметьте, что хотя достаточно знать значения в N равноотстоящих точках на окружности (дискретный спектр), да и работать с ним конечно удобнее, никто на запрещает работать со значениями в произвольных точках (непрерывный спектр). Например чтобы узнать значение z-образа в точке окружности с аргументом w можно в лоб посчитать сумму x[i]*exp(-I*w*i). Суммы такого вида называются полиномами, что легко увидеть, заменив exp(-I*w) на у. И считать полиномы можно разными способами, хоть в лоб, хоть Горнером, хоть Герцелем. Да, алгоритм Герцеля скорее ближе к правилу Горнера, чем к ДПФ  Ведь ДПФ вычисляет значение полинома сразу на N равноотстоящих точках на единичной окружности, а Герцель считает значение в одной точке, зато произвольно выбранной. Только пожалуйста, не надо говорить что Герцель - это только то, чем DTMF декодируют. Ну да, декодируют, но ведь не только: погуглите Goertzel Horner ради интереса. Ну так вот собственно о вопросе - ДПФ длины N дает значения не в любых точках спектра, а только в равноотстоящих N точках, включая единицу. На жаргоне эти точки называются бинами. Проблема в том, что интересные точки спектра (в данном случае речь идет о локальном максимуме вблизи заданной точки) могут и не совпадать с бинами... Хорошо еще если в соседних бинах значения спектра оказались равны - сразу можно догадаться что в силу симметрии максимум лежит посередине между ними. А как быть если получатся например значения W[k-1] = 3; W[k] = 5; W[k+1] = 4?; Симметрии тут нет, ясно что максимиум между k и k+1, но вопрос, где именно? Можно просто добавить бинов, добив нулями вход (чтобы представить, как это работает, рассмотрите, как удлиненная последовательность умножается на матрицу ДПФ), но есть и другие подходы, которые собственно тут и обсуждаются. Хотя я конечно могу и ошибаться насчет темы обсуждения, поскольку не вполне понял о чем собственно автор спрашивает (сколько точек в спектре его интересует, и какие характеристики сигнала нужны).
|
|
|
|
|
Oct 17 2009, 10:08
|

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

|
Цитата(AndeyP @ Oct 17 2009, 13:48)  Гейзенберг, герцы и секунды - это из физики, а вопрос судя по всему был про оцифрованный сигнал. Тут не то что Гейзенберга, а даже Котельникова уже поздно вспоминать, поскольку от сигнала осталась только последовательность x[i] из N цифр. И даже секунд между этими цифрами не осталось, а частота меряется уже не герцах или радианах в секунду, а просто в радианах (понятно о чем речь?). Здесь Вы не правы - принцип неопределённости связывает неопределённость локализации любой функции и неопределённость локализации её фурье-образа (забудьте Гайзенберга - вспомните оптику, дифракцию и определение разрешения).Я догадываюсь, что Вы хотели сказать про "разрешение" - но Вы не правильно употребили это именно слово - видимо просто другого подходящего не подвернулось. В отношении отсчетов спектра, всегда можно говорить о двух спектральных интервалах - первый - это расстояние между смежными отсчётами (бинами), второй - это полоса частот фильтра вокруг, где этот бин центрирован (ширина спектрального отклика). Так вот интерполяция (вставка нулей, что то же самое) улучшает первый параметр и реально позволяет уточнить положение одиночной синусоиды. Но разрешением принято называть вторую величину - ширину полосы фильтра, отвечающего за данную гармонику. Поэтому разрешение поднять дополнением нулей невозможно и оно всегда будет определяется обратной величиной времени измерения сигнала. После дополнения нулями получаются часто расположеные отсчёты спектра, однако каждый из которых собирается из гармоник сигнала в первоначальном широком диапазоне частот. Много-много спектральных отсчётов с плохим разрешением, без всякой "тонкой структуры" Цитата(AndeyP @ Oct 17 2009, 13:48)  А задача стоит как ловчее найти интересные точки на спектре, то есть на еденичной окружности z-образа последовательности x[i]. Заметьте, что хотя достаточно знать значения в N равноотстоящих точках на окружности (дискретный спектр), да и работать с ним конечно удобнее, никто на запрещает работать со значениями в произвольных точках (непрерывный спектр). Например чтобы узнать значение z-образа в точке окружности с аргументом w можно в лоб посчитать сумму x[i]*exp(-I*w*i). Суммы такого вида называются полиномами, что легко увидеть, заменив exp(-I*w) на у. И считать полиномы можно разными способами, хоть в лоб, хоть Горнером, хоть Герцелем. Да, алгоритм Герцеля скорее ближе к правилу Горнера, чем к ДПФ  Ведь ДПФ вычисляет значение полинома сразу на N равноотстоящих точках на единичной окружности, а Герцель считает значение в одной точке, зато произвольно выбранной. Только пожалуйста, не надо говорить что Герцель - это только то, чем DTMF декодируют. Ну да, декодируют, но ведь не только: погуглите Goertzel Horner ради интереса. Ну так вот собственно о вопросе - ДПФ длины N дает значения не в любых точках спектра, а только в равноотстоящих N точках, включая единицу. На жаргоне эти точки называются бинами. Проблема в том, что интересные точки спектра (в данном случае речь идет о локальном максимуме вблизи заданной точки) могут и не совпадать с бинами... Хорошо еще если в соседних бинах значения спектра оказались равны - сразу можно догадаться что в силу симметрии максимум лежит посередине между ними. А как быть если получатся например значения W[k-1] = 3; W[k] = 5; W[k+1] = 4?; Симметрии тут нет, ясно что максимиум между k и k+1, но вопрос, где именно? Можно просто добавить бинов, добив нулями вход (чтобы представить, как это работает, рассмотрите, как удлиненная последовательность умножается на матрицу ДПФ), но есть и другие подходы, которые собственно тут и обсуждаются. ДПФ действительно определено так как Вы сказали. Но на самом деле частотно равноотстоящие гармоники можно было бы повернуть все вдруг на exp(iw0t) и ничего не изменится, эти N гармоник тоже будут базисом и ничего не случится )) А интересные точки попадут ровненько на получившиеся бины. Это тоже был бы спектр, но непривычный, не физический. Поскольку мы не знаем заранее на сколько нужно повернуть )) то просто берут 3 точки вблизи максимума и проводят параболу. Получается хорошо. Лучше бы было бы подогнать функцию окна под измеренные точки, но это слишком сложно вычислительно. (Если бы аккуратно подогнать SINC то получили бы ровно тот результат, который получается вставкой нулей - т.е. метод вставки нулей - это интерполяция синком. Образующиеся при вставке нулей новообразованые гармоники можно разложить по первоначальному базису и увидеть, что это именно так - интерполяция синком в частотной области). Но поскольку верхушку функции окна в максимуме можно аппроксимировать параболой, то такой подход работает. Вообще ДПФ лучше всего представлять себе как банк фильтров с равноотстоящими центральными частотами и одниковыми, но сдвинутыми частотными откликами. Тогда действительно отдельный фильтр из банка совершенно ничем не отличается от Герцеля. Хотя принято ДПФ называть сразу все фильтры банка. Но нас в отношении измерения частоты изолированой гармоники интересуют только некоторые.
|
|
|
|
Сообщений в этой теме
TigerSHARC минимизация погрешности Sep 4 2009, 10:48 fontp Цитата(TigerSHARC @ Sep 4 2009, 14:48) Ес... Sep 4 2009, 10:55 Den Цитата(fontp @ Sep 4 2009, 14:55) Посмотр... Nov 20 2012, 12:13  fontp QUOTE (Den @ Nov 20 2012, 15:13) Добрый д... Nov 20 2012, 13:17 thermit ЦитатаЕсть сигнал. Частота основной гармоники 50 г... Sep 4 2009, 11:12 fontp Цитата(thermit @ Sep 4 2009, 15:12) Похож... Sep 4 2009, 11:16 thermit ЦитатаБудет размазано. Но если априорно известно, ... Sep 4 2009, 11:27 sup-sup Интереснео, но не очень понятно. Похоже на передач... Sep 4 2009, 18:20 TigerSHARC Это нужно для оценки самой сети (в трёхфазной сети... Sep 5 2009, 12:16 sup-sup Так что, частота дискретизации задана от кварца, а... Sep 5 2009, 17:09 alex_os Цитата(TigerSHARC @ Sep 5 2009, 16:16) Эт... Sep 5 2009, 17:33 bahurin Цитата(TigerSHARC @ Sep 4 2009, 14:48) Ес... Sep 6 2009, 13:01 thermit ЦитатаЭто нужно для оценки самой сети (в трёхфазно... Sep 7 2009, 06:56 TigerSHARC Цитата(fontp @ Sep 4 2009, 14:55) Посмотр... Oct 15 2009, 19:31 fontp Цитата(TigerSHARC @ Oct 15 2009, 23:31) .... Oct 16 2009, 07:20 bahurin Цитата(TigerSHARC @ Sep 4 2009, 14:48) Ес... Oct 16 2009, 11:17 Alex11 Мы тут уже сделали прибор для измерения парметров ... Oct 16 2009, 18:04    AndeyP Цитата(fontp @ Oct 17 2009, 14:08) Здесь ... Oct 17 2009, 19:16     GetSmart Цитата(AndeyP @ Oct 18 2009, 01:16) А есл... Oct 18 2009, 17:20      TigerSHARC Цитата(GetSmart @ Oct 18 2009, 21:20) Тип... Oct 18 2009, 18:49     bahurin Цитата(AndeyP @ Oct 17 2009, 23:16) А спр... Oct 18 2009, 19:28      GetSmart Цитата(bahurin @ Oct 19 2009, 01:28) прин... Oct 18 2009, 22:08       fontp Цитата(GetSmart @ Oct 19 2009, 02:08) При... Oct 19 2009, 07:34        анатолий Цитата(fontp @ Oct 19 2009, 10:34) В реал... Oct 19 2009, 10:21         bahurin Цитата(анатолий @ Oct 19 2009, 14:21) Зде... Oct 19 2009, 10:37         fontp Цитата(анатолий @ Oct 19 2009, 14:21) Есл... Oct 19 2009, 10:43      AndeyP Цитата(bahurin @ Oct 18 2009, 23:28) прин... Oct 19 2009, 20:29       fontp Цитата(AndeyP @ Oct 20 2009, 00:29) Мне к... Oct 20 2009, 09:07        AndeyP Выкладываю свою тестовую среду для алгоритмов оцен... Oct 20 2009, 20:49         GetSmart Цитата(AndeyP @ Oct 21 2009, 02:49) Может... Oct 20 2009, 20:58 анатолий Лет 15 назад мы такое делали на 8051 микроконтролл... Oct 17 2009, 15:36 TigerSHARC Амплитуда мерялась по максимуму интерполяции графи... Oct 18 2009, 15:15 sup-sup Цитата(TigerSHARC @ Sep 4 2009, 13:48) Ес... Oct 19 2009, 05:10 bahurin Цитата(sup-sup @ Oct 19 2009, 09:10)... Oct 19 2009, 05:56 sup-sup Цитата(sup-sup @ Oct 19 2009, 08:10)... Oct 19 2009, 11:04 thermit ЦитатаМогучий принцип. Наверное им хорошо обосновы... Oct 20 2009, 07:18 анатолий Странные какие-то споры.
Сигнал 50 Гц - это, в общ... Oct 20 2009, 10:50 Oldring Цитата(TigerSHARC @ Sep 4 2009, 14:48) Ес... Oct 21 2009, 06:27 TigerSHARC Цитата(Oldring @ Oct 21 2009, 10:27) Вы з... Oct 21 2009, 19:38  Oldring Цитата(TigerSHARC @ Oct 21 2009, 23:38) .... Oct 21 2009, 20:39  alexkok Цитата(TigerSHARC @ Oct 21 2009, 23:38) .... Oct 22 2009, 01:16   TigerSHARC Цитата(alexkok @ Oct 22 2009, 05:16) А за... Oct 27 2009, 15:10    sup-sup Цитата(TigerSHARC @ Oct 27 2009, 18:10) .... Oct 27 2009, 16:28     TigerSHARC Цитата(sup-sup @ Oct 27 2009, 20:28)... Oct 28 2009, 17:24      bahurin Цитата(TigerSHARC @ Oct 28 2009, 20:24) .... Oct 28 2009, 17:48       sup-sup ... не совсем понимаю, что даёт интерполяция сама ... Oct 28 2009, 19:04        TigerSHARC Цитата(sup-sup @ Oct 28 2009, 23:04)... Oct 28 2009, 20:36         sup-sup Цитата(TigerSHARC @ Oct 28 2009, 23:36) .... Oct 28 2009, 21:25          bahurin Цитата(sup-sup @ Oct 29 2009, 00:25)... Oct 29 2009, 05:12           sup-sup Цитата(bahurin @ Oct 29 2009, 09:12) Вы т... Oct 29 2009, 06:14            TigerSHARC Цитата(sup-sup @ Oct 29 2009, 10:14)... Oct 29 2009, 18:23    alexkok Цитата(TigerSHARC @ Oct 27 2009, 18:10) .... Oct 27 2009, 16:30  sup-sup Цитата(TigerSHARC @ Oct 21 2009, 22:38) .... Oct 22 2009, 04:12  bahurin Цитата(TigerSHARC @ Oct 21 2009, 23:38) .... Oct 22 2009, 05:11 TigerSHARC ... как ещё можно минимизировать погрешность??? Oct 29 2009, 20:21 fontp Цитата(TigerSHARC @ Oct 29 2009, 23:21) .... Oct 30 2009, 06:35  sup-sup Цитата(fontp @ Oct 30 2009, 10:35) Вообще... Oct 30 2009, 11:51 AlexU Цитата(TigerSHARC @ Oct 29 2009, 23:21) .... Nov 1 2009, 17:52  GetSmart Цитата(AlexU @ Nov 1 2009, 23:52) На вход... Nov 1 2009, 18:33   AlexU Цитата(GetSmart @ Nov 1 2009, 21:33) Это ... Nov 2 2009, 06:29   fontp Цитата(GetSmart @ Nov 1 2009, 21:33) Это ... Nov 2 2009, 09:08    AlexU Цитата(fontp @ Nov 2 2009, 12:08) "У... Nov 2 2009, 09:27  GetSmart Цитата(AlexU @ Nov 1 2009, 23:52) На вход... Nov 2 2009, 18:49   AlexU Цитата(GetSmart @ Nov 2 2009, 21:49) Отку... Nov 3 2009, 08:20 Евгений Николаев TigerSHARC, Вы определитесь - Вам вычисление часто... Nov 1 2009, 20:12 TigerSHARC Цитата(Евгений Николаев @ Nov 1 2009, 23... Nov 3 2009, 16:40 Евгений Николаев Если аппаратно, то речь, как я понимаю идёт о ПЛИС... Nov 5 2009, 08:04 TigerSHARC Цитата(Евгений Николаев @ Nov 5 2009, 11... Nov 5 2009, 12:27 Евгений Николаев Цитатакоэффицент несинусоидальности посчитать...
У... Nov 5 2009, 15:09 TigerSHARC Цитата(Евгений Николаев @ Nov 5 2009, 18... Nov 5 2009, 15:30 Евгений Николаев Цитатадля предотвращения наложения используется RC... Nov 5 2009, 16:16 TigerSHARC Цитата(Евгений Николаев @ Nov 5 2009, 19... Nov 5 2009, 19:38 Евгений Николаев Все эти приборы работают с окном наблюдения намног... Nov 6 2009, 13:17 TigerSHARC Цитата(Евгений Николаев @ Nov 6 2009, 16... Nov 6 2009, 14:00 анатолий Цитата(Евгений Николаев @ Nov 6 2009, 16... Nov 7 2009, 15:23  TigerSHARC Цитата(анатолий @ Nov 7 2009, 18:23) Прав... Dec 1 2009, 13:56 Евгений Николаев А чем Вас так держит аппаратная частота?
Можно мен... Nov 6 2009, 14:54 TigerSHARC Цитата(Евгений Николаев @ Nov 6 2009, 17... Nov 6 2009, 16:07 Den Спасибо.
Уважаемый fontp, прочитал много Ваших по... Nov 21 2012, 05:13 TigerSHARC Цитата(Den @ Nov 21 2012, 09:13) Спасибо.... Nov 21 2012, 07:40 fontp QUOTE (Den @ Nov 21 2012, 08:13) Спасибо.... Nov 21 2012, 09:12  Den Цитата(fontp @ Nov 21 2012, 13:12) Амплит... Nov 21 2012, 09:33   fontp QUOTE (Den @ Nov 21 2012, 12:33) А разве ... Nov 21 2012, 09:36  Den Цитата(fontp @ Nov 21 2012, 13:12) Я прив... Nov 21 2012, 09:47   fontp QUOTE (Den @ Nov 21 2012, 12:47) Большое ... Nov 21 2012, 09:59 Den 128 точечное БПФ у меня высчитывается за 1.1 мкс.
... Nov 21 2012, 08:32 Den Спасибо.
Буду пробывать.
С уважением, Den. Nov 21 2012, 10:09 Serg76 Уважаемые знатоки!
Для обсуждаемых здесь алгор... Nov 21 2012, 18:46 fontp QUOTE (Serg76 @ Nov 21 2012, 21:46) Уважа... Nov 22 2012, 08:21 Serg76 2 fontp
Спасибо большое за такой развернутый отве... Nov 22 2012, 11:14 Serg76 2 fontp
пока тема не "остыла", хотел ещ... Nov 22 2012, 17:31 fontp QUOTE (Serg76 @ Nov 22 2012, 20:31) 2 fon... Nov 23 2012, 08:31  Serg76 Цитата(fontp @ Nov 23 2012, 11:31) Смысл ... Nov 23 2012, 11:02 Den Добрый день, уважаемый fontp!
Что-то я совсем... Dec 1 2012, 07:27 fontp QUOTE (Den @ Dec 1 2012, 10:27) Добрый де... Dec 2 2012, 11:35 Den Добрый день.
Пытаюсь всё разобраться. Вот ещё код... Dec 20 2012, 10:03
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|