【问题标题】:Huffman encoding in matlab (binary values)matlab中的霍夫曼编码(二进制值)
【发布时间】: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


【解决方案1】:

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

msg=huffmandeco(huff,cells);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多