Travaux pratiques#

Modules Python

Dans ce TP, nous utiliserons les modules numpy, scipy, matplotlib, comnumfip et komm.

Trois codes canal sont comparés sur des simulations numériques : le code à parité (5,4), le code de Hamming (7,4) et le code convolutif de polynômes générateurs \(7_8\) et \(5_8\). Le code à parité (5,4) consiste, comme le code à parité (3,2), à ajouter un bit de parité à chaque bloc du message.

Le codage et le décodage seront, pour ces trois codes, effectués avec le module komm.

  1. Cherchez dans l’aide de komm quelles instructions permettent de coder et décoder une séquence binaire.

  2. Testez le fonctionnement de chaque code sur une séquence binaire aléatoire (comnumfip.randmary).

  3. Vérifiez que le décodage fonctionne également en l’appliquant directement sur la séquence codée.

  4. Introduisez quelques erreurs dans la séquence pour vérifier que le décodage fonctionne bien. Expliquez en particulier le cas du code à parité (5,4).

On applique maintenant ces trois codes sur des séquences binaires très longues, en considérant un canal binaire symétrique de probabilité d’erreur \(\alpha\), c’est-à-dire que chaque bit a une probabilité \(\alpha\) d’être erroné. La transmission est dite « simplex » c’est-à-dire qu’elle s’effectue dans un seul sens : il n’est pas possible pour le récepteur de demander à l’émetteur de transmettre une nouvelle fois le message si une erreur a été détectée sans avoir pu être corrigée.

  1. Simulez la transmission via ce canal (komm.BinarySymmetricChannel) d’une séquence binaire aléatoire sans code canal et avec les trois codes précédents.

  2. Tracez la probabilité d’erreur par élément du message en fonction de la probabilité d’erreur sur le canal de transmission (faites plusieurs simulations avec des messages suffisamment longs).