[an error occurred while processing this directive] [an error occurred while processing this directive]
Делал такое чудо - только сигнал у меня был попроще.(+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
[an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive]

Отправлено Успешно делавший 11 сентября 2001 г. 14:29
В ответ на: На словах выглядит здорово, но... отправлено Baser 11 сентября 2001 г. 13:02

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

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

Далее реализация - если позволяют средства (т.е. память и производительность) можно хранить байт на каждый отсчет умножать и складывать.

Но в своей задаче я хранил 1 бит на отсчет отсекать все это дело доверял внешнему компаратору. При таком подходе операция xor - превращается в умножитель-коррелятор т.е. если тестовый и пришедший бит совпадают то xor дает 0 если нет то 1. Немного с инверсией получается, но какая разница.

У вас видимо по 1 биту не получиться и тогда нужен полноценный умножитель. Из без быстрого не обойтись. Потому что на каждый новый отсчет вам нужно перемножить и сложить для все отсчеты последовательности по новой.

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

Мое чудо в свое время работало на PIC16f84 с прицелом на PIC16c505. Но теперь можно посоветовать TMS320VC5402 за 6$ и 100MIPS c 16x16 умножителем (даже 17x17) - хотя у вас там вроде что то уже есть. Ну вам нужен умножитель как минимум.

Пишите если что.

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru