2016-04-16 5 views
0

私は、Matlab huffmanencoによって作られたバイナリでハフマン符号を持っています。このコードをファイルに保存してから、メインデータを再度作成するために取得します。私は完全に変換dictを行ってきたとも私は前にそれをファイルに書いたように私は、ハフマンコードを取得しますが、私は私のデータを取得するためにhuffmandecoを使用するとき、私はこのエラーを取得:huffmandecoを使用してmatlabのハフマン符号化(バイナリ値)

エラー(行67)
コード化されたシグナルには、辞書には存在しないコードが含まれています。 extractNPSM_Huffmanで
エラー(行75)
MSG = huffmandeco(MSG、細胞) `

データを取得するために私のコード(私は倍増するビットを変換するために私の方法に問題があると思います):

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);