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

Mã hóa nguồn

212

>> out = compand(in, param, v, method)

in là tín hiệu vào còn

out

là tín hiệu ra

V là biên độ đỉnh của tín hiệu vào

param

là thông số của luật nén giãn (hằng số A hoặc

μ)

method

có thể nhận một trong các giá trị sau:

method

Chức năng

'mu/compressor'

Nén theo luật

μ

'mu/expander'

Giãn theo luật

μ

'A/compressor'

Nén theo luật A

μ

'A/expander'

Giãn theo luật A

Ví dụ sau đây minh hoạ quá trình nén giãn theo luật

μ.

Ví dụ 14-6. Thực hiện quá trình lượng tử hoá tín hiệu hàm mũ theo hai phương pháp:
lượng tử hoá đều và lượng tử hoá có nén giãn theo luật

μ. So sánh sai số bình phương trung

bình của hai phương pháp.
Với phương pháp đầu tiên ta sử dụng trực tiếp hàm quantiz đối với tín hiệu lũy thừa. Tín hiệu
được phân hoạch thành các khoảng đều nhau có chiều dài bằng 1.

Với phương pháp thứ hai, đầu tiên ta sử dụng hàm compand để nén tín hiệu theo luật

μ, sau

đó dùng hàm quantiz để lượng tử hoá tín hiệu thu được và cuối cùng lại dùng hàm compand
để phục hồi tín hiệu ban đầu.
Kết quả xuất ra gồm sai số bình phương trung bình của hai phương pháp và đồ thị biểu diễn
tín hiệu gốc và tín hiệu đã được nén. Có thể nhận thấy rằng sai số lượng tử ở phương pháp thứ
hai nhỏ hơn so với phương pháp thứ nhất.

Mu = 255; % Thông số cho bộ nén giãn theo luật μ

sig = -4:.1:4;

sig = exp(sig); % Tín hiệu hàm mũ cần lượng tử

V = max(sig);

% 1. Lượng tử hoá đều (không nén giãn).

[index,quants,distor] = quantiz(sig,0:floor(V),0:ceil(V));

% 2. Sử dụng cùng phân hoạch và bộ mã lượng tử nhưng có nén trước khi lượng

tử

% hoá và giải nén sau đó

compsig = compand(sig,Mu,V,'mu/compressor');

[index,quants] = quantiz(compsig,0:floor(V),0:ceil(V));

newsig = compand(quants,Mu,max(quants),'mu/expander');

distor2 = sum((newsig-sig).^2)/length(sig);

[distor, distor2] % Hiển thị sai số lượng tử của hai phương pháp.

plot(sig); % Vẽ tín hiệu gốc .

hold on;

plot(compsig,'r--'); % Vẽ tín hiệu đã nén giãn.

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.