J'ai un projet où je teste un appareil très sensible au bruit (électromagnétique, radio, etc ...). L'appareil génère 5-6 octets par seconde de données binaires (ressemble à du charabia à un œil non formé) sur la base d'une entrée donnée (audio).Algorithme pour l'appariement de données
En fonction du bruit, il arrive que l'appareil manque des caractères, parfois il insère des caractères aléatoires, parfois des multiples des deux.
J'ai écrit une application qui donne à l'utilisateur la possibilité de voir à la volée les erreurs qu'il génère (par rapport au fichier maître [par exemple ce que le périphérique devrait sortir dans des conditions idéales]). Mon algorithme prend fondamentalement chaque octet dans les données en direct et le compare à l'octet dans la même position dans le fichier maître connu. Si les octets ne correspondent pas, j'ai une fenêtre de 10 caractères dans les deux sens à partir de la position actuelle, où je chercherai un match à proximité. Si cela correspond (plus une validation ou deux), je marque visuellement l'emplacement dans l'interface utilisateur et enregistrer une erreur.
Cette approche fonctionne raisonnablement bien et, en fait, compte tenu de la vitesse des données entrantes, fonctionne également en temps réel. Cependant, j'ai l'impression que ce que je fais n'est pas optimal et que l'approche s'effondrerait si les données circulaient à des taux plus élevés.
Y a-t-il d'autres approches que je pourrais prendre? Y a-t-il des algorithmes connus pour ce genre de chose? J'ai lu il y a de nombreuses années que la collection de données de la NASA (par exemple celles qui communiquent avec l'artisanat dans l'espace et sur la Lune/Mars) avait une perte de données de 0,00001% malgré une énorme interférence dans l'espace.
Des idées?