Académique Documents
Professionnel Documents
Culture Documents
TP3 Tic 2023
TP3 Tic 2023
2022-2023
TP N° 3 en Théorie de l’Information
Codage Canal
I- Objectif
L’objectif de ce troisième TP est de comprendre le principe des algorithmes de codage canal, en particulier les
codes à contrôle de parité.
II- Principe de codage canal
Les codes utilisés en communication peuvent corriger ou simplement détecter les erreurs de
transmission, suivant le taux de redondance des bits de contrôle de parité. 1l existe donc des codes
correcteurs d’erreur de types très divers, tels que les codes à contrôle de parité linéaire, les codes
cycliques et les codes convolutifs. Nous allons parler ici des codes à contrôle de parité.
Si les k premiers bits d’un mot codé sont des bits de données, on dit que le code est systématique.
Dans le cas d’un codage systématique à contrôle de parité, les k premiers bits sont des bits de données
tandis que les m = n - k suivants sont des bits de contrôle de parité formés par combinaison linéaire
des bits de données :
Eq. 1
1
Eq. 2
où l’on a :
Eq. 3
expression dans laquelle Ik est la matrice unité d’ordre k et PT est la matrice transposée de la matrice
des coefficients P ayant pour expression :
Eq. 4
La matrice G de dimensions k x n est appelée matrice génératrice. Le code (ensemble complet des
mots codés) engendré par la relation (1) ou (2) est appelé code à contrôle de parité linéaire.
Eq. 5
où m = n - k. On a alors :
Eq. 6
ainsi que
Eq. 7
où l’on a reconnu dans 0 la matrice nulle de dimension k x m. Une postmultiplication par H des deux
membres de la relation (2) et l’utilisation de la relation (7) permet d’obtenir :
Eq. 8
La matrice H est appelée matrice de contrôle de parité du code considéré et la relation (8) est appelée
relation de parité.
2
III- Manipulation du codage source avec Matlab
2. Syndrome et correction
Nous simulons l’occurrence d’une erreur sur chaque bit du message codé C1 ou C2 avec le programme
suivant.
3
- Quelle est l’opération réalisée à la ligne 20 ?
- Que représente le vecteur Z à chaque itération ?
- Quelle est la différence entre les lignes 20 et 23 ?
- Exécuter frag3 et relever la valeur de la matrice Zn dans la fenêtre de commande.
- Comparer Zn et H. Que représente chaque colonne de cette matrice ?
- Supposons l’arrivé du code C=t[1 1 1 1 0 1 1] avec une erreur évidente en b2 que nous souhaitons
intercepter au moyen de frag4. Désignons le code corrigé par C_corrected.
- Quelle est la valeur enregistrée par test (ligne 31) ?
- Compléter la ligne 34 et exécuter frag4. ?
- Relever les sorties C, Z, i, C_corrected et R dans la fenêtre de commande. Commentaires.
- Validation de Q0 et Q4.
Nous souhaitons ici tabuler la position d’une erreur dans les lignes d’une matrice P(n+1,n) dont la
première ligne, composée uniquement de zéros indiquera naturellement l’absence d’erreur.
Exécuter le programme ci-dessous et relever les valeurs du scalaire z10. Comparer ces résultats aux
valeurs de chaque colonne de Zn convertie en binaire. (se reporter à la rubrique de help sur bi2de(.)…)
4
- Relever la matrice T en sortie de la fonction syndtable(.) de MATLAB. Comparer ce résultat avec
P.
- Nous nous plaçons à nouveau dans le cas de l’arrivé du code C=t[1 1 1 1 0 1 1] présentant la même
erreur en b2. Corrigeons cette erreur avec frag6.