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?