Giải: Với giải thuật Lloyds, chúng ta sử dụng hàm lloyds() với chương trình Matlab như
sau.
% Thời gian của tín hiệu, chọn 1 chu kỳ với một bước mẫu là 0.1
t = [0:.1:2*pi];
% Tạo tín hiệu cos
sig = sin(t);
% Chia vùng
partition = [-1:.2:1]; % Length 11, to represent 12 intervals
% Từ mã
codebook = [-1.2:.2:1]; % Length 12, one entry for each interval
% Lượng tử
[index,quants,distor] = quantiz(sig,partition,codebook); % Quantize.
%
% Vẽ tín hiệu trước và sau khi lượng tử
plot(t,sig,'x',t,quants,'.','linewidth',2)
% Tối ưu dùng Lloyds
[partition,codebook] = lloyds(sig, codebook)
[index,quants,distor] = quantiz(sig,partition,codebook); % Quantize.
% Vẽ trên cùng đồ thị
hold on
% Vẽ tín hiệu trước và sau khi lượng tử
plot(t,quants,':','linewidth',2)
% Chú thích cho hình
legend('Tín hiệu gốc','Tín hiệu lượng tử','Tín hiệu lượng tử dùng Lloyds');
% Điều chỉnh vùng vẽ theo trục x và trục y của hình
axis([-.2 max(t) -1.2 1.2])
set(gcf,'color','white');
xlabel('t');
Đồ thị so sánh hiệu quả của phương pháp lượng tử Lloyds.
Để truyền thông tin của tín hiệu ở trên, chúng ta cần truyền 63 mẫu với mỗi mẫu dùng
4 bit do có 12 mức. Do đó, tổng số bit chúng ta cần dùng là 252 bit. Để giảm tổng số bit cần
truyền, thay vì truyền đầy đủ thông tin của từng mẫu, chúng ta chỉ truyền độ lệch giữa mẫu
hiện tại và mẫu trước đó. Xem thêm Ví dụ 4.44 về mã DPCM.
Không có nhận xét nào:
Đăng nhận xét