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.
The example below encodes and then decodes a vector of random data that has a prescribed probability distribution.
symbols = [1:6]; % Distinct symbols that data source can produce p = [.5 .125 .125 .125 .0625 .0625]; % Probability distribution [dict,avglen] = huffmandict(symbols,p); % Create dictionary. actualsig = randsrc(1,100,[symbols; p]); % Create data using p. comp = huffmanenco(actualsig,dict); % Encode the data. dsig = huffmandeco(comp,dict); % Decode the Huffman code. isequal(actualsig,dsig) % Check whether the decoding is correct.
The output below indicates that the decoder successfully recovered
the data in
ans = 1
 Sayood, Khalid, Introduction to Data Compression, San Francisco, Morgan Kaufmann, 2000.