matlab中的霍夫曼编码(二进制值)

Huffman encoding in matlab (binary values)

我有一个二进制的霍夫曼代码,它是由 Matlab huffmanenco 函数生成的。我将此代码存储在一个文件中,然后检索它以再次创建我的主要数据。我已经完成了 dict 的完美转换,而且我确实检索了之前在文件中写入的 Huffman 代码,但是当我使用 huffmandeco 获取我的数据时,我得到了这个错误:

Error using huffmandeco (line 67)
The encoded signal contains a code which is not present in the dictionary.
Error in extractNPSM_Huffman (line 75)
msg=huffmandeco(msg,cells)`

我检索数据的代码(我认为我将位转换为双精度的方式有问题):

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) 

无需将位转换为数字。huffmandeco 需要将位流作为输入参数:

msg=huffmandeco(huff,cells);