【发布时间】:2016-04-16 05:47:03
【问题描述】:
我有一个由 Matlab huffmanenco 函数制作的二进制霍夫曼代码。我将此代码存储在一个文件中,然后检索它以再次创建我的主要数据。我已经完成dict 的完美转换,并且我确实检索了我之前在文件中编写的霍夫曼代码,但是当我使用huffmandeco 获取我的数据时,我收到了这个错误:
使用 huffmandeco 时出错(第 67 行)
编码信号包含字典中不存在的代码。
extractNPSM_Huffman 中的错误(第 75 行)
味精=huffmandeco(味精,细胞)`
我检索数据的代码(我认为将位转换为双精度的方式有问题):
s = bp;
e = s + huffmanLen - 1;
huff = [];
huff = bits(s:e);
for i = s:8:e
k = bits(s:(s+8));
c = 0;
for j = 1:8
c = bitset(c,9-j,k(j));
end
msg = [msg double(c)];
end
msg = huffmandeco(msg, cells)
【问题讨论】:
-
我不得不承认,我不知道你在这里做什么。我假设
bits包含您的编码数据,而cells是您的dict?然后看起来您正在翻转该子字符串的每个字节的位。这是为什么?请发布一个minimal reproducible example,它创建一个dict,对输入进行编码,并在您使用上面的代码时产生错误。
标签: matlab binary double huffman-code