好的,我们来一步一步重新梳理,确保矩阵部分完全正确。


1. 原始数据与编码

原始消息:1011
每个比特重复 3 次(重复码)→ 111 000 111 111


2. 交织:写入矩阵(按行)

内容(3 列)
1 (原 bit1=1) 1 1 1
2 (原 bit2=0) 0 0 0
3 (原 bit3=1) 1 1 1
4 (原 bit4=1) 1 1 1

按列读出顺序

  • 列1:1, 0, 1, 1
  • 列2:1, 0, 1, 1
  • 列3:1, 0, 1, 1

发送序列:
1 0 1 1 | 1 0 1 1 | 1 0 1 1
位置:1 2 3 4 5 6 7 8 9 10 11 12


3. 突发错误(长度 3)

破坏第 4、5、6 位。

原始发送位(带位置):
1(1) 0(2) 1(3) 1(4) | 1(5) 0(6) 1(7) 1(8) | 1(9) 0(10) 1(11) 1(12)

把第 4 位:1 → 0
第 5 位:1 → 0
第 6 位:0 → 1

(注意:只改这些位,其他不变)


4. 接收到的序列

第 1-3 位不变:1 0 1
第 4 位变 0
第 5 位变 0
第 6 位变 1
第 7-12 位不变:1 1 1 0 1 1

所以接收序列(按位置写):
1(1) 0(2) 1(3) 0(4) 0(5) 1(6) 1(7) 1(8) 1(9) 0(10) 1(11) 1(12)

分组显示:
1 0 1 *0* | *0* *1* 1 1 | 1 0 1 1


5. 解交织:按列写回矩阵

我们知道原交织顺序是:
发送 = 列1(4位) + 列2(4位) + 列3(4位)

所以接收的 前 4 位 = 列1:1 0 1 0
中间 4 位 = 列2:0 1 1 1
最后 4 位 = 列3:1 0 1 1

按列填入矩阵(行数=4,列数=3):

列1 (1,0,1,0) → 填到第1列各行:
行1列1=1
行2列1=0
行3列1=1
行4列1=0

列2 (0,1,1,1) → 填到第2列各行:
行1列2=0
行2列2=1
行3列2=1
行4列2=1

列3 (1,0,1,1) → 填到第3列各行:
行1列3=1
行2列3=0
行3列3=1
行4列3=1

得到矩阵(行=原重复组,列=重复位置):

列1 列2 列3
1 1 0 1
2 0 1 0
3 1 1 1
4 0 1 1

6. 按行解码(多数表决)

  • 行1 (1,0,1) → 1
  • 行2 (0,1,0) → 0(两个0)
  • 行3 (1,1,1) → 1
  • 行4 (0,1,1) → 1

结果:1 0 1 1正确


7. 为什么会成功?

突发错误(4,5,6位)破坏的是:

  • 第4位(属于列1,行4)
  • 第5位(属于列2,行2)
  • 第6位(属于列2,行3)

解交织后,每个行(原重复组)最多只错 1 位:

  • 行4错1个(列1)
  • 行2错1个(列2)
  • 行3错1个(列2)
  • 行1无错

重复码(3 重复,多数表决)能纠正 1 位错误,所以全对。

更多推荐