Разработка, производство и продажа радиоэлектронной аппаратуры
|
Требуется программист в Зеленограде - обработка данных с датчиков; ColdFire; 40 тыс.
e-mail: jobsmp@pochta.ru
|
1) Апсемплинг сигнала во много раз (тупо фнч-интерполяцией). Чем больше, тем будет точнее, но и вычислений будет во столько же раз больше.
2) Накапливаем достаточно длинный участок сигнала, эквивалентный минимум нескольку десятков исходных символов (скажем, N), его и будем демодулировать.
3) Выбираем N семплов, начиная с первого, с частотой следования исходных символов. Сравниваем кажлдый с порогами (100, 50, 0, -50, -100), находим ближайший порог, ошибку от ближайшего, и считаем среднеквадратичную ошибку для всех N семплов.
4) Сдвигаемся на один семпл и повторяем пункт 3. Так проходим весь накопленный участок. (То есть, если апсемплинг был в Х раз (с учётом трёх раз, которые уже есть), то повторяем всё это Х-1 раз).
5) Выбираем положение с наименьшей ошибкой и считаем, что нашли правильную точку семплинга. А вместе с ней и собственно данные.
Другой, чисто теоретический вариант:
1) Апсемплинг как и раньше.
2) Накапливаем короткий участок сигнала (скажем, символов 10) и умножаем на гауссово окно.
3) Если у нас длина 10 символов, то перебираем 5^10=9765625 вариантов :-))), коррелируя с имеющимся сигналом. Находим лучший. :-)))
Составить ответ | Вернуться на конференцию
Ответы