资 源 简 介
函数代码 = huffman(p)
哈夫曼 %生成符号源变量长度的哈夫曼代码。
代码 %= HUFFMAN(P) 返回一个哈夫曼代码作为二进制字符串的单元格
%数组的代码输入的符号概率矢量体育在代码中的每个单词
%对应于其概率是在相应的指数符号
%的体育
%
%检查输入的参数的合理性。
error(nargchk(1,1,nargin)) ;
如果 (ndims(p) ~ = 2) | |(min(size(p)) > 1) | |~isreal(p) | |~isnumeric(p)
错误 ("P 必须是一个实数值向量") ;
结束
%全局变量生存所有递归函数 "makecode" 的
全局代码
CODE=cell(length(p),1) ;%Init 全球太阳能电池阵列
如果 length(p) > 1%时多个符号......
p = p/sum(p) ;%规范化输入的概率
s = reduce(p) ;%做哈夫曼源符号削减
makecode (s,[]) ;%以递归方式生成的代码
其他
代码 = {"1"};%其他、 微不足道的一个符号案例 !
结束
%……………………………………………………………….%
函数 s = reduce(p) ;
%在 MATLAB 的单元格结构中通过创建一个哈夫曼源减少树
减少 %执行源符号减少,直到只有两个
剩余的 %符号。
s = cell(length(p),1) ;
%生成符号节点 1 2、 3,开始树...到引用
%符号的概率。
为我 = 1:length(p)
s {i} = i ;
结束
同时 numel(s) > 2
[p,我] = sort(p);%排序符号概率
p(2) = p(1) + p(2) ;%合并