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

Mã hóa kênh truyền

267

Ví dụ 17-5. Sử dụng bảng syndrome để kiểm tra và sửa lỗi khi giải mã thông điệp mã hoá
bằng mã Hamming [7,4].
Phương pháp sửa lỗi như sau: giả sử vector biểu diễn thông điệp nhận được là r. Ta tính
vector syndrome tương ứng bằng cách nhân vector r với chuyển vị của ma trận kiểm tra: s =
r.

T

H . Đổi vector syndrome thành số thập phân. Nó sẽ cho biết vị trí của vector sai tương ứng

trong bảng syndrome. Cuối cùng, lấy vector sai cộng với vector thu, đó chính là thông điệp đã
được sửa lỗi.

% Sử dụng mã Hamming [7,4].

m = 3; n = 2^m-1; k = n-m;

parmat = hammgen(m); % Tạo ma trận kiểm tra.

trt = syndtable(parmat); % Tạo bảng giải mã syndrome.

recd = [1 0 0 1 1 1 1] % Giả sử đây là vector nhận được.

syndrome = rem(recd * parmat',2); % Tính syndrome

syndrome_de = bi2de(syndrome,'left-msb'); % Đổi sang số thập phân.

disp(['Syndrome = ',num2str(syndrome_de),...

' (decimal), ',num2str(syndrome),' (binary)'])

corrvect = trt(1+syndrome_de,:) % Vector sai

% Từ mã đúng:

correctedcode = rem(corrvect+recd,2)

Kết quả:

recd =

1 0 0 1 1 1 1

Syndrome = 3 (decimal), 0 1 1 (binary)

corrvect =

0 0 0 0 1 0 0

correctedcode =

1 0 0 1 0 1 1

ƒ Mã hoá và giải mã với các loại mã khối tuyến tính:
Hàm encode thực hiện mã hoá các loại mã khối tuyến tính, mã vòng và mã Hamming. Với mã
khối tuyến tính, cần cung cấp ma trận sinh genmat; với mã Hamming có thể (không nhất
thiết) cung cấp đa thức nguyên p_poly tương ứng; với mã vòng, cần cung cấp đa thức sinh
cyc_poly cho bộ mã.

>> [code, added] = encode(msg, n, k, ‘linear’, genmat)

>> [code, added] = encode(msg, n, k, ‘linear/decimal’, genmat)

>> [code, added] = encode(msg, n, k, ‘hamming’, p_poly)

>> [code, added] = encode(msg, n, k, ‘hamming/decimal’, p_poly)

>> [code, added] = encode(msg, n, k, ‘cyclic’, cyc_poly)

>> [code, added] = encode(msg, n, k, ‘cyclic/decimal’, cyc_poly)

added là số cột phải thêm vào ma trận msg để msg có kích thước vừa đủ để tiến hành mã
hoá.

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.