2011-03-12 11 views
5

Tengo un proyecto en el que estoy probando un dispositivo que es muy sensible al ruido (electromagnético, de radio, etc.). El dispositivo genera 5-6 bytes por segundo de datos binarios (parece un galimatías para un ojo no entrenado) según una entrada de dar (audio).Algoritmo para datos coincidentes

Según el ruido, en ocasiones el dispositivo perderá caracteres, a veces insertará caracteres aleatorios, a veces múltiplos de ambos.

He escrito una aplicación que le da al usuario la capacidad de ver sobre la marcha los errores que genera (en comparación con el archivo maestro [por ejemplo, lo que el dispositivo debe producir en condiciones ideales]). Mi algoritmo básicamente toma cada byte en los datos en vivo y lo compara con el byte en la misma posición en el archivo maestro conocido. Si los bytes no coinciden, tengo una ventana de 10 caracteres en ambos sentidos desde la posición actual, donde buscaré una coincidencia cercana. Si eso coincide (más una validación o dos), marque visualmente la ubicación en la IU y registre un error.

Este enfoque funciona razonablemente bien y, de hecho, dada la velocidad de los datos entrantes, también funciona en tiempo real. Sin embargo, siento que lo que estoy haciendo no es óptimo y el enfoque se derrumbaría si los datos se transmitieran a tasas más altas.

¿Hay otros enfoques que podría tomar? ¿Hay algoritmos conocidos para este tipo de cosas?
Leí hace muchos años que el conjunto de recopilación de datos de la NASA (por ejemplo, los que se comunican con embarcaciones en el espacio y en la Luna/Marte) ha tenido una pérdida de datos del 0.00001% a pesar de la tremenda interferencia en el espacio.

¿Alguna idea?

Respuesta

2

Supongo que el principal interés es la señal generada por el dispositivo? ¿Qué es más importante? ¿Detecta cuándo ha ocurrido un error o hace que la señal sea "robusta" contra tales errores? Hago mucho procesamiento de señales últimamente y eliminar una señal de ruido es parte de mi rutina, básicamente estoy tratando de estimar la señal real y eliminar cualquier contaminante.

No sé cómo se usa más la señal generada por el dispositivo ... si se está grabando en una computadora, entonces puede aplicar un poco de eliminación de ruido, por ejemplo, intente denegar wavelets. Encontrará paquetes para hacer esto en varios idiomas de su elección.

Cuestiones relacionadas