2016-04-16 31 views
0

我有一個哈夫曼代碼在二進制這是由Matlab huffmanenco功能。我將這些代碼存儲在一個文件中,然後檢索它以再次創建我的主數據。我已經做了dict完美轉換,正如我之前在文件中寫的也是我做檢索Huffman編碼,但是當我使用huffmandeco讓我的數據我得到這個錯誤:哈夫曼編碼在matlab(二進制值)

使用錯誤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) 
+0

我不得不承認,我迷失在你在這裏做什麼。我假設'bits'包含你的編碼數據,'cells'是你的'dict'?然後,它看起來像翻轉該子串的每個字節的位。這是爲什麼?請發佈創建「dict」的[mcve],對輸入進行編碼,並在使用上面的代碼時產生錯誤。 – beaker

回答

0

沒有必要將位轉換爲數字。 huffmandeco需要比特流作爲輸入參數:

msg=huffmandeco(huff,cells);