[an error occurred while processing this directive]
[an error occurred while processing this directive]
|
Проделывал подобную вещь. Только сигнал у меня был - "сигнал поверки времени повышенной информативности" - его по радио каждый час передают: такое пи-пи-пиии. Причем длина последнего пиии однозначно говорит о номере часа. Так вот надо было это пи-пи опознать и не спутать с остальной болтавней по радио. :). На это сигнал есть стандарт и все такое, но к вашей задача это неимеет отношения.
Так вот суть страшного слова корреляция можно раскрыть просто - Умножаем тестовый образ сигнала на то что пришло и если результат большой - видимо пришедщий и тестовый сигналы сильно похожи - коррелируют - и мы имеет то что ждем. :)
Значит надо хранить тестовый образ и приходящую последовательность - ее сдвигаем с каждым новым отсчетом и множим. Сдвигаем - последний выкидываем новый становиться первым и так далее. Множим - Т.е. каждый отсчет на каждый и результат суммируем. В книжках красиво описано - но они там все напирают на то что это оптимальный обнаружитель и все такое, а суть на детских понятиях стесняются расписать. :)
Нарисуйте две строчки с сигналами и подвигайте их друг относительно друга, когда сигналы срвпадут - сумма произведений отсчетов даст максимальное число - вот и весь анализ.
Далее реализация - если позволяют средства (т.е. память и производительность) можно хранить байт на каждый отсчет умножать и складывать.
Но в своей задаче я хранил 1 бит на отсчет отсекать все это дело доверял внешнему компаратору. При таком подходе операция xor - превращается в умножитель-коррелятор т.е. если тестовый и пришедший бит совпадают то xor дает 0 если нет то 1. Немного с инверсией получается, но какая разница.
У вас видимо по 1 биту не получиться и тогда нужен полноценный умножитель. Из без быстрого не обойтись. Потому что на каждый новый отсчет вам нужно перемножить и сложить для все отсчеты последовательности по новой.
Выбирая длину последовательности и частоту выборки - напрямую от возможностей.
Мое чудо в свое время работало на PIC16f84 с прицелом на PIC16c505. Но теперь можно посоветовать TMS320VC5402 за 6$ и 100MIPS c 16x16 умножителем (даже 17x17) - хотя у вас там вроде что то уже есть. Ну вам нужен умножитель как минимум.
Пишите если что.
E-mail: info@telesys.ru