Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Измерение сигнала с помощью БПФ
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
Димитрий
Приветствую всех.
Стоит задача измерить сигнал в полосе частот от 10 Гц до 100 кГц с полосой 1 Гц. Сигнал оцифровывается на частоте 2,5 МГц.
Вроде вариант БПФ но на картинки не совсем превычное изображение спектра по сравнению с анализаторами, а именно на анализаторе колокообразный сигнал, а после БПФ палка, и когда частота не попадает в точку то есть ошибка порядка 1 дБ.
В принципе вопрос в том как на анализаторах применяя БПФ получают нормальную картинку в виде колокообразного сигнала? Интерполяция линейная между точками БПФ, может быть все дело в интерполяции?
fontp
Используйте спектральные окна и будет Вам колокол.
Между бинами БПФ в общем случае информация не доступна, в том смысле, что БПФ в общем случае не может давать разрешение лучше бина.

В частном случае узкой спектральной палки используют интерполяцию только не линейную
Например вот такие сложные способы интерполяции по ссылкам здесь в форуме
http://electronix.ru/forum/index.php?showt...mp;#entry695667

Или квадратичная интерплоляция. Вот тут исчерпывающая информация по квадратичной интерполяции одиночного спектрального пика
https://ccrma.stanford.edu/STANM/stanm/node3.html

Точность определения амплитуды и частоты изолированой сингулярности в спектре (уже чем бин) ограничены только отношением сигнал/шум, а форма известна заранее - это инструментальная функция окна.
При интерполяции куда попадает точка - неважно. Производится предельно точная (в статистическом смысле) оценка параметнов - амплитуды, частоты и фазы
Димитрий
Цитата(fontp @ Sep 15 2010, 23:49) *
Используйте спектральные окна и будет Вам колокол.
Между бинами БПФ в общем случае информация не доступна, в том смысле, что БПФ в общем случае не может давать разрешение лучше бина.

В частном случае узкой спектральной палки используют интерполяцию только не линейную
Например вот такие сложные способы интерполяции по ссылкам здесь в форуме
http://electronix.ru/forum/index.php?showt...mp;#entry695667

Или квадратичная интерплоляция. Вот тут исчерпывающая информация по квадратичной интерполяции одиночного спектрального пика
https://ccrma.stanford.edu/STANM/stanm/node3.html

Точность определения амплитуды и частоты изолированой сингулярности в спектре (уже чем бин) ограничены только отношением сигнал/шум, а форма известна заранее - это инструментальная функция окна.
При интерполяции куда попадает точка - неважно. Производится предельно точная (в статистическом смысле) оценка параметнов - амплитуды, частоты и фазы


Спасибо за исчерпывающий ответ.
Alex11
Еще многое зависит от сигнала. Что такое 1Гц, приведенный выше? Требуемая дискретность или ширины полос присутствующих сигналов? Если Вы хотите ихмерять сигнал такой, что при Вашей длине буфера спектральные составляющие не перекрываются (с учетом наложенного окна), то можно брать корень квадратный из суммы квадратов отсчетов в интересующей полосе и получать очень точное среднеквадратичное значение сигнала в этой полосе (это всегда верно, даже для перекрывающихся линий), а затем получать амплитуду и частоту линии (а вот это - только для неперекрывающихся). Частоту можно посчитать точнее бина, если использовать правильную аппроксимацию (оконной функцией) и искать положение максимума.
ivan219
Меня тоже интересует этот вопрос.
Если умножить сигнал на комплексную экспоненту и здвинуть его по частоте до целого пина. Что при этом с сигналом будет? Изменится ли его амплитуда и фаза? И если да то как? Соответственно таким образом можно и частоту узнать.
Alex11
Чтобы сдвигать сигнал по частоте с целью попасть в бин, нужно сдвинуть его в середину бина, иначе он все равно распадется на два. А если Вы уже знаете частоту, чтобы вычислить сдвиг, то Вам больше не нужно его сдвигать.
Непосредственно по вопросу - амплитуда не изменится, если домножаете на сигнал с единичной амплитудой, а фаза вообще будет неизвестно чем, поскольку изменилась частота (ну, конечно, известно, но долго считать надо).
SPACUM
Цитата(Alex11 @ Sep 19 2010, 18:50) *
фаза вообще будет неизвестно чем

Как раз если попасть, то и амплитуда правильная и фаза относительно начала окна будет верная. А если промахнуться, то амплитуду придется по всем остальным бинам собирать и фаза неизвестно чего будет. Есть метод определения одиночной частоты именно по максимуму амплитуды. (Грубая оценка. По трем точкам точнее.)
ivan219
Цитата(Alex11 @ Sep 19 2010, 18:50) *
Чтобы сдвигать сигнал по частоте с целью попасть в бин, нужно сдвинуть его в середину бина, иначе он все равно распадется на два. А если Вы уже знаете частоту, чтобы вычислить сдвиг, то Вам больше не нужно его сдвигать.


Ну почемуже знаем? Можноже простым подбором. Вот скажем шагаем мы по 1Гц и вдруг вылес бин которого не должно быть значит мы перешагнули шаг назад и уже по 0.1Гц и.т.д. я думаю времени займт не так уж и много. Учитывая что можно посчитамть всего 3-5 бинов вместо целого FFT и по ним уже ориентироватся в идеале должен быть только один центральный бин соответствовать середине частоты, остальные на уровне шума. После чего нехитрая матиматика и частота готова rolleyes.gif
fontp
QUOTE (ivan219 @ Sep 20 2010, 11:02) *
Ну почемуже знаем? Можноже простым подбором. Вот скажем шагаем мы по 1Гц и вдруг вылес бин которого не должно быть значит мы перешагнули шаг назад и уже по 0.1Гц и.т.д. я думаю времени займт не так уж и много. Учитывая что можно посчитамть всего 3-5 бинов вместо целого FFT и по ним уже ориентироватся в идеале должен быть только один центральный бин соответствовать середине частоты, остальные на уровне шума. После чего нехитрая матиматика и частота готова rolleyes.gif


Перебор в широком диапазоне с большой точностью никогда не есть гуд. Существует более перспективный подход, когда определяется максимальный бин DFT, и два скалярных произведения с комплексными экспонентами (Герцелями, если так больше нравится называть) отстоящими от частоты центрального бина на четверть ширины бина. Дальше снова проводится квадратичная интерполяция спектра мощности по 3-м точкам. В англоязычной литературе такой способ называют часто для убедительности "maxlikelihood extension", поскольку вблизи максимума любую функцию можно приблизить параболой. В принципе этот метод ничем не отличается от квадратичной интерполяции с добавлением нулей, но спектр вне точек DFT оценивается только вблизи максимального бина

В принципе, это "maxlikelihood extension" может быть добавлено к любому алгоритму определения частоты в качестве последней уточняющей фазы.
Я когда-то давал ссылку на алгоритм DMA-RAD быстрого и точного определения частоты по корреляциям разного масштаба(без DFT), так там на последнем этапе авторы предлагают всё равно провести квадратичную интерполяцию по 3-м частотным точкам
http://electronix.ru/forum/index.php?act=A...st&id=20411
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.