Mã hóa nguồn
214
và xác suất xuất hiện của từng ký hiệu trong tập ký hiệu này (cho bởi vector
prob
). Ngoài ra
còn có thể cung cấp thêm hai thông số nhập khác:
o Nếu dùng các từ mã N-ary thay vì mã nhị phân thì ta phải nhập thêm giá trị N. Lưu ý là N
là một số nguyên có giá trị từ 2 đến 10 và không được vượt quá số ký hiệu của tập nguồn.
o Một cách mặc định, MATLAB sẽ dùng giải thuật variance lớn nhất. Nếu chọn giải thuật
variance cực tiểu, ta phải cung cấp thêm thông số var với giá trị là ‘min’.
Sau đây là một ví dụ đơn giản để minh hoạ cách sử dụng hàm huffmandict:
symbols = [1:5] % Tập ký hiệu
prob = [.3 .3 .2 .1 .1] % Xác suất xuất hiện tương ứng
[dict,avglen] = huffmandict(symbols,prob);
% Hiển thị bảng mã.
temp = dict;
for i = 1:length(temp)
temp{i,2} = num2str(temp{i,2});
end
avglen
temp
Kết quả hiển thị như sau:
avglen =
2.2000
temp =
[1] '0 1'
[2] '0 0'
[3] '1 0'
[4] '1 1 1'
[5] '1 1 0'
Để thực hiện mã hoá và giải mã theo phương pháp Huffman, ta có thể sử dụng các hàm
huffmanenco
và huffmandeco:
>> sig_encode = huffmanenco(sig,dict)
Hàm này thực hiện mã hoá Huffman cho chuỗi dữ liệu sig với bộ mã Huffman tương ứng là
dict. Bộ mã này được tạo từ hàm huffmandict.
>> sig = huffmanenco(comp,dict)
Hàm này thực hiện quá trình giải mã với comp là dữ liệu đã được mã hoá.
Ví dụ 14-7. Thực hiện mã hoá và giải mã theo phương pháp Huffman cho một chuỗi dữ
liệu cho trước.
Trong ví dụ này, giả sử ta đã có một chuỗi dữ liệu cần mã hoá. Ta sẽ thực hiện đếm số ký hiệu
trong tập nguồn và xác suất xuất hiện tương ứng. Từ đó chọn bộ mã Huffman bằng cách dùng
hàm huffmandict và thực hiện mã hoá và giải mã dùng các hàm huffmanenco,
huffmandeco
.