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

Mã hóa nguồn

206

Lưu ý:

Các bạn có thể nhận được các kết quả khác với hình vẽ trên vì chuỗi bit nhận được từ

hàm randint sẽ thay đổi ngẫu nhiên sau mỗi lần thực thi chương trình

.

14.2. LÖÔÏNG TÖÛ HOÙA TÍN HIEÄU

Lượng tử hoá là quá trình rời rạc hoá tín hiệu về mặt biên độ, cụ thể là thay thế tất cả các giá
trị của tín hiệu nằm trong một khoảng xác định nào đó thành một giá trị duy nhất. Miền giá trị
của tín hiệu được chia thành một số hữu hạn các khoảng chia. Như vậy, độ lớn của tín hiệu
sau khi lượng tử chỉ có thể nhận một trong số hữu hạn các giá trị cho trước.
Tập hợp các khoảng chia gọi là sự phân hoạch của tín hiệu (partition). Tập các giá trị thay thế
cho mỗi khoảng chia gọi là bộ mã (codebook).
MATLAB biểu diễn phân hoạch của tín hiệu bằng một vector mà các phần tử của nó là các
điểm ranh giới giữa hai khoảng chia liên tiếp. Ví dụ, nếu tín hiệu có miền xác định là R, được
phân hoạch thành các khoảng (-

∞, 0], (0,2], (2,4] và (4,+∞) thì có thể biểu diễn sự phân hoạch

này bằng vector:

>> partition = [0,2,4];

Tương ứng với vector phân hoạch tín hiệu là vector biểu diễn bộ mã tín hiệu. Các phần tử của
nó là các giá trị thay thế trong mỗi khoảng chia tương ứng của phân hoạch. Nếu ta thay thế
các giá trị trong khoảng (-

∞, 0] bằng -1, các giá trị trong khoảng (0,2] bằng 1, các giá trị trong

khoảng (2,4] bằng 3 và các giá trị trong khoảng (4, +

∞] bằng 5 thì vector biểu diễn bộ mã sẽ

là:

>> codebook = [-1,1,3,5];

Để thực hiện quá trình lượng tử hoá, MATLAB cung cấp hàm quantiz:

>> [indx, quant, distor] = quantiz(sig, partition, codebook)

trong đó sig là tín hiệu trước khi lượng tử và partition, codebook lần lượt là phân
hoạch và bộ mã lượng tử.
Hàm quantiz trả về:

o tín hiệu sau khi lượng tử hoá quant
o vector

indx

có chiều dài bằng chiều dài tín hiệu, mỗi phần tử của nó là chỉ số của giá trị

tương ứng của tín hiệu trong bộ mã lượng tử. Nói cách khác, vector

indx

cho biết mỗi phần

tử của tín hiệu vào nằm trong khoảng chia nào. Giữa các vector

indx, quant

codebook

có mối liên hệ:

quant = codebook(indx+1);

o nhiễu lượng tử do phép lượng tử hoá này gây ra. Nhiễu lượng tử là sai số bình phương

trung bình giữa tín hiệu gốc và tín hiệu sau khi lượng tử
Ví dụ:

>> parti=[0,2,4];

>> codebook=[-1,1,3,5];

>> samp=[-3,-1,1,1,5,3,5,4,2,1];

>> [index,quantized]=quantiz(samp,parti,codebook);

>> index’

ans =

0 0 1 1 3 2 3 2 1 1

cho biet thu tu muc luong tu

distor

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.