Je lis, je lis un flux de bits à perte et j'ai besoin d'un moyen de récupérer autant que possible des données utilisables. Il peut y avoir 1 1 à la place de 0 et de 0 à Palce of 1, mais la précision est probablement supérieure à 80%.
Un bonus serait si l'algorithme pouvait compenser également des bits manquants / trop nombreux. P>
La source que je lis est analogue avec du bruit (micro via FFT) et le chronométrage de lecture peut varier en fonction de la vitesse de l'ordinateur. P>
Je me souviens de lire sur les algorithmes utilisés dans le CD-ROM de le faire dans 3 ? Les couches, donc je suppose que l'utilisation de plusieurs couches est une bonne option. Je ne me souviens pas des détails, alors si quelqu'un peut partager des idées qui seraient super! :) p>
edit2: strong> Je suis capable de contrôler les données envoyées. Tentative actuelle de mettre en œuvre une simple vérification XOR (bien qu'elle ne soit pas suffisante). P> P>
3 Réponses :
Il y a beaucoup de possibilités, voir: http://en.wikipedia.org/wiki/error_detection_and_correction < / a> p>
Cela peut vous aider avec des bits modifiés, mais peut ne pas convoquer de vérifier chaque fois que vous avez tous les bits. P>
À la fin, cela prendra probablement beaucoup plus que quelques lignes de code simple. P>
Nice .. On dirait que je veux EN.Wikipedia.org/wiki/Cross-interleAvedved_reed-solomon_coding_coding .. mais vous ne trouvez pas une bibliothèque .NET pour Reed-Solomon. Regarde un peu complexe pour me mettre en œuvre.
Vous devez utiliser Correction d'erreur avant . Une vérification de la parité XOR ne détectera que lorsqu'une erreur se produit. Un algorithme de correction d'erreur simple serait d'envoyer chaque morceau de données plusieurs fois (au moins 3) et de prendre une décision majoritaire. p>
Le choix de l'algorithme dépend de plusieurs facteurs: P>
Je suis d'accord, Xor ne sera pas loin (et est un peu cher).
Si je vous comprends correctement, vous avez deux besoins: p>
La modulation et la démodulation sont une application bien connue, avec plusieurs manières pour moduler les informations. p>
Numéro deux, la correction d'erreur est également bien connue et a plusieurs possibilités. Lequel est applicable dépend du taux d'erreur et de savoir si vous avez une opération recto verso afin que vous puissiez demander renvoyer. Si vous avez une qualité décente et que vous pouvez demander renvoyer une approche comme le TCP utilise vaut la peine d'être explorée. P>
Sinon, vous devrez passer à des algorithmes de détection d'erreur et de correction d'erreur, comme celui utilisé sur CDDoms. P>
avoir la modulation / démodulation effectuée et aucune possibilité de renvoyer les possibilités rétrécit le problème. Si vous rencontrez des problèmes de synchronisation, je vous recommanderais toujours de lire les méthodes de modulation existantes (DE), car il existe des moyens de resynchroniser automatiquement avec l'expéditeur et d'augmenter le rapport signal à bruit. P>
jusqu'au problème de base; Correction d'erreur Vous devrez ajouter des bits de parité à votre flux de sortie afin de pouvoir détecter les erreurs. À partir de l'article de correction d'erreur avant @Justin suggère, un schéma qui semble assez simple, mais toujours puissant est le Hamming (7,4) schéma. P>
La modulation et la démodulation sont déjà faites. Je génère une onde sinusale de 1000Hz et utilise une transformée rapide Fourier pour lire la fréquence et l'amplitude spécifiques. Ce n'est pas une communication à double sens, donc je ne peux pas demander renvoyer ou envoyer ACK.
Pouvez-vous contrôler ce qui est écrit au flux? Sinon, votre exemple de CD ne s'applique pas car il exige que les données soient écrites avec des codes de correction d'erreur.
Je ne comprends pas cette question. Essayez-vous de faire une sorte de protocole de communication sur un canal peu fiable? Ou essayer de trouver une sorte d'algorithme magique, pouvant, de l'air mince, devinez ce qui ne va pas ou non?
J'essaie de communiquer sur le son (haut-parleur + microphone). J'utilise une fréquence spécifique pour envoyer des bits. L'application recherche donc cette fréquence spécifique.
Vous devez donner plus d'informations sur vos données d'entrée. Êtes-vous capable de définir la fréquence de recherche? Cela ressemble à ce que l'Euphoric ait le point de sucer des choses de l'air minces pour le moment.
La partie sonore est déjà faite. Je lis correctement les bits en analysant des fréquences et une amplitude. J'ai besoin de nettoyer le bitstream en ajoutant une correction d'erreur. Je tiens à compenser le bruit et les petits problèmes de synchronisation.