|
|
  |
Сравнение двух дискретных сигналов, pattern recognition |
|
|
|
Jul 18 2013, 15:57
|
Участник

Группа: Участник
Сообщений: 18
Регистрация: 21-11-07
Пользователь №: 32 540

|
Доброго времени суток господа, Есть у меня вопрос к гуру по ЦОС, т.к. сам далек от этой тематики. Появилась задача сравнение эталонного сигнала(предварительно полученного с ацп, выборка конечнаб частота не высокая, до 100 кГц) с сигналом поступающим в реальном времени с ацп. При достижении определенного уровня схожести, необходимо достаточно быстро принять решение(выставить 1 на одном из портов контроллера). Начало отсчета входного сигнала известно, но сигнал может быть задержен во времени(небольшой джиттер) или же начинаться может без задержки, но в определенный момент, временной джиттер может внести небольшой сдвиг. Читал о кросс корреляции, но в приложении реального времени это не подходит, т.к. необходимо знать априори выборку. Есть вариант в лоб вычитать значения амплитуд сигнала 1 из сигнала 2, они положительны от 0 до 5 В. Но как быть в случае временного сдвига в начале или в середине выборки, который может быть а может и не быть. Природа сигнала, значение потребляемого напряжения смарт картой при обработки различных команд посылаемых ей теминалом. В связи с этим известен момент начала обработки команды(плюс минус джиттер в начали и/или середине выборки).
Очень бы хотелось выслушать различные методы нахождения степени похожести сигналов. С уважением.
|
|
|
|
|
Jul 18 2013, 17:08
|
Участник

Группа: Участник
Сообщений: 21
Регистрация: 30-06-13
Из: Томск
Пользователь №: 77 321

|
Цитата Читал о кросс корреляции, но в приложении реального времени это не подходит, т.к. необходимо знать априори выборку Совершенно не нужно знать априори сравниваемые вектора: достаточно их наличие. Находите функцию взаимной корреляции, в момент, когда в памяти/регистрах будут находиться идентичные последовательности вы получите максимальный отклик. Другое дело, что кросс-корреляционная функция сильно зависит от ваших последовательностей, для большинства последовательностей корреляционный отклик является невыраженным и будет сложно определиться с порогом. Но если вы знаете в какой момент времени насчитывать корреляцию (нужно только определить есть она или нет), то это не проблема.
|
|
|
|
|
Jul 18 2013, 17:21
|
Местный
  
Группа: Свой
Сообщений: 366
Регистрация: 5-09-06
Из: Санкт-Петербург
Пользователь №: 20 107

|
Цитата(cyberrevenger @ Jul 18 2013, 19:57)  Доброго времени суток господа, Есть у меня вопрос к гуру по ЦОС, т.к. сам далек от этой тематики. Появилась задача сравнение эталонного сигнала(предварительно полученного с ацп, выборка конечнаб частота не высокая, до 100 кГц) с сигналом поступающим в реальном времени с ацп. При достижении определенного уровня схожести, необходимо достаточно быстро принять решение(выставить 1 на одном из портов контроллера). Начало отсчета входного сигнала известно, но сигнал может быть задержен во времени(небольшой джиттер) или же начинаться может без задержки, но в определенный момент, временной джиттер может внести небольшой сдвиг. Читал о кросс корреляции, но в приложении реального времени это не подходит, т.к. необходимо знать априори выборку. Есть вариант в лоб вычитать значения амплитуд сигнала 1 из сигнала 2, они положительны от 0 до 5 В. Но как быть в случае временного сдвига в начале или в середине выборки, который может быть а может и не быть. Природа сигнала, значение потребляемого напряжения смарт картой при обработки различных команд посылаемых ей теминалом. В связи с этим известен момент начала обработки команды(плюс минус джиттер в начали и/или середине выборки).
Очень бы хотелось выслушать различные методы нахождения степени похожести сигналов. С уважением. Если требуется сравнить эталонный с получаемым, о коррелятор это лучшее решение. Допустим, длины эталонного сигнала N. Тогда корреляцию надо считать каждые N/2 отсчетов входного сигнала. Причем если N есть степень 2, то тогда можно использовать БПФ. Т.е. вычислить ПФ от эталонного, накопить N отсчетов входного, вычислить пф от него, пермножить эти коэффициенты (правда комплексно сопряженные) и взять обратное фурье. Поскольку сигналы вещественны, то этот результат будет вещественен. Найти его максимум и отнести к сумме квадратов сигнала. Получившееся значение будет степенью похожести сигналов. Причем, если сигналы совершенно точно совпадают, то это значение будет единица. Ну и там всякие разные полезные тонкости еще...
|
|
|
|
|
Jul 18 2013, 22:51
|
Участник

Группа: Участник
Сообщений: 18
Регистрация: 21-11-07
Пользователь №: 32 540

|
Спасибо всем кто отвечал, очень интересные решения, но хочу подчеркнуть, 1) что вычислительные ресурсы ограничены микроконтроллером STM32F407. 2) в связи со спецификой данной задачи(смарт карты), решение необходимо принять достаточно быстро. По сути время ограничивается временем обработки комманды, посылаемой терминалом смарткарте. Или даже временем выполнения определенного алгоритма на карте(например RSA или DES шифрование ключей). Если промедлить с решением схожести сигнала, карта может безвозвратно умереть(полное удаление данных). 3) по этому сигнал надо не накапливать для последующей обработкм, а обрабатывать по мере поступления отсчетов в сравнении с эталоном
по этому к сожалению преобразования Фурье тут не получится пременить, потеря времени.
|
|
|
|
|
Jul 19 2013, 04:44
|
Знающий
   
Группа: Свой
Сообщений: 642
Регистрация: 15-11-07
Пользователь №: 32 353

|
Теория гласит, что чем больше времени Вы анализируете сигнал, тем выше точность проводимой Вами оценки. Хотите быстро? Можно, но точность будет невелика  P.S.: Метод наименьших квадратов и т.п. не рассматривали? Может лучше сравнивать не сигналы, а их основные параметры? Амплитуду, частоту и т.п.?
--------------------
Правильно сформулированый вопрос содержит в себе половину ответа. P.S.: Некоторые модераторы в качестве ответа так навязчиво предлагают посетить свой сайт, что иначе как саморекламу такие действия интерпретировать сложно.
|
|
|
|
|
Jul 19 2013, 06:15
|
Местный
  
Группа: Свой
Сообщений: 366
Регистрация: 5-09-06
Из: Санкт-Петербург
Пользователь №: 20 107

|
Цитата(cyberrevenger @ Jul 19 2013, 02:51)  Спасибо всем кто отвечал, очень интересные решения, но хочу подчеркнуть, 1) что вычислительные ресурсы ограничены микроконтроллером STM32F407. 2) в связи со спецификой данной задачи(смарт карты), решение необходимо принять достаточно быстро. По сути время ограничивается временем обработки комманды, посылаемой терминалом смарткарте. Или даже временем выполнения определенного алгоритма на карте(например RSA или DES шифрование ключей). Если промедлить с решением схожести сигнала, карта может безвозвратно умереть(полное удаление данных). 3) по этому сигнал надо не накапливать для последующей обработкм, а обрабатывать по мере поступления отсчетов в сравнении с эталоном
по этому к сожалению преобразования Фурье тут не получится пременить, потеря времени. 1. у этого проца ресурсов хватит _на_все_!!!. Для справки - комплексное БПФ в плавающей точке 128 отсчетов - 600мкс (168МГц). И это без ассемблера, только С код. 2. Делать короче выборку и, если сигнал уникальный, то решение будет принято еще раньше. 3. ммм... ну... тогда ничего не сделать
|
|
|
|
|
Jul 19 2013, 13:06
|
Участник

Группа: Участник
Сообщений: 18
Регистрация: 21-11-07
Пользователь №: 32 540

|
Цитата(mdmitry @ Jul 19 2013, 15:05)  А что делает согласованный фильтр как не обрабатывает входную смесь? Выход фильтра - автокорреляционная функция сигнала с которым этот фильтр согласован. Пиковое значение будет в момент окончания сигнала. Фильтр может быть построен по нерекурсивной схеме. Длина импульсной характеристики определяет задержку отклика на выходе. Импульсная характеристика - инвертированный во времени и сдвинутый образцовый сигнал. Посмотрите как определяют начало пакетов при передачи информации по радиоканалам.(преамбула). Хым, истина гдето рядом, буду копать в данном направлении, надо мат часть освежить... спасибо вам за совет
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|