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

 
 
 
Reply to this topicStart new topic
> Измерение сигнала с помощью БПФ
Димитрий
сообщение Sep 15 2010, 19:09
Сообщение #1


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

Группа: Свой
Сообщений: 184
Регистрация: 21-03-06
Из: Нижний Новгород
Пользователь №: 15 435



Приветствую всех.
Стоит задача измерить сигнал в полосе частот от 10 Гц до 100 кГц с полосой 1 Гц. Сигнал оцифровывается на частоте 2,5 МГц.
Вроде вариант БПФ но на картинки не совсем превычное изображение спектра по сравнению с анализаторами, а именно на анализаторе колокообразный сигнал, а после БПФ палка, и когда частота не попадает в точку то есть ошибка порядка 1 дБ.
В принципе вопрос в том как на анализаторах применяя БПФ получают нормальную картинку в виде колокообразного сигнала? Интерполяция линейная между точками БПФ, может быть все дело в интерполяции?
Go to the top of the page
 
+Quote Post
fontp
сообщение Sep 15 2010, 19:49
Сообщение #2


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

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



Используйте спектральные окна и будет Вам колокол.
Между бинами БПФ в общем случае информация не доступна, в том смысле, что БПФ в общем случае не может давать разрешение лучше бина.

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

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

Точность определения амплитуды и частоты изолированой сингулярности в спектре (уже чем бин) ограничены только отношением сигнал/шум, а форма известна заранее - это инструментальная функция окна.
При интерполяции куда попадает точка - неважно. Производится предельно точная (в статистическом смысле) оценка параметнов - амплитуды, частоты и фазы
Go to the top of the page
 
+Quote Post
Димитрий
сообщение Sep 16 2010, 03:40
Сообщение #3


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

Группа: Свой
Сообщений: 184
Регистрация: 21-03-06
Из: Нижний Новгород
Пользователь №: 15 435



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

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

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

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


Спасибо за исчерпывающий ответ.
Go to the top of the page
 
+Quote Post
Alex11
сообщение Sep 16 2010, 19:38
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 106
Регистрация: 23-10-04
Из: С-Петербург
Пользователь №: 965



Еще многое зависит от сигнала. Что такое 1Гц, приведенный выше? Требуемая дискретность или ширины полос присутствующих сигналов? Если Вы хотите ихмерять сигнал такой, что при Вашей длине буфера спектральные составляющие не перекрываются (с учетом наложенного окна), то можно брать корень квадратный из суммы квадратов отсчетов в интересующей полосе и получать очень точное среднеквадратичное значение сигнала в этой полосе (это всегда верно, даже для перекрывающихся линий), а затем получать амплитуду и частоту линии (а вот это - только для неперекрывающихся). Частоту можно посчитать точнее бина, если использовать правильную аппроксимацию (оконной функцией) и искать положение максимума.
Go to the top of the page
 
+Quote Post
ivan219
сообщение Sep 17 2010, 09:51
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 350
Регистрация: 16-11-08
Пользователь №: 41 680



Меня тоже интересует этот вопрос.
Если умножить сигнал на комплексную экспоненту и здвинуть его по частоте до целого пина. Что при этом с сигналом будет? Изменится ли его амплитуда и фаза? И если да то как? Соответственно таким образом можно и частоту узнать.
Go to the top of the page
 
+Quote Post
Alex11
сообщение Sep 19 2010, 14:50
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 106
Регистрация: 23-10-04
Из: С-Петербург
Пользователь №: 965



Чтобы сдвигать сигнал по частоте с целью попасть в бин, нужно сдвинуть его в середину бина, иначе он все равно распадется на два. А если Вы уже знаете частоту, чтобы вычислить сдвиг, то Вам больше не нужно его сдвигать.
Непосредственно по вопросу - амплитуда не изменится, если домножаете на сигнал с единичной амплитудой, а фаза вообще будет неизвестно чем, поскольку изменилась частота (ну, конечно, известно, но долго считать надо).
Go to the top of the page
 
+Quote Post
SPACUM
сообщение Sep 19 2010, 17:37
Сообщение #7


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

Группа: Участник
Сообщений: 161
Регистрация: 22-06-09
Из: Москва
Пользователь №: 50 531



Цитата(Alex11 @ Sep 19 2010, 18:50) *
фаза вообще будет неизвестно чем

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

Сообщение отредактировал SPACUM - Sep 19 2010, 17:53


--------------------
Ты можешь знать все что угодно, но пока ты не доказал это на практике, ты не знаешь ничего!© Ричард Бах
Go to the top of the page
 
+Quote Post
ivan219
сообщение Sep 20 2010, 07:02
Сообщение #8


Местный
***

Группа: Участник
Сообщений: 350
Регистрация: 16-11-08
Пользователь №: 41 680



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


Ну почемуже знаем? Можноже простым подбором. Вот скажем шагаем мы по 1Гц и вдруг вылес бин которого не должно быть значит мы перешагнули шаг назад и уже по 0.1Гц и.т.д. я думаю времени займт не так уж и много. Учитывая что можно посчитамть всего 3-5 бинов вместо целого FFT и по ним уже ориентироватся в идеале должен быть только один центральный бин соответствовать середине частоты, остальные на уровне шума. После чего нехитрая матиматика и частота готова rolleyes.gif

Сообщение отредактировал ivan219 - Sep 20 2010, 07:04
Go to the top of the page
 
+Quote Post
fontp
сообщение Sep 20 2010, 07:23
Сообщение #9


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

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



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
Go to the top of the page
 
+Quote Post

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

 


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


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