Professional Documents
Culture Documents
Nguyễn Duy Như Tịnh - 21DT2 - 106210102 - LAB1 TTS
Nguyễn Duy Như Tịnh - 21DT2 - 106210102 - LAB1 TTS
Lớp: 21DT2
Mã sinh viên: 106210102
THÍ NGHIỆM THÔNG TIN SỐ
Bài 1: Kỹ thuật mã hóa kênh
I. Lý thuyết
II. Bài tập
Bài 1:
Thực hiện mã hóa ASCII cho đoạn văn bản sau:
Faculty of Electronic and Telecommunication
- Giả sử lỗi rơi vào các vị trí 1, 2, 4, 3, 3, 5, 7, 1, 6, 1, 2 của các ký tự
màu đỏ.
Giải mã.
- Nhận xét về khả năng phát hiện lỗi của mã ASCII Thực hiện mã hóa
ASCII cho đoạn văn bản sau:
Faculty of Electronic and Telecommunication
- Giả sử lỗi rơi vào các vị trí 1, 2, 4, 3, 3, 5, 7, 1, 6, 1, 2 của các ký tự
màu đỏ.
Giải mã.
- Nhận xét về khả năng phát hiện lỗi của mã ASCII
• Code:
input_text = 'Faculty of Electronic and Telecommunication';
encoded_text = '';
for i = 1:length(input_text)
ascii_bin = dec2bin(double(input_text(i)), 7);
if ismember(i, [1, 2, 4, 3, 3, 5, 7, 1, 6, 1, 2])
ascii_bin(1) = '0';
end
encoded_text = strcat(encoded_text, ascii_bin);
end
decoded_text = '';
for j = 1:7:length(encoded_text)
binary_char = encoded_text(j:j+6);
ascii_char = bin2dec(binary_char);
decoded_text = [decoded_text, char(ascii_char)];
end
disp('Chuỗi sau khi mã hóa:');
disp(encoded_text);
disp('Chuỗi sau khi giải mã:');
disp(decoded_text);
• Result:
• Nhận xét:
- Là mặc dù mã ASCII không có khả năng phát hiện, cũng không sửa được
các lỗi. Và nếu một bit trong dữ liệu ASCII bị mất hoặc bị thay đổi trong
quá trình truyền, các thiết bị hoặc phần mềm không thể phát hiện ra lỗi
này và sẽ giải mã dữ liệu bị lỗi một cách sai lệch.
Bài 2:
Cho đoạn văn sau:
Electronic
- Mã hóa bản tin trên dùng mã khối tuyến tính (4, 7) với đa thức sinh như trong
ví dụ.
H=[1 0 1 1 1 0 0
1101010
1 1 1 0 0 0 1]
G=[1 0 0 0 1 1 1
0100011
0010101
0 0 0 1 1 1 0]
Tính tỷ lệ mã.
- Giải mã bản tin trên với giả sử lỗi xuất hiện ở vị trí 1, 7 trong ký tự “e” màu
đỏ.
Nhận xét về khả năng phát hiện lỗi của mã (4, 7)
• Code:
T = 'Electronic';
m = dec2bin(T, 7) - '0';
x = [1 0 0 0;
1 0 1 1;
1 0 1 1;
0 0 1 1;
0 0 1 0;
1 1 1 0;
0 0 1 1;
1 1 1 0;
1 0 0 1;
1 1 0 0;
1 0 1 1;
0 1 1 1;
1 1 1 0;
1 1 1 0;
1 1 0 1;
0 0 1 1;
1 0 0 0;
1 1 0 0];
G = [1 0 0 0 1 1 1;
0 1 0 0 0 1 1;
0 0 1 0 1 0 1;
0 0 0 1 1 1 0];
num_blocks = size(x, 1);
block_size = size(G, 2);
a = zeros(num_blocks, block_size);
for i = 1:num_blocks
a(i,:) = mod(x(i,:) * G, 2);
end
T = 'Electronic';
G = [1 0 0 0 1 1 1;
0 1 0 0 0 1 1;
0 0 1 0 1 0 1;
0 0 0 1 1 1 0];
x = dec2bin(T) - '0';
x1 = x(1,:);
m_ERROR = [1 0 0 0;
1 0 1 1;
1 0 1 1;
0 0 1 1;
0 0 1 0;
1 1 1 0;
0 0 1 1;
1 1 1 0;
1 0 0 1;
1 1 0 0;
1 0 1 1;
0 1 1 1;
1 1 1 0;
1 1 1 0;
1 1 0 1;
0 0 1 1;
1 0 0 0;
1 1 0 0];
H = [1 0 1 1 1 0 0;
1 1 0 1 0 1 0;
1 1 1 0 0 0 1];
e = [zeros(1,7);
eye(7)];
s = e * H';
r = m_ERROR * G;
r1 = r;
r1 = mod(r1, 2);
r1(1,1) = ~r1(1,1);
r1(2,3) = ~r1(2,3);
r11 = r1(1,:);
r77 = r1(2,:);
s1 = r11 * H';
s1 = mod(s1, 2);
s7 = r77 * H';
s7 = mod(s7, 2);
e_loi_1 = ' ';
r_sualoi_1 = ' ';
e_loi_7 = ' ';
r_sualoi_7 = ' ';
for i = 1:8
if s1 == s(i,:)
disp(['Chu E lỗi ở vị trí thứ ' num2str(i-1) ''])
e_loi_1 = e(i,:);
e_loi_1 = mod(e_loi_1, 2);
else
disp(['Không phát hiện lỗi cho chu E.'])
end
if s7 == s(i,:)
disp(['Chu l lỗi ở vị trí thứ ' num2str(i-1) ''])
e_loi_7 = e(i,:);
e_loi_7 = mod(e_loi_7, 2);
else
disp(['Không phát hiện lỗi cho chu l.'])
end
end
• Result:
• Nhận xét:
- Mã (4, 7) có khả năng phát hiện và sửa một số lỗi nhất định, nhưng nó
không thể đảm bảo phát hiện và sửa mọi loại lỗi. Điều này phụ thuộc vào
người code phải thông minh cách mã được thiết kế và cách nó được triển
khai trong hệ thống truyền thông hoặc lưu trữ.
Bài 3:
- Thực hiện bài tập 2 với mã (7, 11). Đa thức sinh tự chọn.
- So sánh mã (4, 7) và (7, 11) về các tiêu chí:
+ Tỷ lệ mã.
+ Khả năng phát hiện lỗ
• Code:
T = 'Electronic';
x = dec2bin(T, 7) - '0';
G = [1 0 0 0 0 0 0 1 1 1 1;
0 1 0 0 0 0 0 0 1 1 0;
0 0 1 0 0 0 0 1 0 1 0;
0 0 0 1 0 0 0 1 1 0 0;
0 0 0 0 1 0 0 1 1 0 1;
0 0 0 0 0 1 0 0 0 1 1;
0 0 0 0 0 0 1 0 0 0 1];
mahoaASCII = [];
for i = 1:length(T)
mahoaASCII = [mahoaASCII x(i, :) * G];
end
mahoaASCII = mod(mahoaASCII, 2);
mahoa_7_11 = num2str(mahoaASCII);
H = [0 0 1 1 1 0 1 1 0 0 0;
1 1 0 1 1 0 0 0 1 0 0;
1 1 1 0 0 1 0 0 0 1 0;
1 0 0 0 1 1 1 0 0 0 1];
• Result:
• Nhận xét:
- Tỷ lệ mã :
+ Mã (4, 7): Tỷ lệ mã là 4/7, tức là mỗi block dữ liệu gồm 4 bit và 3 bit
kiểm tra lỗi. Tỷ lệ này thường được đo lường để đánh giá hiệu suất
của mã.
+ Mã (7, 11): Tỷ lệ mã là 7/11, có nghĩa là mỗi block dữ liệu chứa 7 bit
và có thêm 4 bit kiểm tra lỗi.
- Khả năng phát hiện lỗi:
+ Mã (4, 7): Có thể phát hiện và sửa một lỗi trong mỗi khối 4 bit.
Tính khả năng phát hiện lỗi là 3 bit.
+ Mã (7, 11): Có khả năng phát hiện và sửa một lỗi trong mỗi khối 7
bit. Tính khả năng phát hiện lỗi là 4 bit.
➢ Mã (7,11) có thể kiểm tra lỗi và sửa lỗi chính xác hơn nhiều lần mã
(4,7) nên được ứng dụng sử dụng trong thực tiễn nhiều hơn