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

 
 
4 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> Определение передаваемых частот
Kseniia
сообщение May 8 2015, 05:15
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 31
Регистрация: 8-05-15
Из: Санкт-Петербург
Пользователь №: 86 575



Всем доброго времени суток!

Задача: есть DTMF метка, необходимо определить частоты которые передавались, с точностью до 3го знака после запятой. (DTMF - передается сумма двух гармоник, НЧ и ВЧ)

Что проделано:
выделяю из сигнала DTMF, fd=44100 Гц, для того, чтобы N была кратна двум, и равнялась 2048, немного обрезаю сигнал до 0.046 секунд (было 0.05 сек), таким образом T=1/fd=2.268*10^5.
Беру БПФ, строю график зависимости уровня(?)(20 log(sqwr(ReБПФ^2+ImБПФ^2)/fd-N), дБ от частоты, Гц (прикрепляю скрин, freqn=n*fd/N, n=0,...,N-1).
Прикрепленное изображение

Пики приходятся на 947,46Гц и 1205,9Гц, хотя должны быть 941Гц и 1209Гц. такая разница по видимому из-за огромного ШАГА по частоте, в 21,55 Гц, то есть передаваемые частоты не кратны нашему "шагу".

Что делать дальше - не понимаю.
Пробовала инетрполяцию Лагранжа - чушь полная, не получается.
Есть предложение использовать коэффициенты корреляции, относительно синусоидального и косинусоидального сигналов, но результатов пока не дал, да и не до конца понятно, что с этими коэф делать.

вопрос: Как математически можно определить частоты?


--------------------
Век живи, век учись...
Go to the top of the page
 
+Quote Post
Ruslan1
сообщение May 8 2015, 06:22
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025



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

Начните с Матлаба- подсуньте ему идеальные данные на вход и убедитесь, что Ваш алгоритм считает то что вам нужно с нужной точностью. Помодулируйте поведение результата при изменении, ну хотя бы, разрядности АЦП и частоты семплирования.
Следующий этап- тот же Матлаб с подсунутыми реальными данными (со звуковыми частотами совсем просто- у матлаба спецпакет есть, там есть функция, позволяющая с входа звуковой карты данные оцифровывать напрямую в Матлаб).
Go to the top of the page
 
+Quote Post
Kseniia
сообщение May 8 2015, 06:53
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 31
Регистрация: 8-05-15
Из: Санкт-Петербург
Пользователь №: 86 575



Цитата(Ruslan1 @ May 8 2015, 09:22) *
Прикрепите файл с вычисленными бинами БПФ и покажите как вы интерполяцию проводите.
И еще, Вы не указали какую оконную функцию применяете.

Начните с Матлаба- подсуньте ему идеальные данные на вход и убедитесь, что Ваш алгоритм считает то что вам нужно с нужной точностью. Помодулируйте поведение результата при изменении, ну хотя бы, разрядности АЦП и частоты семплирования.
Следующий этап- тот же Матлаб с подсунутыми реальными данными (со звуковыми частотами совсем просто- у матлаба спецпакет есть, там есть функция, позволяющая с входа звуковой карты данные оцифровывать напрямую в Матлаб).


в тот раз брала полином Лагранжа.

Сейчас попробовала с параболической интерполяцией "поиграть", результаты очень близки (ура-ура), для построения алгоритма вычисления сама создала DTMF метку, то есть начальные параметры знаю. Работаю с Маткадом (не бейте сильно, не программист я, но видимо скоро им стану), МатЛаб устанавливаться не хочет, Математику установила, но еще до конца не разобралась, плюс там все функции "скрыты", а меня интересует именно математика.
Использую окно Гаусса, правда еще не до конца поняла от чего параметр альфа зависит (с альфа = 0.1 результат ближе к искомому)
Прикрепленное изображение

сейчас попробую другие окна и все-таки корреляцию посмотрю.
На счет "бинов БПФ" - поясните, пожалуйста, я недавно пытаюсь вникнуть в тему...


--------------------
Век живи, век учись...
Go to the top of the page
 
+Quote Post
serjj
сообщение May 8 2015, 07:13
Сообщение #4


Знающий
****

Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866



Какие стоят ограничения на вычислительную сложность? Спектральный анализ не ограничивается методами, основанными на преобразовании Фурье. Существуют алгоритмы высокого разрешения, которые позволяют выделять сигналы с высокой точностью. Главные преимущества - возможность разделять сигналы с малым отличием по частоте или с большой разницей в мощности. Но можно использовать и для высокоточного определения частот в случаях обычного анализа, как, кажется, у вас. Если интересно, могу посоветовать начать изучение с непараметрических методов: Capon, MUSIC, root MUSIC, т.к. они проще чем параметрические (AR модели и прочие).
Вот пример из матлаба, использующего встроенную функцию (матлаб вы все таки как нибудь поставте, никуда без него)
Код
clear all;
Ns = 2048;
fs = 1e5;
Ts = 1/fs;
t=0:Ts:(Ns-1)*Ts;
f0 = 12344;
f1 = 37115;
SNR = 60;
a0 = 1;
a1 = 1;
s = a0*exp(1i*2*pi*f0*t) + a1*exp(1i*2*pi*f1*t);
s = awgn(s, SNR, 'measured');
[w, p] = rootmusic(s, 2, fs);
disp('SNR, dB:');
disp(SNR);
disp('Estimated frequencies, kHz:')
disp(w/1000);

Для SNR=60 дБ:
Код
Estimated frequencies, kHz:
   37.1150
   12.3440

Для SNR=20дБ:
Код
Estimated frequencies, kHz:
   37.1138
   12.3417

Размер исходной выборки взял как у вас - 2048, но можно и меньше, ошибка будет соответственно расти. Но величина ошибки значительно меньше чем для периодограмм (Фурье)

Сообщение отредактировал serjj - May 8 2015, 07:14
Go to the top of the page
 
+Quote Post
Kseniia
сообщение May 8 2015, 07:41
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 31
Регистрация: 8-05-15
Из: Санкт-Петербург
Пользователь №: 86 575



Цитата(serjj @ May 8 2015, 10:13) *
Какие стоят ограничения на вычислительную сложность? Спектральный анализ не ограничивается методами, основанными на преобразовании Фурье. Существуют алгоритмы высокого разрешения, которые позволяют выделять сигналы с высокой точностью. Главные преимущества - возможность разделять сигналы с малым отличием по частоте или с большой разницей в мощности. Но можно использовать и для высокоточного определения частот в случаях обычного анализа, как, кажется, у вас. Если интересно, могу посоветовать начать изучение с непараметрических методов: Capon, MUSIC, root MUSIC, т.к. они проще чем параметрические (AR модели и прочие).
Вот пример из матлаба, использующего встроенную функцию (матлаб вы все таки как нибудь поставте, никуда без него)


данные непарметрические методы - функции в матЛабе, я правильно поняла? спасибо, сейчас попробую опять установить это чудо техники.
а в "Математике" нет подобных функций, не подскажите?

Цитата(serjj @ May 8 2015, 10:13) *
Какие стоят ограничения на вычислительную сложность?


моя задача предоставить алгоритм программисту.

посмотрела на счет "Capon, MUSIC, root MUSIC"... непараметрические методы: это, например, периодограмма и метод Уэлча, а MUSIC - использует корреляционную матрицу, а на сколько я понимаю, корреляционная матрица - это параметрический метод. Подправьте меня, если я ошибаюсь.


--------------------
Век живи, век учись...
Go to the top of the page
 
+Quote Post
Ruslan1
сообщение May 8 2015, 07:41
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025



Kseniia,
Попробуйте Гаусса (я до alpha = 4.05 доходил, но коэффициент экспериментально под свои данные подбирал) и параболическую интерполяцию по трем максимальным бинам.
Про бины- это те самые вычисленные БПФ магнитуды, по которым Вы приложенную картинку нарисовали.
Вот, в интернете нашел коротко и довольно внятно:
Цитата
Единицу FFT-сетки называют "бин" (bin). Один бин FFT содержит информацию о целом диапазоне частот, ширина которого обратно пропорциональна размеру окна FFT. Таким образом, каждый бин "ответственен" за сразу множество частот.
Go to the top of the page
 
+Quote Post
serjj
сообщение May 8 2015, 07:43
Сообщение #7


Знающий
****

Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866



Цитата
данные непарметрические методы - функции в матЛабе, я правильно поняла? спасибо, сейчас попробую опять установить это чудо техники.
а в "Математике" нет подобных функций, не подскажите?

В матлабе есть pmusic - это обычный MUSIC алгоритм, который считает псевдоспектр, пример:

Прикрепленное изображение

Но он всегда немного врёт rolleyes.gif , см. bias in MUSIC estimation.
Функция, которую я упомянул в примере rootmusic, возвращает амплитуды и частоты сигналов, входящих в смесь. Эта оценка у них делается несмещенной, всё норм. Есть еще класс spectrum, в котором поддержан целый набор различных методов в т.ч. параметрических, но я не разбирался особо, как его запускать, однако хелп может помочь.
"Математикой" не пользовался, не подскажу. Обычный MUSIC или Capon можно самому написать. Там ничего сверхсложного, формулы есть и в хелпе матлаба (можно найти в инете) и в книжках и на вике. Если будете разбираться, пишите, постараюсь помочь. А вот с rootmusic или параметрическими - немного посложнее, чуть побольше теории нужно покурить. Есть фундаментальная литература по теме, например
Прикрепленный файл  SAS_new.pdf ( 2.47 мегабайт ) Кол-во скачиваний: 206

Ну и книжка Марпл конечно (большая, выложить могу по запросу).

Цитата
посмотрела на счет "Capon, MUSIC, root MUSIC"... непараметрические методы: это, например, периодограмма и метод Уэлча, а MUSIC - использует корреляционную матрицу, а на сколько я понимаю, корреляционная матрица - это параметрический метод. Подправьте меня, если я ошибаюсь.

Ошибаетесь. MUSIC и root MUSIC это т.н. подпространственные методы, которые основаны на анализе собственных чисел автокорреляционной матрицы процесса. Capon - подвид метода наименьших квадратов, согласно Хайкину. Параметрические методы основаны на оценке параметра предложенной модели, которая апроксимирует ваш случайный процесс. Здесь же модель процесса неизвестна и неважна. Для MUSIC единственным допуском является размерность сигнального подпространства, но его можно вычислить с помощью порогового детектора после нахождения собственных чисел.

Сообщение отредактировал serjj - May 8 2015, 07:46
Go to the top of the page
 
+Quote Post
Kseniia
сообщение May 8 2015, 07:56
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 31
Регистрация: 8-05-15
Из: Санкт-Петербург
Пользователь №: 86 575



Цитата(serjj @ May 8 2015, 10:43) *
В матлабе есть pmusic - это обычный MUSIC алгоритм, который считает псевдоспектр, пример:

Прикрепленное изображение

Но он всегда немного врёт rolleyes.gif , см. bias in MUSIC estimation.
Функция, которую я упомянул в примере rootmusic, возвращает амплитуды и частоты сигналов, входящих в смесь. Эта оценка у них делается несмещенной, всё норм. Есть еще класс spectrum, в котором поддержан целый набор различных методов в т.ч. параметрических, но я не разбирался особо, как его запускать, однако хелп может помочь.
"Математикой" не пользовался, не подскажу. Обычный MUSIC или Capon можно самому написать. Там ничего сверхсложного, формулы есть и в хелпе матлаба (можно найти в инете) и в книжках и на вике. Если будете разбираться, пишите, постараюсь помочь. А вот с rootmusic или параметрическими - немного посложнее, чуть побольше теории нужно покурить. Есть фундаментальная литература по теме, например
Прикрепленный файл  SAS_new.pdf ( 2.47 мегабайт ) Кол-во скачиваний: 206

Ну и книжка Марпл конечно (большая, выложить могу по запросу).


Ошибаетесь. MUSIC и root MUSIC это т.н. подпространственные методы, которые основаны на анализе собственных чисел автокорреляционной матрицы процесса. Capon - подвид метода наименьших квадратов, согласно Хайкину. Параметрические методы основаны на оценке параметра предложенной модели, которая апроксимирует ваш случайный процесс. Здесь же модель процесса неизвестна и неважна. Для MUSIC единственным допуском является размерность сигнального подпространства, но его можно вычислить с помощью порогового детектора после нахождения собственных чисел.

спасибо! пошла читать матчасть. а книжка Марпл - это что? (я только Агату Кристи знаю... 05.gif )


--------------------
Век живи, век учись...
Go to the top of the page
 
+Quote Post
serjj
сообщение May 8 2015, 08:00
Сообщение #9


Знающий
****

Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866



Марпл-мл. С.Л. "Цифровой спектральный анализ и его приложения"
книжка (>5Мб)
Go to the top of the page
 
+Quote Post
Kseniia
сообщение May 8 2015, 08:06
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 31
Регистрация: 8-05-15
Из: Санкт-Петербург
Пользователь №: 86 575



Цитата(serjj @ May 8 2015, 11:00) *
Марпл-мл. С.Л. "Цифровой спектральный анализ и его приложения"
книжка (>5Мб)

Спасибо!


--------------------
Век живи, век учись...
Go to the top of the page
 
+Quote Post
blackfin
сообщение May 8 2015, 08:07
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 3 106
Регистрация: 18-04-05
Пользователь №: 4 261



Цитата(Kseniia @ May 8 2015, 08:15) *
Задача: есть DTMF метка, необходимо определить частоты которые передавались, с точностью до 3го знака после запятой. (DTMF - передается сумма двух гармоник, НЧ и ВЧ)

А Вам нужно именно измерить значения этих частот, или достаточно обнаружить их присутствие или отсутствие?
Go to the top of the page
 
+Quote Post
Kseniia
сообщение May 8 2015, 09:26
Сообщение #12


Участник
*

Группа: Участник
Сообщений: 31
Регистрация: 8-05-15
Из: Санкт-Петербург
Пользователь №: 86 575



Цитата(blackfin @ May 8 2015, 11:07) *
А Вам нужно именно измерить значения этих частот, или достаточно обнаружить их присутствие или отсутствие?


именно измерить.

немного про DTMF:
в DTMF передается 2 частоты: НЧ и ВЧ, то мало сказать что, например, 941 Гц и 1209 Гц = "*", по стандарту отклонение от передаваемой частоты может составлять 1.8% (то есть при 924.062<НЧ<957.938 Гц и 1187.238<ВЧ<1230.762 Гц примет как "*" - все верно/

Моя задача определить что передавалось, с точностью до 3го знака.


--------------------
Век живи, век учись...
Go to the top of the page
 
+Quote Post
serjj
сообщение May 8 2015, 10:33
Сообщение #13


Знающий
****

Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866



Цитата
в DTMF передается 2 частоты: НЧ и ВЧ, то мало сказать что, например, 941 Гц и 1209 Гц = "*", по стандарту отклонение от передаваемой частоты может составлять 1.8% (то есть при 924.062<НЧ<957.938 Гц и 1187.238<ВЧ<1230.762 Гц примет как "*" - все верно/


Зачем вам сверхточность в этой задаче? Вам нужно оценить какой случай имел место быть при передаче: НЧ, ВЧ, не НЧ не ВЧ. Для этого достаточно грубой энергетической оценки с помощью узкополосных полосовых фильтров или преобразования Фурье без какой либо пост-обработки. Как я понимаю частоты НЧ и ВЧ разнесены достаточно, чтобы их можно было раздельно принимать. Если вся задача сводится к этому то точный спектральный анализ вам не нужен.

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

Сообщение отредактировал serjj - May 8 2015, 10:34
Go to the top of the page
 
+Quote Post
Kseniia
сообщение May 8 2015, 11:15
Сообщение #14


Участник
*

Группа: Участник
Сообщений: 31
Регистрация: 8-05-15
Из: Санкт-Петербург
Пользователь №: 86 575



Цитата(serjj @ May 8 2015, 13:33) *
Зачем вам сверхточность в этой задаче? Вам нужно оценить какой случай имел место быть при передаче: НЧ, ВЧ, не НЧ не ВЧ. Для этого достаточно грубой энергетической оценки с помощью узкополосных полосовых фильтров или преобразования Фурье без какой либо пост-обработки. Как я понимаю частоты НЧ и ВЧ разнесены достаточно, чтобы их можно было раздельно принимать. Если вся задача сводится к этому то точный спектральный анализ вам не нужен.

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


у меня задача не определить символ, это достаточно легко, и да, разнесены они достаточно, моя задача именно определить ЧТО передавали, мол 940,001 или 942,032 (это к примеру)


--------------------
Век живи, век учись...
Go to the top of the page
 
+Quote Post
serjj
сообщение May 8 2015, 11:25
Сообщение #15


Знающий
****

Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866



Размер выборки кстати ограничен? Или можно копить до посинения?
Go to the top of the page
 
+Quote Post

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

 


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


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