Алгоритм сопоставления данных - PullRequest
5 голосов
/ 12 марта 2011

У меня есть проект, в котором я тестирую устройство, очень чувствительное к шуму (электромагнитное, радио и т. Д.). Устройство генерирует 5-6 байтов в секунду двоичных данных (выглядит как бред для неопытного глаза) на основе входного сигнала (аудио).

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

Я написал приложение, которое дает пользователю возможность видеть на лету ошибки, которые он генерирует (по сравнению с мастер-файлом [например, что устройство должно выводить в идеальных условиях]). Мой алгоритм в основном берет каждый байт в живых данных и сравнивает его с байтом в той же позиции в известном главном файле. Если байты не совпадают, у меня есть окно из 10 символов в обе стороны от текущей позиции, где я буду искать совпадение поблизости. Если это соответствует (плюс проверка или два), я визуально размечаю местоположение в пользовательском интерфейсе и регистрирую ошибку.

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

Могу ли я использовать другие подходы? Существуют ли известные алгоритмы для такого типа вещей?
Много лет назад я читал, что оборудование для сбора данных НАСА (например, связывающееся с космическими аппаратами в космосе и на Луне / Марсе) потеряло 0,00001% данных, несмотря на огромные помехи в космосе.

Есть идеи?

1 Ответ

2 голосов
/ 13 марта 2011

Я предполагаю, что основной интерес представляет сигнал, генерируемый устройством? Что важнее? Обнаруживать, когда произошла ошибка, или сделать сигнал «устойчивым» к таким ошибкам? В последнее время я много работаю с сигналом, и удаление шума из него - это часть моей рутины, в основном я пытаюсь оценить реальный сигнал и удалить все загрязнения.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...