我正在使用MATLAB压缩任意向量,该软件提供了用于Huffman编码的工厂方法:huffmandict、huffmanenco和huffmandeco。
huffmandict函数生成一个查找表,将要编码的信号中的每个符号映射到其对应的码字,以便在对信号进行编码和解码时使用。
当您知道输入向量时,生成字典是微不足道的。但是,假设我正在压缩以从Alice发送到Bob - 我不能假设Bob也知道字典 - 因此Alice需要将字典与Huffman代码一起发送!
在MATLAB中是否有一种生成位流表示字典的方法,以便在另一端解码?
我的想法是,如果N是已编码字典的长度,则生成的代码如下:
似乎很奇怪,MATLAB提供了相当强大的编码工厂方法,但是却没有费心让它在数字传输中实际可用,需要进行大量额外的工作。
我理解在理论上,通常会构建哈夫曼树 - 有没有一种方法可以在MATLAB中生成这样的树,然后将这样的树转换回字典?
huffmandict函数生成一个查找表,将要编码的信号中的每个符号映射到其对应的码字,以便在对信号进行编码和解码时使用。
当您知道输入向量时,生成字典是微不足道的。但是,假设我正在压缩以从Alice发送到Bob - 我不能假设Bob也知道字典 - 因此Alice需要将字典与Huffman代码一起发送!
在MATLAB中是否有一种生成位流表示字典的方法,以便在另一端解码?
我的想法是,如果N是已编码字典的长度,则生成的代码如下:
(N encoded as 8 bits)(huffman dict encoded in N bits)(huffman code)
似乎很奇怪,MATLAB提供了相当强大的编码工厂方法,但是却没有费心让它在数字传输中实际可用,需要进行大量额外的工作。
我理解在理论上,通常会构建哈夫曼树 - 有没有一种方法可以在MATLAB中生成这样的树,然后将这样的树转换回字典?
save('dict.mat','dict','-v6'); f = fopen('dict.mat','rb'); data = uint8(fread(f)); fclose(f);
然后将data
传输到接收端。在接收端写回文件并加载:f = fopen('dict.mat','wb'); fwrite(data); load('dict.mat'); fclose(f);
- jodagjsonencode
/jsondecode
怎么样? - nekomatic