У меня есть код Хаффмана в двоичном формате, который выполнен функцией Matlab huffmanenco
. Я сохраняю этот код в файле, а затем извлекаю его для создания моих основных данных. Я сделал dict
преобразование отлично, а также я получить код Хаффмана, как я написал в файле раньше, но когда я использую 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)
Я должен признать, что я потерял то, что вы здесь делаете. Я предполагаю, что 'bits' содержит ваши закодированные данные, а' cells' - ваш 'dict'? Тогда похоже, что вы переворачиваете бит каждого байта этой подстроки. Почему это? Пожалуйста, напишите [mcve], который создает 'dict', кодирует вход и выдает вашу ошибку, когда вы используете приведенный выше код. – beaker