|
|
  |
Определение передаваемых частот |
|
|
|
May 8 2015, 05:15
|
Участник

Группа: Участник
Сообщений: 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 Гц, то есть передаваемые частоты не кратны нашему "шагу". Что делать дальше - не понимаю. Пробовала инетрполяцию Лагранжа - чушь полная, не получается. Есть предложение использовать коэффициенты корреляции, относительно синусоидального и косинусоидального сигналов, но результатов пока не дал, да и не до конца понятно, что с этими коэф делать. вопрос: Как математически можно определить частоты?
--------------------
Век живи, век учись...
|
|
|
|
|
May 8 2015, 06:53
|
Участник

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

|
Цитата(Ruslan1 @ May 8 2015, 09:22)  Прикрепите файл с вычисленными бинами БПФ и покажите как вы интерполяцию проводите. И еще, Вы не указали какую оконную функцию применяете.
Начните с Матлаба- подсуньте ему идеальные данные на вход и убедитесь, что Ваш алгоритм считает то что вам нужно с нужной точностью. Помодулируйте поведение результата при изменении, ну хотя бы, разрядности АЦП и частоты семплирования. Следующий этап- тот же Матлаб с подсунутыми реальными данными (со звуковыми частотами совсем просто- у матлаба спецпакет есть, там есть функция, позволяющая с входа звуковой карты данные оцифровывать напрямую в Матлаб). в тот раз брала полином Лагранжа. Сейчас попробовала с параболической интерполяцией "поиграть", результаты очень близки (ура-ура), для построения алгоритма вычисления сама создала DTMF метку, то есть начальные параметры знаю. Работаю с Маткадом (не бейте сильно, не программист я, но видимо скоро им стану), МатЛаб устанавливаться не хочет, Математику установила, но еще до конца не разобралась, плюс там все функции "скрыты", а меня интересует именно математика. Использую окно Гаусса, правда еще не до конца поняла от чего параметр альфа зависит (с альфа = 0.1 результат ближе к искомому)
сейчас попробую другие окна и все-таки корреляцию посмотрю. На счет "бинов БПФ" - поясните, пожалуйста, я недавно пытаюсь вникнуть в тему...
--------------------
Век живи, век учись...
|
|
|
|
|
May 8 2015, 07:13
|
Знающий
   
Группа: Участник
Сообщений: 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
|
|
|
|
|
May 8 2015, 07:41
|
Участник

Группа: Участник
Сообщений: 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 - использует корреляционную матрицу, а на сколько я понимаю, корреляционная матрица - это параметрический метод. Подправьте меня, если я ошибаюсь.
--------------------
Век живи, век учись...
|
|
|
|
|
May 8 2015, 07:41
|
Гуру
     
Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025

|
Kseniia, Попробуйте Гаусса (я до alpha = 4.05 доходил, но коэффициент экспериментально под свои данные подбирал) и параболическую интерполяцию по трем максимальным бинам. Про бины- это те самые вычисленные БПФ магнитуды, по которым Вы приложенную картинку нарисовали. Вот, в интернете нашел коротко и довольно внятно: Цитата Единицу FFT-сетки называют "бин" (bin). Один бин FFT содержит информацию о целом диапазоне частот, ширина которого обратно пропорциональна размеру окна FFT. Таким образом, каждый бин "ответственен" за сразу множество частот.
|
|
|
|
|
May 8 2015, 07:43
|
Знающий
   
Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866

|
Цитата данные непарметрические методы - функции в матЛабе, я правильно поняла? спасибо, сейчас попробую опять установить это чудо техники. а в "Математике" нет подобных функций, не подскажите? В матлабе есть pmusic - это обычный MUSIC алгоритм, который считает псевдоспектр, пример:
Но он всегда немного врёт  , см. 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
|
|
|
|
|
May 8 2015, 07:56
|
Участник

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

|
Цитата(serjj @ May 8 2015, 10:43)  В матлабе есть pmusic - это обычный MUSIC алгоритм, который считает псевдоспектр, пример:
Но он всегда немного врёт  , см. bias in MUSIC estimation. Функция, которую я упомянул в примере rootmusic, возвращает амплитуды и частоты сигналов, входящих в смесь. Эта оценка у них делается несмещенной, всё норм. Есть еще класс spectrum, в котором поддержан целый набор различных методов в т.ч. параметрических, но я не разбирался особо, как его запускать, однако хелп может помочь. "Математикой" не пользовался, не подскажу. Обычный MUSIC или Capon можно самому написать. Там ничего сверхсложного, формулы есть и в хелпе матлаба (можно найти в инете) и в книжках и на вике. Если будете разбираться, пишите, постараюсь помочь. А вот с rootmusic или параметрическими - немного посложнее, чуть побольше теории нужно покурить. Есть фундаментальная литература по теме, например
SAS_new.pdf ( 2.47 мегабайт )
Кол-во скачиваний: 206Ну и книжка Марпл конечно (большая, выложить могу по запросу). Ошибаетесь. MUSIC и root MUSIC это т.н. подпространственные методы, которые основаны на анализе собственных чисел автокорреляционной матрицы процесса. Capon - подвид метода наименьших квадратов, согласно Хайкину. Параметрические методы основаны на оценке параметра предложенной модели, которая апроксимирует ваш случайный процесс. Здесь же модель процесса неизвестна и неважна. Для MUSIC единственным допуском является размерность сигнального подпространства, но его можно вычислить с помощью порогового детектора после нахождения собственных чисел. спасибо! пошла читать матчасть. а книжка Марпл - это что? (я только Агату Кристи знаю...  )
--------------------
Век живи, век учись...
|
|
|
|
|
May 8 2015, 08:06
|
Участник

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

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

Группа: Участник
Сообщений: 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го знака.
--------------------
Век живи, век учись...
|
|
|
|
|
May 8 2015, 10:33
|
Знающий
   
Группа: Участник
Сообщений: 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
|
|
|
|
|
May 8 2015, 11:15
|
Участник

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

|
Цитата(serjj @ May 8 2015, 13:33)  Зачем вам сверхточность в этой задаче? Вам нужно оценить какой случай имел место быть при передаче: НЧ, ВЧ, не НЧ не ВЧ. Для этого достаточно грубой энергетической оценки с помощью узкополосных полосовых фильтров или преобразования Фурье без какой либо пост-обработки. Как я понимаю частоты НЧ и ВЧ разнесены достаточно, чтобы их можно было раздельно принимать. Если вся задача сводится к этому то точный спектральный анализ вам не нужен.
Для сравнения, где это действительно необходимо - точная оценка Допплера в обработке принятых сигналов радара/сонара; выделение тонального сигнала радара в сложной помеховой обстановке и т.д. Там применяется и Фурье с интерполяцией и спектрограммы и алгоритмы высокого разрешения. у меня задача не определить символ, это достаточно легко, и да, разнесены они достаточно, моя задача именно определить ЧТО передавали, мол 940,001 или 942,032 (это к примеру)
--------------------
Век живи, век учись...
|
|
|
|
|
  |
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0
|
|
|