reduce.m
上传用户:cxsjwj
上传日期:2022-08-09
资源大小:34k
文件大小:1k
源码类别:

matlab例程

开发平台:

Matlab

  1. function s= reduce(p);
  2. % Create a Huffman source reduction tree in a MATLAB cell structure
  3. % by performing source symbol reductions until there are only two
  4. % reduced symbols remaining
  5. s = cell(length(p), 1);
  6. % Generate a starting tree with symbol nodes 1, 2, 3, ... to 
  7. % reference the symbol probabilities.
  8. for i = 1:length(p)
  9.    s{i} = i; 
  10. end
  11. while numel(s) > 2
  12.    [p, i] = sort(p);    % Sort the symbol probabilities
  13.    p(2) = p(1) + p(2);  % Merge the 2 lowest probabilities
  14.    p(1) = [];           % and prune the lowest one
  15.    
  16.    s = s(i);            % Reorder tree for new probabilities
  17.    s{2} = {s{1}, s{2}}; % and merge & prune its nodes
  18.    s(1) = [];           % to match the probabilitiesb
  19. end