2016-04-16 10 views
0

Ich habe einen Huffman-Code in Binär, der von Matlab huffmanenco Funktion gemacht wird. Ich speichere diesen Code in einer Datei und erhalte ihn dann, um meine Hauptdaten erneut zu erstellen. Ich habe dict Umwandlung perfekt gemacht und auch Huffman Code, den ich rufe, wie ich es in der Datei vor geschrieben, aber wenn ich huffmandeco verwenden, um meine Daten erhalte ich diese Fehlermeldung:Huffman Codierung in Matlab (Binärwerte)

Fehler mit huffmandeco (Linie 67)
Das codierte Signal enthält einen Code, der nicht im Wörterbuch vorhanden ist.
Fehler in extractNPSM_Huffman (Linie 75)
msg = huffmandeco (msg, Zellen) `

mein Code zum Abrufen von Daten (ich glaube, es ein Problem auf dem Weg ist, etwas zu verdoppeln zu konvertieren):

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

Ich muss zugeben, ich bin verloren, was Sie hier tun. Ich nehme an, "Bits" enthält Ihre codierten Daten und "Zellen" ist Ihr "Diktat"? Dann sieht es so aus, als würden Sie die Bits jedes Bytes dieser Teilzeichenkette spiegeln. Warum das? Bitte poste ein [mcve], das ein 'dict' erzeugt, codiert die Eingabe und erzeugt deinen Fehler, wenn du den obigen Code verwendest. – beaker

Antwort

0

Es mussten keine Bits in Zahlen konvertiert werden. huffmandeco muss Bit-Stream als Eingabe param:

msg=huffmandeco(huff,cells); 
Verwandte Themen