Mã hóa nguồn
211
Ví dụ 14-5. Thực hiện lại quá trình mã hoá như ví dụ 14-4 nhưng sử dụng các thông số mã
hoá tối ưu, biết bậc dự đoán bằng 1 và bộ mã khởi đầu [-1:.1:1]
Ta sử dụng hàm dpcmopt để tìm các thông số tối ưu trước khi mã hoá. Lưu ý rằng nhiễu
lượng tử sinh ra trong ví dụ này nhỏ hơn nhiều so với ví dụ trước.
t = [0:pi/50:2*pi];
x = sawtooth(3*t); % Tín hiệu gốc
initcodebook = [-1:.1:1]; % Bộ mã khởi đầu
% Tối ưu hoá các thông số DPCM từ bộ mã khởi đầu và bậc dự đoán bằng 1.
[predictor,codebook,partition] = dpcmopt(x,1,initcodebook);
% Lượng tử hoá tín hiệu x theo phương pháp DPCM.
encodedx = dpcmenco(x,codebook,partition,predictor);
% Phục hồi tín hiệu x từ tín hiệu đã điều chế.
decodedx = dpcmdeco(encodedx,codebook,predictor);
distor = sum((x-decodedx).^2)/length(x) % Sai số bình phương trung bình
Sai số lượng tử ở ví dụ này là:
distor =
0.0063
14.6. NEÙN VAØ GIAÕN TÍN HIEÄU
Trong các ứng dụng xử lý tín hiệu thoại (speech processing), trước khi lượng tử hoá, người ta
thường thực hiện nén (compress) tín hiệu theo hàm logarithm, mục đích là để tín hiệu ở mức
biên độ nhỏ sẽ thay đổi nhiều mức hơn so với ở các giá trị biên độ lớn, do đó sai số lượng tử
tương đối ở các mức biên độ nhỏ và lớn sẽ không chênh lệch nhau nhiều như đối với trường
hợp không nén.
Để khôi phục lại đúng tín hiệu ban đầu thì sau khi giải mã, ta phải đưa qua một bộ giãn tín
hiệu (expander) có đặ tuyến truyền đạt là nghịch đảo của đặc tuyến của bộ nén (compressor).
Sự kết hợp của bộ nén và bộ giãn tín hiệu gọi chung là bộ nén giãn tín hiệu (compander).
Hai luật nén giãn thường được sử dụng trong xử lý tín hiệu thoại là luật
μ dùng ở Bắc Mỹ và
luật A dùng ở châu Âu:
o Luật μ:
y =
[
]
x
sgn
)
1
ln(
)
x
/
x
(
1
ln
y
max
max
μ
+
μ
+
(14.2)
Theo các chuẩn ở Bắc Mỹ, giá trị của
μ là 255.
max
x
và
max
y
lần lượt là các giá trị dương
lớn nhất của x và y.
o Luật A:
(
)
(
)
⎪
⎪
⎩
⎪
⎪
⎨
⎧
≤
<
+
+
≤
<
+
=
1
x
x
A
1
x
sgn
A
ln
1
]
x
/
x
A
ln[
1
y
A
1
x
x
0
x
sgn
A
ln
1
x
/
x
A
y
y
max
max
max
max
max
max
A là hằng số (14.3)
Giá trị chuẩn của A là 87.6.
MATLAB cung cấp hàm compand để thực hiện nén giãn tín hiệu. Hàm này hỗ trợ hai luật
nén giãn A và
μ nói trên.