fréquence : matrice d’entiers contenant les fréquences d’apparitions des différents caractères du
fichier .txt importé.
dictionnaire : matrice de string contenant les différents caractères du fichier .txt importé rangés
par ordre décroissant en fonction de leur fréquence d’apparition.
code : list de string contenant les codes Huffman (ou Shannon ou Arithmetique) des lettres du
fichier .txt importé.
Borne_inf : tableau contenant les bornes inférieurs des intervalles représentants les probabilités
pour le codage arithmétique.
Borne_sup : tableau contenant les bornes supérieurs des intervalles représentants les
probabilités pour le codage arithmétique.
Les fonctions :
compression : fonction principale qui appelle les autres fonctions, qui affiche le menu de
sélection de d’algorithmes et qui définie la variable choix.
importation : importe dans Matlab le fichier .txt choisi comme base pour l’algorithme de
Huffman (ou de Shannon ou Arithmetique) et définie les variables text et nom.
tri : traite la variable text afin de définir les variables alphabet et frequence.
huffman : algorithme d’Huffman, fonction qui définie les variables dictionnaire et code.
shannon : algorithme de Shannon, fonction qui définie les variables dictionnaire et code.
encodage : enregistre dans un fichier .txt le fichier importé codé selon l’algorithme de Huffman
(ou de Shannon).
affichage : affiche le code Huffman (ou Shannon) du fichier importé et l’enregistre dans un fichier
.txt.
details : affiches les détails de compression ainsi que l’entropie et les enregistre dans un fichier
.txt.
decodage : importe et décode un fichier .txt codé et l’enregistre dans un fichier.txt.
arithmétique : algorithme du codage arithmétique, fonction qui définie les variables Borne_inf
et Borne_sup .
arithmetiquedetails : affiche les détails de compression de l’algorithme du codage arithmétique
et enregistre dans un fichier .txt le fichier importé codé.
decodearithmetique : importe et décode un fichier .txt codé selon l’algorithme arithmétique.
Codage de Shannon-Fano
Le codage de Shannon-Fano est une construction d'un code préfixe qui repose sur la distribution de
probabilité des symboles de l'alphabet. Le principe est très simple ; il consiste à trier tous les symboles à
compresser selon leur probabilité. L’ensemble trié obtenu est alors coupé en deux parties de telle façon
que les probabilités des deux parties soient le plus proche possible de l'égalité (la probabilité d'une partie
étant égale à la somme des probabilités des différents symboles de cette partie). Chaque symbole de la
première partie aura un code qui commencera par 0 et chaque symbole de la seconde partie aura un code
qui commencera par 1. On recommence le processus récursivement sur les deux sous-parties jusqu'à ce
qu'il ne reste plus qu'un terme dans le tableau, le symbole correspondant aura pour code la
concaténation des 0 et 1 des différents appels récursifs.
Pour résumer, le codage de Shannon Fano peut se découper selon les 4 étapes suivantes :
1) on classe les symboles par ordre de probabilités,
2) on partage l’ensemble des symboles en deux sous-ensembles, les 2 sous-ensembles devant être de
probabilités aussi proches que possible,
3) on attribue à chaque sous-ensemble l’état 0 ou 1,