Перейти к содержанию
    

Определение передаваемых частот

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Бпф=быстрое преобразование Фурье

Есть еще просто ПФ, где нет необходимости работать с массивом длинной кратной 2^н.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Касательно "измерить".. и именно "с точностью до 3го знака".

 

Но вот будет ли эта цифра иметь какое-то отношение к действительности? Сомнительно..

 

я согласна, я это и должна проверить в принципе...

 

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

 

близко к телу...:)

 

Бпф=быстрое преобразование Фурье

Есть еще просто ПФ, где нет необходимости работать с массивом длинной кратной 2^н.

 

да, спасибо, я пока только алгоритм составляю и проверяю, я не программист (пока), в маткаде смотрю, там БПФ только.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

близко к телу...

Тут есть два варианта развития событий:

- присвоение псевдонимов сторонним брелкам (обучение системы);

- использование кастомных брелков с предустановленными параметрами.

 

В первом случае задача выглядит малореальной с учетом соотношения ошибок определения частот к заводскому разбросу параметров и их стабильности.

Второй случай выглядит оптимистичнее: кроме частоты, можно манипулировать также и таймингом посылок/пауз, возможно, какими-то еще параметрами, и, в принципе, в совокупности выйти на заданную вероятность ошибки гипотезы, применив статистические модели.

 

Такие стеганографические закладки, в принципе, не редкость, и успешно работают.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

В матлабе функция music возвращает оценку частот. Алгоритм основан на разложении оценки автокорреляционной матрицы на собственные вектора, по-моему есть быстрые алгоритмы. Посмотрите в сторону него.

Так же можно попробовать модернизированный ковариационный метод, который есть так же в матлабе - функция armcov. Она возвращает оценку АР-параметров модели сигнала, чтобы посчитать частоты надо вычислить комплексные корни характеристического полинома построенного по АР-параметрам, а потом посчитать их аргумент. Процедура БПФ так же не требуется, сетка частот не задана. Если у вас две комплексные экспоненты, то этот метод может быть эффективнее, чем БПФ и в плане точности и в плане быстродействия.

 

Однако, следует помнить, что параметрические методы могут быть неустойчивыми к помехам, с которыми не согласуется выбранная модель сигнала.

 

Насчет точности измерения. В книге Кея "Kay S.M. Fundamentals of Statistical Signal Processing: Estimation Theory (v.1). Prentice Hall, Upper Sadle River, NJ, 1998. 595 p." на 542 странице есть выражение границы Крамера-Рао для оценки частоты комплексной экспоненты на фоне шума. Попробуйте подставить в формулу Ваши условия, может быть такая точность и теоретически то не достижима)))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

В матлабе функция music возвращает оценку частот. Алгоритм основан на разложении оценки автокорреляционной матрицы на собственные вектора, по-моему есть быстрые алгоритмы. Посмотрите в сторону него.

Так же можно попробовать модернизированный ковариационный метод, который есть так же в матлабе - функция armcov. Она возвращает оценку АР-параметров модели сигнала, чтобы посчитать частоты надо вычислить комплексные корни характеристического полинома построенного по АР-параметрам, а потом посчитать их аргумент. Процедура БПФ так же не требуется, сетка частот не задана. Если у вас две комплексные экспоненты, то этот метод может быть эффективнее, чем БПФ и в плане точности и в плане быстродействия.

 

Однако, следует помнить, что параметрические методы могут быть неустойчивыми к помехам, с которыми не согласуется выбранная модель сигнала.

 

Насчет точности измерения. В книге Кея "Kay S.M. Fundamentals of Statistical Signal Processing: Estimation Theory (v.1). Prentice Hall, Upper Sadle River, NJ, 1998. 595 p." на 542 странице есть выражение границы Крамера-Рао для оценки частоты комплексной экспоненты на фоне шума. Попробуйте подставить в формулу Ваши условия, может быть такая точность и теоретически то не достижима)))

 

У меня знакомый копал в свое время в сторону АР-моделей и метода Юли-Уолкера, дают хороший результат для малого количества спектральных компонент, это как раз примеры параметрических методов. Из непараметрических еще ESPRIT можно глянуть. Фурье имеет фундаментальное ограничение в точности, связанное с размером выборки и тут как ни крути, это ограничение никуда не денется. Не знаю, зачем себя ограничивать в данном случае, оговаривая именно примение Фурье. Речь ведь идет не о жестком реальном времени с ограниченными ресурсами.

А книжкой не поделитесь?)

ЗЫ: хорошая идея по поводу Крамера-Рао, как раз с этого и стоило бы начинать дискуссию :rolleyes:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

.. хорошая идея по поводу Крамера-Рао, как раз с этого и стоило бы начинать дискуссию :rolleyes:

Так шума нет! Причем тут граница Крамера-Рао? У Kseniia идеальный сферический DTMF в MATLAB'е!

 

И тем не менее, даже в отсутствии шума оценки частот неверны!

 

Но они и не будут верны, пока не придет понимание того, что реально существующий спектр суммы двух гармоник умноженных на любое окно ограниченной длительности,

имеет максимумы отнюдь не на тех частотах из которых эта сумма гармоник была сформирована!

 

Достаточно наглядно это можно увидеть уже просто сложив спектры двух радиоимпульсов имеющих близкие частоты несущих.

При таком сложении максимум в спектре каждого из радиоимпульсов сместится в сторону максимума соседнего радиоимпульса.

 

Чтобы продемонстрировать это формально, можно воспользоваться разложением спектров обоих радиоимпульсов в ряд вблизи максимума спектра одного из радиоимпульсов.

 

Разложив эти спектры в ряд в окрестности точки f1 и отбросив все члены ряда Тейлора выше второй степени, находим:

 

S1(f) = A*(f - f1)2 + C + ...

 

S2(f) = B*(f - f1) + ...

 

В этих разложениях предполагается, что спектр S1(f) имеет максимум в точке f1, а спектр S2(f) представлен в точке f1 линейным членом, так как максимум его спектра находится в точке f2.

 

Сложив оба спектра, находим суммарный спектр вблизи точки экстремума функции S1(f):

 

Sсум(f) = A*(f - f1)2 + B*(f - f1) + С.

 

Теперь, чтобы найти максимум функции Sсум(f), мы находим её производную и приравниваем её нулю:

 

S'сум(f) = 2*A*(f - f1) + B = 0.

 

Откуда:

 

fmax = f1 - B/(2*A).

 

Из этой формулы видно, что каждый из максимумов суммы спектров уже не совпадает с максимумом каждого из спектров по отдельности, он сместился в направлении соседнего максимума.

 

Поэтому, если частота несущей из которой был получен сигнал DTMF равнялась f1, тем не менее любой спектральный метод оценивания даст в результате смещенную оценку f1±Δf даже и при отсутствии шума вообще.

 

Точную оценку обеих частот f1 и f2 в этом случае можно получить только лишь зная амплитуды и фазы обеих гармоник из которых был получен сигнал DTMF..

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Точную оценку обеих частот f1 и f2 в этом случае можно получить только лишь зная амплитуды и фазы обеих гармоник из которых был получен сигнал DTMF.

Итог сильно зависит от конкретной задачи ТС. Возможно, для каждого конкретного брелка соотношение фаз будет постоянным, и ТС не обязательно оценивать f1 и f2 по отдельности для эффективной идентификации брелка. Возможно, есть какие-то статистические модели, позволяющие выполнить поставленную задачу иным способом, чем "в лоб" оценкой каждой из частот до 3-его знака.

В любом случае, измерение частот - не конечная цель в данном случае, эти данные будут передаваться далее на алгоритм принятия решения, например, типа скрытой модели Маркова.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

всем спасибо за советы, на счет книги, скачала, буду изучать.

 

я вот какой выход нашла, и без всякого БПФ... если ошибаюсь - подправьте пожауйста, если Вы именно это и советовали, то я пропустила - прошу прощения...

 

имеем сигнал s(x), далее находим составляющие коэф корреляции по синусу и по косинусу, и коэф корреляции, строим график, определяем максимумы, видно, что небольшая погрешность есть, но результат очень близок к истине.

post-86575-1431928911_thumb.jpg

на счет music в матлабе, то попозже посмотрю, каков там результат будет. и про помехи я не забываю, надо еще проверить будет с реальными сигналами.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А какие частоты у вас в WavDataS? Там точно 941 и 1209? Если да, то результат на выходе алгоритма имеет значительную погрешность для вашей задачи. Попробуйте сделать шаг fk не в 1 Гц а в 0,1 Гц например. Даст ли это вам выигрыш в точности? И неплохо бы еще подмешать шум в исходный сигнал, проверить работу алгоритма при snr = 60, 50, 40, 30, 20 дБ, например. Или даже с более плотным шагом и построить график СКО от сигнал-шум для выбранного алгоритма. Было бы познавательно и вам и нам, если у вас есть время :rolleyes:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

..если Вы именно это и советовали, то я пропустила - прошу прощения...

Ну.. я лично, советовал вот это:

Если мы знаем, что комплексная синусоида вообще одна на фоне шума - то в ДПФ мы в точности имеем отдискретизированную в спектральной области функцию окна, центрированную на частоте синусоиды.

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

Причем Райф и Бурстин доказали, что в случае одиночной синусоиды наибольшую точность даёт прямоугольное (т.е. никакое) окно.

Они же предложили проводить интерполяцию посредством добавления нулей в данные и квадратичной интерполяцией в окрестности максимума.

 

Если спектр линейчатый и гармоники находятся далеко друг от друга, эта же методика позволяет получать очень точные оценки этих синусоид, но с применением функций окон, изолирующих эти линии в спектре.

Если на каждую линию спектра поставить функцию окна с соответствующей амплитудой и просуммировать, то это то что мы получим в ДПФ и мы снова сможем проводить интерполяцию в том случае, если эти оконные отклики перекрываются слабо.

Походу интерполяция добавлением нулей и подгонки параболы фиттингом - не единственный способ интерполяции спектра вблизи максимума спектральной линии. Есть методы производящие "внутреннюю интерполяцию", без всякого добавления нулей.

 

Лучший из них не очень давно предложен в работе МакЛеода (не путать с горцем Маклаудом и не размахивать здесь саблей!)

Вы, вероятно, просто не дочитали дискуссию по первой ссылке до конца..

 

А вообще, эта тема всплывала на форуме неоднократно, и всегда заканчивалась отсылкой к оценке Крамера-Рао, поэтому все эти темы можно найти поиском по форуму: Крамера..

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А какие частоты у вас в WavDataS? Там точно 941 и 1209? Если да, то результат на выходе алгоритма имеет значительную погрешность для вашей задачи. Попробуйте сделать шаг fk не в 1 Гц а в 0,1 Гц например. Даст ли это вам выигрыш в точности? И неплохо бы еще подмешать шум в исходный сигнал, проверить работу алгоритма при snr = 60, 50, 40, 30, 20 дБ, например. Или даже с более плотным шагом и построить график СКО от сигнал-шум для выбранного алгоритма. Было бы познавательно и вам и нам, если у вас есть время :rolleyes:

 

шаг меняла, от шага зависит только график, а значения Xmax не изменяются.

на счет шума, думаю на этой неделе заняться, так как это и мне интересно...

 

Ну.. я лично, советовал вот это:

 

Вы, вероятно, просто не дочитали всю ту дискуссию до конца..

 

А вообще, эта тема всплывала на форуме неоднократно, и всегда заканчивалась отсылкой к оценке Крамера-Рао, поэтому все эти темы можно найти поиском по форуму: Крамера..

 

дело в том, что я читала все до конца, но в силу того, что математическим языком общения я только начала овладевать, то не до конца поняла, что Вы имели ввиду. А где у меня оконные функции? я их не применяла вроде бы... (или применила, но сама этого не поняла? Поясните, если не сложно)

 

спасибо, поищю и почитаю.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А где у меня оконные функции? я их не применяла вроде бы... (или применила, но сама этого не поняла? Поясните, если не сложно)

Там же, по ссылке, всё это и объясняли:

Не особенно. В этом смысле и дискретный сигнал сильно отличается от непрерывного.

ДПФ (БПФ это реализация ДПФ) - это дискретизация непрерывного физического спектра взятого с функцией окна. Дискретные отсчеты свертки физического спектра с функцией окна в спектральной области.

Если окно не применяется, то вставится прямоугольное окно (спектральные sin(x)/x) помимо нашего желания.

 

Поэтому каждый отсчет ДПФ для непрерывного спектра формируется суммой от всех частот, но с весом от функции окна. Функция окна быстро затухает по разности частот.

А значит каждый отсчет ДПФ преобразования формируется непрерывным физическим спектром Фурье только от близких частот к данному бину.

Ситуация ничем не отличается от той которая возникнет, если поставить банк узкополостных фильтров на соответствующих бинах ДПФ. Но ДПФ ещё и обладает полезными математическими свойствами.

Спектральное разрешение в этих случаях непрерывного спектра сигнала всегда будет определяться шириной функции окна, которая в спектральной области в соответствии с критерием "неопределённости" Рэлея будет 1/N (или 1/T в размерных единицах).

У Вас, это прямоугольное окно как раз и вставилось в график КФ.

 

Но для частот расположенных близко друг от друга (то есть, 941 Гц и 1209 Гц), необходимо окно типа Гаусса,

 

чтобы выполнялось условие: "Функция окна быстро затухает по разности частот."..

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...