CodeForge.comFree Open Source Codes Forge and Sharing |
function CODE = huffman(p)
%HUFFMAN Builds a variable-length Huffman code for a symbol source.
% CODE = HUFFMAN(P) returns a Huffman code as binary strings in
% cell array CODE for input symbol probability vector P. Each word
% in CODE corresponds to a symbol whose probability is at the
% corresponding index of P.
%
% Based on huffman5 by Sean Danaher, University of Northumbria,
% Newcastle UK. Available at the MATLAB Central File Exchange:
% Category General DSP in Signal Processing and Communications.
% Copyright 2002-2004 R. C. Gonzalez, R. E. Woods, & S. L. Eddins
% Digital Image Processing Using MATLAB, Prentice-Hall, 2004
% $Revision: 1.5 $ $Date: 2003/10/26 18:37:16 $
% Check the input arguments for reasonableness.
error(nargchk(1, 1, nargin));
if (ndims(p) ~= 2) | (min(size(p)) > 1) | ~isreal(p) | ~isnumeric(p)
error('P must be a real numeric vector.');
end
% Global variable surviving all recursions of function 'makecode'
global CODE
CODE = cell(length(p), 1); % Init the global cell array
if length(p) > 1 % When more than one symbol ...
p = p / sum(p); % Normalize the input probabilities
s = reduce(p); % Do Huffman source symbol reductions
makecode(s, []); % Recursively generate the code
else
CODE = {'1'}; % Else, trivial one symbol case!
end;
%------
...
...
... to be continued.
This is a preview. To get the complete source file,
please click here to download the whole source code package.
| Name | Size | Date |
| 5.00 kB | 16-12-04 13:36 | |
| 1.54 kB | 16-12-04 13:36 | |
| 651.00 B | 16-12-04 13:36 | |
| 2.96 kB | 16-12-04 13:36 | |
| 2.99 kB | 16-12-04 13:36 | |
| 2.42 kB | 16-12-04 13:36 | |
| 2.17 kB | 16-12-04 13:36 | |
| 5.64 kB | 16-12-04 13:36 | |
| 3.87 kB | 16-12-04 13:36 | |
| 592.00 B | 16-12-04 13:36 | |
| 2.30 kB | 16-12-04 13:36 | |
| 2.37 kB | 16-12-04 13:36 | |
| 1.15 kB | 16-12-04 13:36 | |
| 1.02 kB | 16-12-04 13:36 | |
| 5.98 kB | 16-12-04 13:36 | |
| 799.00 B | 16-12-04 13:36 | |
| 977.00 B | 16-12-04 13:36 | |
| 687.00 B | 16-12-04 13:36 | |
| 882.00 B | 16-12-04 13:36 | |
| 736.00 B | 16-12-04 13:36 | |
| 6.47 kB | 16-12-04 13:36 | |
| 874.00 B | 16-12-04 13:36 | |
| 1.00 kB | 16-12-04 13:36 | |
| 8.55 kB | 16-12-04 13:36 | |
| 1.42 kB | 16-12-04 13:36 | |
| 992.00 B | 16-12-04 13:36 | |
| 447.00 B | 16-12-04 13:36 | |
| 2.04 kB | 16-12-04 13:36 | |
| 920.00 B | 16-12-04 13:36 | |
| 2.64 kB | 16-12-04 13:36 | |
| 2.82 kB | 16-12-04 13:36 | |
| 2.65 kB | 16-12-04 13:36 | |
| 1.02 kB | 16-12-04 13:36 | |
| 1.23 kB | 16-12-04 13:36 | |
| 1.94 kB | 16-12-04 13:36 | |
| 2.46 kB | 16-12-04 13:36 | |
| 2.82 kB | 16-12-04 13:36 | |
| 45.71 kB | 16-12-04 13:36 | |
| 26.30 kB | 16-12-04 13:36 | |
| 46.55 kB | 16-12-04 13:36 | |
| 60.11 kB | 13-04-09 20:38 | |
| 1.38 kB | 16-12-04 13:36 | |
| 1.12 kB | 16-12-04 13:36 | |
| 2.90 kB | 16-12-04 13:36 | |
| 3.97 kB | 16-12-04 13:36 | |
| 4.20 kB | 16-12-04 13:36 | |
| 2.12 kB | 16-12-04 13:36 | |
| 791.00 B | 16-12-04 13:36 | |
| 1.30 kB | 16-12-04 13:36 | |
| 1.83 kB | 16-12-04 13:36 | |
| 1.20 kB | 16-12-04 13:36 | |
| 3.25 kB | 16-12-04 13:36 | |
| 3.24 kB | 16-12-04 13:36 | |
| 2.41 kB | 16-12-04 13:36 | |
| 1.90 kB | 16-12-04 13:36 | |
| 1.42 kB | 16-12-04 13:36 | |
| 1.44 kB | 16-12-04 13:36 | |
| 1.97 kB | 16-12-04 13:36 | |
| 1.75 kB | 16-12-04 13:36 | |
| 2.75 kB | 16-12-04 13:36 | |
| 1.28 kB | 16-12-04 13:36 | |
| 7.15 kB | 16-12-04 13:36 | |
| 1.29 kB | 16-12-04 13:36 | |
| 950.00 B | 16-12-04 13:36 | |
| 6.14 kB | 16-12-04 13:36 | |
| 2.88 kB | 16-12-04 13:36 | |
| 1.33 kB | 16-12-04 13:36 | |
| 1.15 kB | 16-12-04 13:36 | |
| 5.30 kB | 16-12-04 13:36 | |
| 1.66 kB | 16-12-04 13:36 | |
| 1.46 kB | 16-12-04 13:36 | |
| 1.98 kB | 16-12-04 13:36 | |
| 4.45 kB | 16-12-04 13:36 | |
| 2.57 kB | 16-12-04 13:36 | |
| 3.78 kB | 16-12-04 13:36 | |
| 4.13 kB | 16-12-04 13:36 | |
| 1.72 kB | 16-12-04 13:36 | |
| 1.55 kB | 16-12-04 13:36 | |
| 1.78 kB | 16-12-04 13:36 | |
| 713.00 B | 16-12-04 13:36 | |
| 1.04 kB | 16-12-04 13:36 | |
| 1.16 kB | 16-12-04 13:36 | |
| 7.00 kB | 16-12-04 13:36 | |
| 967.00 B | 16-12-04 13:36 | |
| 24.00 kB | 16-12-04 13:36 | |
| 18.97 kB | 16-12-04 13:36 | |
| 12.00 kB | 16-12-04 13:36 | |
| 8.68 kB | 16-12-04 13:36 | |
| 2.71 kB | 16-12-04 13:36 | |
| 24.44 kB | 16-12-04 13:36 | |
| 8.54 kB | 16-12-04 13:36 | |
| 1.66 kB | 16-12-04 13:36 | |
| 4.67 kB | 16-12-04 13:36 | |
| 4.52 kB | 16-12-04 13:36 | |
| 940.00 B | 16-12-04 13:36 | |
| 1.06 kB | 16-12-04 13:36 | |
| 4.14 kB | 16-12-04 13:36 | |
| 4.77 kB | 16-12-04 13:36 | |
| 1.04 kB | 16-12-04 13:36 | |
| 3.45 kB | 16-12-04 13:36 | |
| 696.00 B | 16-12-04 13:36 | |
| 3.59 kB | 16-12-04 13:36 | |
| 85.71 kB | 13-04-09 20:39 | |
| 0.00 B | 02-07-09 16:26 | |
| 0.00 B | 02-07-09 16:26 | |
| 0.00 B | 02-07-09 16:26 |