2016-04-16 3 views
0

У меня есть код Хаффмана в двоичном формате, который выполнен функцией 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) 
+0

Я должен признать, что я потерял то, что вы здесь делаете. Я предполагаю, что 'bits' содержит ваши закодированные данные, а' cells' - ваш 'dict'? Тогда похоже, что вы переворачиваете бит каждого байта этой подстроки. Почему это? Пожалуйста, напишите [mcve], который создает 'dict', кодирует вход и выдает вашу ошибку, когда вы используете приведенный выше код. – beaker

ответ

0

Не нужно было преобразовывать биты в число. huffmandeco необходимо битовому потоку в качестве входного параметра:

msg=huffmandeco(huff,cells); 
Смежные вопросы