www.pudn.com > huffman.rar > huffcodes2bin.m


function [Words,Simbols] = huffcodes2bin(huffcodes)
%HUFFCODES2BIN   Convert huffcodes to binary representation
%   [W,S] = HUFFCODES2BIN(HC) returns the Huffman representation returned
%      by the function NORM2HUFF to the corresponding binary string of '0' and '1'
%   W is a cell array of binary strings,
%   S is a double array containing the corresponding simbols
%
%   REMARK: the first bit of each binary strings B is B(end)
%
%   See also HUFF2NORM, NORM2HUFF


%   $Author: Giuseppe Ridino' $
%   $Revision: 1.0 $  $Date: 25-May-2004 14:26:00 $


% get number of simbols
Nsimbols = nnz(huffcodes);

% initialize output
Words = cell(Nsimbols,1);
% Simbols = cell(Nsimbols,1);

% gte code words
CodeWords = find(not(huffcodes==0));

% convert words
for index=1:Nsimbols,
	Words{index} = Double2BinStr(CodeWords(index));
end

% return simbols
Simbols = full(huffcodes(CodeWords));


% #############################################################
function BinString = Double2BinStr(Word)
BinString = dec2bin(Word);
if not(BinString(1)=='1'),
	error('wrong codeword');        % most significat bit must always be "1"
else,
	BinString = BinString(2:end);   % remove stop bit
end