У меня, кажется, проблема с передачей строки и словаря через функцию huffmanenco
. Я пробовал почти все, но я все время получаю ошибку, что словарь Хаффмана не имеет всех кодов ввода. Но я уверен, что это так.Словарь Хаффмана не имеет кодов для всех входных сигналов
%% HUFFMAN TEST
clear all; close all; clc;
sig = ['a'; 'b'; 'c'; 'd'; 'e'; 'f'; 'g'; 'h'; 'i'; 'j';...
'k'; 'l'; 'm'; 'n'; 'o'; 'p'; 'q'; 'r'; 's'; 't';...
'u'; 'v'; 'w'; 'x'; 'y'; 'z'; ':'; ' '; ','; '.'];
% Get probability
char_count = zeros(30,1);
for i = 1:30
for c = sig(i)
char_count(i,1) = length(find(sig == c));
end
end
sym_prob = char_count/sum(char_count);
% Huffman Dictionary
% symbols = cellstr(symbols); % Still doesn't work in huffmandict, so try manually typing out again with curly braces
sig = {'a'; 'b'; 'c'; 'd'; 'e'; 'f'; 'g'; 'h'; 'i'; 'j';...
'k'; 'l'; 'm'; 'n'; 'o'; 'p'; 'q'; 'r'; 's'; 't';...
'u'; 'v'; 'w'; 'x'; 'y'; 'z'; ':'; ' '; ','; '.'};
[dict, aveLength] = huffmandict(sig, sym_prob);
% Process signal
str = 'A technique is developed to construct a representation of planar objects undergoing a general affine transformation. The representation can be used to describe planar or nearly planar objects in a three-dimensional space, observed by a camera under arbitrary orientations.';
str_int = bin2dec(dec2bin(str));
sig = cell(size(str));
for i = 1:length(str)
sig{i} = char(str_int(i));
end
% Encode & Decode
sig_enco = huffmanenco(sig, dict);
dsig = huffmandeco(sig_enco, dict);