主要内容

huffmanenco

哈夫曼编码的符号编码序列

描述

例子

代码= huffmanenco (团体,dict)编码输入信号团体使用描述的霍夫曼编码输入代码字典dict团体可以有一个向量的形式,细胞数组,或字母数字单元阵列。如果团体是一个单元阵列,它必须是一个行或列。dict是一个n除以2单元阵列,在哪里N是不同的数量可能的符号编码。第一列的dict代表了不同的符号和第二列表示相应的码字。每个码字表示为一个行向量,并没有码字dict可以是任何其他的前缀码字dict。您可以生成dict使用huffmandict函数。

例子

全部折叠

创造独特的符号,和发生概率的分配给他们。确定所需的最小位数的二进制表示的符号。

符号= 1:6;p = [。5 .125 .125 .125 .0625 .0625];个基点=装天花板(log2 (max(符号)));%每个符号位

创建一个霍夫曼词典基于符号及其概率。

dict = huffmandict(符号、p);

生成一个随机向量符号。

inputSig = randsrc(100 1[符号;p]);

对随机编码符号。

代码= huffmanenco (inputSig、dict);

解码数据。验证解码符号匹配原始的符号。

sig = huffmandeco(代码、dict);isequal (inputSig团体)
ans =逻辑1

将原始信号转换成二进制,并确定长度的二进制符号。

binarySig = int2bit (inputSig bps);seqLen =元素个数(binarySig)
seqLen = 300

Huffman-encoded符号转换为二进制,并确定的长度编码的二进制符号。

binaryComp = int2bit(代码,bps);encodedLen =元素个数(binaryComp)
encodedLen = 672

定义单元阵列形式的字母数字符号。

inputSig = {“a2”44岁的“a3”现年55岁的“a1”}
inputSig =1×5单元阵列{“a2”} {[44]} {a3的}{[55]}{“a1”}

定义一个霍夫曼字典。字母必须是一个数字编码信号。

dict = {“a1”,0;“a2”(1,0);“a3”(1 1 0);44岁的(1,1,1,0);55岁,(1,1,1,1)}
dict =5×2单元阵列{“a1”} {[0]} {a2的}{[1 0]}{a3的}{[1 1 0]}{[44]}{[1 1 1 0]}{[55]}{[1 1 1 1]}

编码的字母数字符号。

enco = huffmanenco (inputSig、dict);

解码数据。验证解码符号匹配原始的符号。

sig = huffmandeco (enco dict)
sig =1×5单元阵列{“a2”} {[44]} {a3的}{[55]}{“a1”}
isequal (inputSig团体)
ans =逻辑1

输入参数

全部折叠

输入信号的压缩,指定为一个向量,细胞数组,或一个字母数字单元阵列。团体可以有一个向量的形式,细胞数组,或字母数字单元阵列。如果团体是一个单元阵列,它必须是1 -年代年代1单元阵列,年代是符号的数量。

数据类型:|细胞

霍夫曼编码字典,指定为一个N2单元阵列。N是不同的数量可能的符号编码的功能。dict的第一列代表了不同的符号和第二列表示相应的码字。每个码字都被表示为一个行向量,没有码字dict类型可以是任何其他的前缀码字在字典你可以生成dict使用huffmandict函数。

数据类型:|细胞

输出参数

全部折叠

编码信号为输入霍夫曼编码字典dict,作为一个向量返回。

引用

[1]Sayood,哈立德。介绍数据压缩。第二版。旧金山:摩根Kaufmann出版社,2000。

版本历史

之前介绍过的R2006a

另请参阅

功能