dsig = huffmandeco(comp,dict)
dsig = huffmandeco(comp,dict) decodes
the numeric Huffman code vector
comp using the
dict. The argument
an N-by-2 cell array, where N is the number of distinct possible symbols
in the original signal that was encoded as
The first column of
dict represents the distinct
symbols and the second column represents the corresponding codewords.
Each codeword is represented as a numeric row vector, and no codeword
dict is allowed to be the prefix of any other
dict. You can generate
huffmandict function and
huffmanenco function. If
all signal values in
dict are numeric,
a vector; if any signal value in
dict is alphabetical,
a one-dimensional cell array.
Create unique symbols, and assign probabilities of occurrence to them.
symbols = 1:6; p = [.5 .125 .125 .125 .0625 .0625];
Create a Huffman dictionary based on the symbols and their probabilities.
dict = huffmandict(symbols,p);
Generate a vector of random symbols.
sig = randsrc(100,1,[symbols; p]);
Encode the random symbols.
comp = huffmanenco(sig,dict);
Decode the data. Verify that the decoded data matches the original data.
dsig = huffmandeco(comp,dict); isequal(sig,dsig)
ans = logical 1
Convert the original signal to binary, and determine its length.
binarySig = de2bi(sig); seqLen = numel(binarySig)
seqLen = 300
Convert the Huffman encoded signal and determine its length.
binaryComp = de2bi(comp); encodedLen = numel(binaryComp)
encodedLen = 224
The Huffman encoded data required 224 bits, which is a 25% savings over the uncoded data.
 Sayood, Khalid, Introduction to Data Compression, San Francisco, Morgan Kaufmann, 2000.