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

Mã hóa kênh truyền

260

nw = 4; % Tổng số từ của thông điệp

msgw = gf(randint(nw,k,2^m),m); % Tạo thông điệp ngẫu nhiên

genpoly = rsgenpoly(n,k); % Tạo đa thức sinh

c = rsenc(msgw,n,k,genpoly); % Mã hoá dữ liệu.

noise = (1+randint(nw,n,2^m-1)).*randerr(nw,n,t); % t lỗi trên mỗi hàng

cnoisy = c + noise; % Công nhiễu vào mã.

[dc,nerrs,corrcode] = rsdec(cnoisy,n,k,genpoly); % Giải mã.

% Kiểm tra xem bộ giải mã có hoạt động tốt không.

isequal(dc,msgw) & isequal(corrcode,c)

nerrs % Số lỗi đã được sửa.

msgw % Thông điệp ban đầu

cnoisy % Thông điệp mã hoá đã bị lỗi

corrcode % Thông điệp mã hoá đúng

dc % Thông điệp giải mã

Kết quả xuất hiện trên cửa sổ lệnh của MATLAB như sau:

ans =

1

nerrs =

2

2

2

2

msgw = GF(2^3) array. Primitive polynomial = D^3+D+1 (11 decimal)

Array elements =

7 7 6

1 6 3

4 3 4

3 0 6

cnoisy = GF(2^3) array. Primitive polynomial = D^3+D+1 (11 decimal)

Array elements =

0 7 6 4 4 5 4

1 1 0 6 4 3 1

4 3 4 5 2 6 2

3 0 6 5 5 5 3

corrcode = GF(2^3) array. Primitive polynomial = D^3+D+1 (11 decimal)

Array elements =

7 7 6 4 6 5 4

1 6 3 6 4 3 1

4 3 4 5 3 2 2

3 0 6 0 5 6 3