Mã hóa kênh truyền
276
msg = randint(2*len,1); % Thông điệp nhị phân ngẫu nhiên: 2 bit mỗi ký hiệu
trel = poly2trellis([5 4],[23 35 0;0 5 13]); % Định nghĩa cấu trúc trellis
code = convenc(msg,trel) % Mã hoá thông điệp.
ncode = awgn(code,7,'measured',244); % Cộng nhiễu.
% Giải mã bằng phương pháp lấy ngưỡng cứng
hcode = (1+sign(ncode-0.5))/2; % Mức ngưỡng bằng 0.5
hdecoded = vitdec(hcode,trel,34,'cont','hard'); % Giải mã.
disp('Phuong phap lay nguong cung')
[hnumber,hratio] = biterr(hdecoded(68+1:end),msg(1:end-68))
% Giải mã bằng phương pháp lấy ngưỡng mềm
% Lượng tử hoá trước khi gỉai mã.
qcode = quantiz(ncode,[0.001,.1,.3,.5,.7,.9,.999]);
sdecoded = vitdec(qcode,trel,34,'cont','soft',3); % Giải mã.
disp('Phuong phap lay nguong mem')
[snumber,sratio] = biterr(sdecoded(68+1:end),msg(1:end-68))
Kết quả thực hiện chương trình:
Phuong phap lay nguong cung
hnumber =
168
hratio =
0.0870
Phuong phap lay nguong mem
snumber =
43
sratio =
0.0223
#
Bài tập 17-1.
Tạo một chuỗi dữ liệu ngẫu nhiên chiều dài N = 1000 bit. Mã hoá chuỗi dữ liệu bằng các
phương pháp liệt kê ở dưới. Dùng hàm randerr để tạo lỗi ngẫu nhiên và tác động vào chuỗi
dữ liệu trên. Giải mã chuỗi dữ liệu này và so với dữ liệu gốc. Tính số lỗi và tỷ lệ lỗi.
a. Mã BCH [15,11]
b. Mã vòng [15,11] với đa thức sinh 1 + X + X
4
c. Mã Hamming [15,11]
d. Mã khối tuyến tính [15,11]
e. Mã Reeds-Solomon [15,11]
#
Bài tập 17-2.
Khảo sát mã khối tuyến tính [7,4] với ma trận sinh sau đây: