Université Abou Bekr Belkaid- TLEMCEN Réseaux et Télécommunications
Faculté des Sciences et de la Technologie TP Codage et compression
Département de télécommunications Master M 1 Mme BOUSALAH Fayza
Filière d’Electronique TP N°1 : CODAGE HUFFMAN SUR MATLAB
Dr. Abdelkrim ouafi
Exemple 1
L'exemple ci-dessous effectue l'encodage et le décodage de Huffman, enMr. Salah une
utilisant Eddine Bekhouche
source S dont
l'alphabet comporte 3 symboles. Notez que les fonctions huffmanenco et huffmandeco utilisent le
dictionnaire que huffmandict a créé en utilisant les commandes de Matlab.
Soit un vecteur de données 1 ligne10 colonnes à coder, avec 3 symboles la probabilité de chaque
symbole est donnée par p = [0.1 0.1 0.8].
1- Créer un vecteur 1 ligne 10 colonnes [3 3 1 3 3 3 3 3 2 3] de dimension [1,50].
2- Créer 3 symboles [1 2 3] de probabilité p = [0.1 0.1 0.8] respectivement.
3- Créez le dictionnaire de Huffman ou les mots de codes de chaque symbole.
4- Coder les données.
5- Décoder le message.
Exemple 2
Soit 6 symboles de probabilité respective P= [.5 .125 .125 .125 0.625 .0625].
1- Créer 6 symboles et attribuer les probabilités P d'occurrence pour chacun d’eux.
2- Créer un dictionnaire de Huffman basé sur ces symboles et leurs probabilités.
3- Générer un vecteur de symboles aléatoires.
4- Coder les symboles aléatoires.
5- Décoder les données. Vérifiez que les données décodées correspondant aux données origines.
6- Convertir le signal original en binaire, et déterminer sa longueur.
7- Convertir le signal codé en Huffman et déterminer sa longueur.
Exemple 3
Etape1 :
1- Créer un vecteur 1 ligne 6 colonnes de dimension [1,50] ensuite le coder.
2- Créer 6 symboles ('A','B','C','D','E','F') avec la probabilité de chaque symbole donnée par
P= [0.23 0.09 0.30 0.19 0.14 0.05] respectivement.
3- Créer un tableau de cellules de vecteurs de caractères à partir d'un ensemble de données en utilisant
la commande de Matlab « Cellstar ».
4- Créer le dictionnaire de Huffman.
1
Université Abou Bekr Belkaid- TLEMCEN Réseaux et Télécommunications
Faculté des Sciences et de la Technologie TP Codage et compression
Département de télécommunications Master M 1 Mme BOUSALAH Fayza
Filière d’Electronique
5- Coder les données du vecteur.
6- Décoder le message.
Dr. Abdelkrim ouafi
Etape 2 :
Mr. Salah Eddine Bekhouche
1/Coder le message FCA.
2/Décoder le message ‘’ 1001100111 ‘’, et vérifiez que les données décodées correspondant aux
données origines.
Exemple 4
Considérons une source discrète sans mémoire qui produit des symboles avec la loi de probabilité
p={0.4 0.15 0.1 0.05 0.2 0.05 0.05} sur l’alphabet {a,f,o,r,u,x,s}
1/Trouver le code de Huffman associé.
2/Coder le message ‘aforuxs’.
3/Essayer d’appliquer les autres fonctions.
2
Université Abou Bekr Belkaid- TLEMCEN Réseaux et Télécommunications
Faculté des Sciences et de la Technologie TP Codage et compression
Département de télécommunications Master M 1 Mme BOUSALAH Fayza
Filière d’Electronique
TP N°1 : CODAGE HUFFMAN SUR MATLAB (SOLUTION)
Exemple 1 Dr. Abdelkrim ouafi
L'exemple ci-dessous effectue l'encodage et le décodage Huffman,Mr.
en utilisant une source
Salah Eddine dont
Bekhouche
l'alphabet comporte trois symboles. Notez que les fonctions huffmanenco et huffmandeco utilisent le
dictionnaire que huffmandict a créé.
sig = repmat ([3 3 1 3 3 3 3 3 2 3], 1,50); % Des données à coder
symbols = [1 2 3]; % Des symboles de données distincts apparaissant dans sig
p = [0.1 0.1 0.8]; % Probabilité de chaque symbole de données
dict = huffmandict (symbols, p); % Créez le dictionnaire ou les mots de codes de chaque
symbole.
hcode = huffmanenco (sig, dict); % Coder les données.
dhsig = huffmandeco (hcode, dict); % Décoder le message.
Exemple 2
%Créer des symboles uniques, et d'attribuer des probabilités d'occurrence pour eux
symbols = 1:6;
p = [.5 .125 .125 .125 .0625 .0625];
%Créer un dictionnaire Huffman basé sur les symboles et leurs probabilités
dict = huffmandict(symbols,p);
%Générer un vecteur de symboles aléatoires
sig = randsrc(100,1,[symbols; p]);
%Coder les symboles aléatoires
comp = huffmanenco(sig,dict);
%Décoder les données. Vérifiez que les données décodées correspondant aux données
d'origine
dsig = huffmandeco(comp,dict);
isequal(sig,dsig)
%Convertir le signal original en binaire, et déterminer sa longueur.
binarySig = de2bi(sig);
seqLen = numel(binarySig)
%Convertir le signal codé Huffman et déterminer sa longueur
3
Université Abou Bekr Belkaid- TLEMCEN Réseaux et Télécommunications
Faculté des Sciences et de la Technologie TP Codage et compression
Département de télécommunications Master M 1 Mme BOUSALAH Fayza
Filière d’Electronique
binaryComp = de2bi(comp);
encodedLen = numel(binaryComp)
Dr. Abdelkrim ouafi
Mr. Salah Eddine Bekhouche
Exemple 3
sig = repmat(['A','B','C','D','E','F'],1,1); % Data to encode
symbols = cellstr(char('A','B','C','D','E','F')); % Distinct data symbols appearing in sig
p = [0.23 0.09 0.30 0.19 0.14 0.05]; % Probability of each data symbol
dict = huffmandict(symbols,p); % Create the dictionary.
hcode = huffmanenco(sig,dict); % Encode the data.
dhsig = huffmandeco(hcode,dict); % Decode the code.
1/coder le message FCA
2/décoder le message ‘’ 1001100111 ‘’, et vérifiez que les données décodées correspondant aux
données d'origine.
Exemple 4
Considérons une source discrète sans mémoire qui produit des symboles avec la loi de
probabilité p={0.4 0.15 0.1 0.05 0.2 0.05 0.05} sur l’alphabet {a,f,o,r,u,x,s}
1/Trouver le code de Huffman associé.
2/Coder le message ‘aforuxs’.
3/Essayer d’appliquer les autres fonctions.