Wiki source for HuffmannCodierung
=====Huffmann-Codierung=====
==a==Prinzip==a==
Eingangssymbole mit einer höheren Häufigkeit werden mit einem kurzen Ausgangssymbol versehen.
Seltene Eingangssymbole werden mit einem längeren Ausgangssymbol versehen.
|=|rel. Häufigkeit|=|Code|=|Codelänge|=| ||
||6/10|| 0|| 1|| ||
||2/10||11||2 || ||
||1/10|| 101|| 3|| ||
||1/10|| 100||3 || ||
usw.
[[http://www.ziegenbalg.ph-karlsruhe.de/materialien-homepage-jzbg/cc-interaktiv/huffman/codierung.htm Beispiel]]
http://www.youtube.com/watch?v=6lUKgFr5-oQ
[[http://en.wikipedia.org/wiki/Adaptive_Huffman_coding Adaptive Huffmann-Kodierung]]
http://www.ziegenbalg.ph-karlsruhe.de/materialien-homepage-jzbg/cc-interaktiv/huffman/codierung.htm
==a==Implementierungen==a==
Huffman Encoder/Decoder
http://sourceforge.net/projects/huffman/
Interface
%%(c)
int huffman_encode_memory(const unsigned char *bufin,
uint32_t bufinlen,
unsigned char **pbufout,
uint32_t *pbufoutlen);
int huffman_decode_memory(const unsigned char *bufin,
uint32_t bufinlen,
unsigned char **bufout,
uint32_t *pbufoutlen);
%%
==a==Häufigkeitsanalyse==a==
%%(matlab)
clear
clc
s = [];
for k=1:100
s = [s 0xA0 0x01 randi(2).'-1 0xE0];
s = [s 0xA0 0x02 randi(2).'-1 0x00 randi(256).'-1 randi(256).'-1 randi(256).'-1 0xE0];
end
a = unique(s).'; % Alphabet
for k=1:length(a)
c(k) = sum(s==a(k));
end
p = c/sum(c);
ps=sort(p);
tres=min(ps(end-10:end));
sel = p>tres;
dec2hex(a(sel))
p(sel).'
%%
----
Siehe auch {{backlinks}}
==a==Prinzip==a==
Eingangssymbole mit einer höheren Häufigkeit werden mit einem kurzen Ausgangssymbol versehen.
Seltene Eingangssymbole werden mit einem längeren Ausgangssymbol versehen.
|=|rel. Häufigkeit|=|Code|=|Codelänge|=| ||
||6/10|| 0|| 1|| ||
||2/10||11||2 || ||
||1/10|| 101|| 3|| ||
||1/10|| 100||3 || ||
usw.
[[http://www.ziegenbalg.ph-karlsruhe.de/materialien-homepage-jzbg/cc-interaktiv/huffman/codierung.htm Beispiel]]
http://www.youtube.com/watch?v=6lUKgFr5-oQ
[[http://en.wikipedia.org/wiki/Adaptive_Huffman_coding Adaptive Huffmann-Kodierung]]
http://www.ziegenbalg.ph-karlsruhe.de/materialien-homepage-jzbg/cc-interaktiv/huffman/codierung.htm
==a==Implementierungen==a==
Huffman Encoder/Decoder
http://sourceforge.net/projects/huffman/
Interface
%%(c)
int huffman_encode_memory(const unsigned char *bufin,
uint32_t bufinlen,
unsigned char **pbufout,
uint32_t *pbufoutlen);
int huffman_decode_memory(const unsigned char *bufin,
uint32_t bufinlen,
unsigned char **bufout,
uint32_t *pbufoutlen);
%%
==a==Häufigkeitsanalyse==a==
%%(matlab)
clear
clc
s = [];
for k=1:100
s = [s 0xA0 0x01 randi(2).'-1 0xE0];
s = [s 0xA0 0x02 randi(2).'-1 0x00 randi(256).'-1 randi(256).'-1 randi(256).'-1 0xE0];
end
a = unique(s).'; % Alphabet
for k=1:length(a)
c(k) = sum(s==a(k));
end
p = c/sum(c);
ps=sort(p);
tres=min(ps(end-10:end));
sel = p>tres;
dec2hex(a(sel))
p(sel).'
%%
----
Siehe auch {{backlinks}}