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