Sunteți pe pagina 1din 8

CODIGO HUFFMAN

TALLER FINAL

JESUS ENRIQUE NAVARRO FUENTES

ING. YESICA BELTRAN GOMEZ

GRUPO: 2

UNIVERSIDAD DEL MAGDALENA


PROGRAMA DE INGENIERIA ELECTRONICA

SANTA MARTA D.T.C.H.


2017- II
Taller tercer seguimiento – Radiocomunicaciones

1. Calcule la entropía de las siguientes fuentes:

a. Fuente binaria con probabilidades 0.9 y 0.1.

b. Fuente con tres símbolos cuyas probabilidades son 0.73, 0.25 y 0.02.

c. Fuente que puede emitir 6 símbolos con probabilidades 0.4, 0.2, 0.1, 0.1, 0.1 y 0.1.

2. Obtenga un código de Huffman para cada una de las fuentes anteriores. Compruebe si se trata
de buenos códigos o no, calculando en cada caso su tasa de compresión y su eficiencia.

3. Desarrolle una función, en MATLAB, [H,l] = huffman(p) que devuelva un código de Huffman para
una fuente discreta con un vector de probabilidades p. La matriz H contiene el código asociado a
cada símbolo en sus filas, mientras que l es un escalar con la longitud media del código. Compruebe
su correcto funcionamiento observando los códigos generados para cada una de las fuentes del
punto 1 y obteniendo su tasa de compresión y su eficiencia y comprobando que coinciden con los
valores calculados en el punto 2.

Solución:

1. Para calcular la entropía de:


A. Fuente binaria con probabilidades 0.9 y 0.1.

𝐻 = − ∑ 𝑃𝑖 log 2 𝑃𝑖
𝑖=1
𝐻 = −(0,9log 2 0,9 + 0,1log 2 0,1)
𝐻 = −(−0.136 + (−0.332))
𝐻 = −(−0.468)
𝐻 = 0.468

B. Fuente con tres símbolos cuyas probabilidades son 0.73, 0.25 y 0.02.

𝐻 = − ∑ 𝑃𝑖 log 2 𝑃𝑖
𝑖=1
𝐻 = −(0.73log 2 0.73 + 0.25log 2 0.25 + 0.02log 2 0.02)
𝐻 = −(−0.331 + (−0.5) + (−0.112))
𝐻 = −(−0.943)
𝐻 = 0.943
C. Fuente que puede emitir 6 símbolos con probabilidades 0.4, 0.2, 0.1, 0.1, 0.1 y 0.1.
𝑀

𝐻 = − ∑ 𝑃𝑖 log 2 𝑃𝑖
𝑖=1
𝐻 = −(0.4log 2 0.4 + 0.2log 2 0.2 + 0.1log 2 0.1 + 0.1log 2 0.1 + 0.1log 2 0.1
+ 0.1log 2 0.1)
𝐻 = −(−0.528 + (−0.464) + (−0.332) + (−0.332) + (−0.332) + (−0.332))
𝐻 = −(−2.317)
𝐻 = 2.317

2. Código Huffman :
A. 0.9 Y 0.1

0,90 1,0
0,11

DATOS EN BITS

0
1

𝐿̅ = ∑ 𝑃𝑖 𝑛𝑖
𝑖=1

𝐿̅ = 0.9(1) + 0.1(1) = 1

log 2 𝑀
𝛤=
𝐿̅

Donde M=2

log 2 2
𝛤= =1
1

𝐻(𝑋)
η=
𝐿̅

0.468
η= = 0.468
1
Eficiencia de 46.8%

𝐻(𝑥) 0.468
= = 0.318
1 + 𝐻(𝑥) 1 + 0.468
𝐶𝑜𝑚𝑜 𝑙𝑎 𝑡𝑎𝑠𝑎 𝑑𝑒 𝑐𝑜𝑚𝑝𝑟𝑒𝑛𝑠𝑖𝑜𝑛 𝛤 ≥ 1 𝑦 𝑙𝑎 𝑒𝑓𝑖𝑐𝑖𝑒𝑛𝑐𝑖𝑎 𝑒𝑠 0.318 ≤ η ≤ 1 el codigo es bueno

B. 0.73 , 0.25 y 0.02

0,73 0,730 1,00


0,250 0,271
0,021
DATOS EN BITS

0
10
11

𝐿̅ = ∑ 𝑃𝑖 𝑛𝑖
𝑖=1

𝐿̅ = 0.73(1) + 0.25(2) + 0.02(2) = 1.27

log 2 𝑀
𝛤=
𝐿̅

Donde M=3

log 2 3
𝛤= = 1.24
1.27

𝐻(𝑋)
η=
𝐿̅

0.943
η= = 0.742
1.27
Eficiencia de 74.2%

𝐻(𝑥) 0.943
= = 0.485
1 + 𝐻(𝑥) 1 + 0.943
𝐶𝑜𝑚𝑜 𝑙𝑎 𝑡𝑎𝑠𝑎 𝑑𝑒 𝑐𝑜𝑚𝑝𝑟𝑒𝑛𝑠𝑖𝑜𝑛 𝛤 ≥ 1 𝑦 𝑙𝑎 𝑒𝑓𝑖𝑐𝑖𝑒𝑛𝑐𝑖𝑎 𝑒𝑠 0.485 ≤ η ≤ 1 el codigo es bueno
C. 0.4, 0.2, 0.1, 0.1, 0.1 y 0.1

0,4 0,4 0,4 0,4 0,60 1,0

0,2 0,2 0,2 0,40 0,41

0,1 0,2 0,20 0,21

0,1 0,10 0,21

0,10 0,11

0,11

DATOS EN BITS

1
01
0010
0011
0000
0001
𝑀

𝐿̅ = ∑ 𝑃𝑖 𝑛𝑖
𝑖=1

𝐿̅ = 0.4(1) + 0.2(2) + 0.1(4) + 0.1(4) + 0.1(4) + 0.1(4) = 2.4

log 2 𝑀
𝛤=
𝐿̅

Donde M=6

log 2 6
𝛤= = 1.07
2.4

𝐻(𝑋)
η=
𝐿̅

2.317
η= = 0.965
2.4
Eficiencia de 96.5%
𝐻(𝑥) 2.317
= = 0.698
1 + 𝐻(𝑥) 1 + 2.317
𝐶𝑜𝑚𝑜 𝑙𝑎 𝑡𝑎𝑠𝑎 𝑑𝑒 𝑐𝑜𝑚𝑝𝑟𝑒𝑛𝑠𝑖𝑜𝑛 𝛤 ≥ 1 𝑦 𝑙𝑎 𝑒𝑓𝑖𝑐𝑖𝑒𝑛𝑐𝑖𝑎 𝑒𝑠 0.698 ≤ η ≤ 1 el codigo es bueno

3. Códigos Matlab
a.
>> h=[1: 2];
>> p=[.9 .1];
>> [dict,avglen] = huffmandict(h,p)

dict =

2×2 cell array

[1] [0]
[2] [1]

avglen =

>> a=log2(2)

a=

>> b=a/1

b=

>> n=0.468/1

n=

0.4680

>> efficiencies 46.8%


b. .
>> h=[1: 3];
>> p=[.73 .25 .02];
>> [dict,avglen] = huffmandict(h,p)

dict =

3×2 cell array

[1] [ 0]
[2] [1×2 double]
[3] [1×2 double]

avglen =

1.2700

>> a=log2(3)

a=

1.5850

>> n=0.943/1.27

n=

0.7425

>>efficiencies 74.25%

c. .
>> h=[1: 6];
>> p=[.4 .2 .1 .1 .1 .1];
>> [dict,avglen] = huffmandict(h,p)

dict =

6×2 cell array

[1] [ 1]
[2] [1×2 double]
[3] [1×4 double]
[4] [1×4 double]
[5] [1×4 double]
[6] [1×4 double]

avglen =

2.4000

>> a=log2(6)

a=

2.5850

>> n=2.317/2.4

n=

0.9654

>>efficiencies 96.54%

CONCLUSION

Como se observe en el desarrollo del código de HUFFMAN para obtener la eficiencia y


la comprensión los datos recibidos coinciden con los datos calculados en cada inciso
desarrollado del segundo punto.

S-ar putea să vă placă și