Documente Academic
Documente Profesional
Documente Cultură
TALLER FINAL
GRUPO: 2
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:
𝐻 = − ∑ 𝑃𝑖 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
0
10
11
𝐿̅ = ∑ 𝑃𝑖 𝑛𝑖
𝑖=1
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,10 0,11
0,11
DATOS EN BITS
1
01
0010
0011
0000
0001
𝑀
𝐿̅ = ∑ 𝑃𝑖 𝑛𝑖
𝑖=1
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 =
[1] [0]
[2] [1]
avglen =
>> a=log2(2)
a=
>> b=a/1
b=
>> n=0.468/1
n=
0.4680
dict =
[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 =
[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