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

Mã hóa nguồn

208

14.3. TOÁI ÖU HOÙA CAÙC THOÂNG SOÁ CUÛA QUAÙ TRÌNH LÖÔÏNG TÖÛ

Quá trình lượng tử hoá làm phát sinh sai số giữa tín hiệu lượng tử hoá với tín hiệu thực. Sai số
này gọi là nhiễu lượng tử. Ta có thể đánh giá nhiễu lượng tử bằng hàm quantiz đã đề cập ở
phần trước. Vấn đề đặt ra ở đây là làm cách nào để tối thiểu hoá loại nhiễu này. Nhiễu lượng
tử phụ thuộc vào cách phân hoạch và tập các giá trị lượng tử được chọn. Nếu số khoảng chia
càng nhiều thì nhiễu lượng tử càng nhỏ. Tuy nhiên, giải pháp này không phải lúc nào cũng
thực hiện được do những hạn chế khách quan của hệ thống. Một phương pháp đơn giản hơn
để tối thiểu hoá nhiễu lượng tử ở mức chấp nhận được mà không cần phải phân hoạch tín hiệu
thành quá nhiều khoảng, đó là phương pháp tối ưu hoá theo giải thuật Lloyd. Giải thuật này
dựa trên nguyên tắc huấn luyện, nghĩa là các thông số của quá trình lượng tử sẽ được chọn và
cập nhật một cách thích nghi với từng loại tín hiệu đưa vào lượng tử.
Quá trình tối ưu hoá nói trên sẽ được thực hiện bằng hàm lloyds của MATLAB
Communications Toolbox.

>> [partition, codebook] = lloyds(training_set, ini_codebook, tol)

hoặc:

>> [partition, codebook, distortion, rel_distortion] = lloyds(...)

training_set

là tập dữ liệu dùng để huấn luyện. Đó là một tín hiệu tiêu biểu của nguồn tin

tức mà ta cần lượng tử hoá;

ini_codebook

là bộ mã khởi đầu do ta chọn; tol là sai số cho

phép của quá trình huấn luyện (giá trị mặc định nếu không nhập thông số này là

7

10

.

Các kết quả xuất ra gồm phân hoạch và bộ mã đã tối ưu hoá (

partition

codebook

),

nhiễu lượng tử tuyệt đối (

distortion

) và tương đối (

rel-distortion

) của quá trình

lượng tử.
Ví dụ sau đây minh hoạ sự tối ưu hoá các thông số của quá trình lượng tử bằng cách dùng
hàm lloyds trong MATLAB. Nhiễu lượng tử phát sinh từ hai quá trình lượng tử hoá chưa tối
ưu và đã tối ưu sẽ được so sánh với nhau.
Ví dụ 14-3. Thực hiện lại quá trình lượng tử hoá tín hiệu x(t) = sint với các thông số lượng
tử đã tối ưu hoá. So sánh nhiễu lượng tử trước và sau khi tối ưu hoá.

% Bắt đầu với các thông số lượng tử như ở ví dụ 14-2

t = [0:.1:2*pi];

sig = sin(t);

partition = [-1:.2:1];

codebook = [-1.2:.2:1];

% Thực hiện tối ưu hoá với bộ mã khởi đầu là codebook.

[partition2,codebook2] = lloyds(sig,codebook);

[index,quants,distor] = quantiz(sig,partition,codebook);

[index2,quant2,distor2] = quantiz(sig,partition2,codebook2);

% So sánh nhiễu lượng tử trước và sau khi tối ưu hoá

[distor, distor2]

Kết quả xuất ra cửa sổ lệnh của MATLAB:

ans =

0.0148 0.0024

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.