clc clear symbols = 1:3: p = [.45 .35 .2]: sig = randsrc (100, 1, [symbols:p]): tic dict = huffmandict (symbols,p) ; comp = huffmanenco(sig, dict);toc dsig = huffmandeco(comp, dict) ; if(~ isequal (sig, dsig)) print(' Error!'): else L=sum (cellfun(' length' ,dict(:,2))' . *p); l=length (comp)/100; H=- -sum(p. *log2(p)): eta=H/L; fprintf(' Source Entropy:%1. 2f, nAverage Huffman code length:%1. 2f, nCoding efficiency:%3. 1f. ln' ,.... H, L, eta*100) : end
时间: 2024-04-21 10:29:11 浏览: 149
这段代码是用 MATLAB 实现的一个简单的哈夫曼编码示例。代码中首先定义了一个包含 1、4、7、... 的符号集 `symbols` 和对应的概率分布 `p`,并生成了一个长度为 100 的随机信号 `sig`,用于后续的编码和解码演示。接着,使用 `huffmandict` 函数生成哈夫曼编码字典 `dict`,并用 `huffmanenco` 函数对信号 `sig` 进行哈夫曼编码,得到压缩后的二进制编码 `comp`。使用 `huffmandeco` 函数对 `comp` 进行解码,得到解压后的信号 `dsig`。如果解码后的信号与原始信号不一致,则提示错误。否则,计算哈夫曼编码的熵 `H`、平均编码长度 `L` 和编码效率 `eta`,并输出结果。
阅读全文
相关推荐











