MATLAB ỨNG DỤNG TRONG VIỄN THÔNG - Trang 245

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

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

.

Liên Kết Chia Sẽ

** Đây là liên kết chia sẻ bới cộng đồng người dùng, chúng tôi không chịu trách nhiệm gì về nội dung của các thông tin này. Nếu có liên kết nào không phù hợp xin hãy báo cho admin.