基于MATLAB——汉明码设计与实现

  • 格式:doc
  • 大小:427.50 KB
  • 文档页数:8

ylabel('value')
end
输入信息元序列:1101
编码后序列为:
1000111
0100110
0010101
0001011
2.任意输入一个 7 位编码使用程序判断编码是否正确,如果错误,指出错
位并纠正。
function g=hammingdecod(B)
H=[1 1 1 0 1 0 0 ;1 1 0 1 0 1 0;1 0 1 1 0 0 1];
计算机控制技术实验
(10)
其中 Q 为 P 的转置,即
Q PT (11) 式(10)表示,信息位给定后,用信息位的行矩阵乘矩阵 Q 就产生出监督位。 我们将 Q 的左边加上一个 k×k 阶单位方阵,就构成一个矩阵 G
(12)
G 称为生成矩阵,因为由它可以产生整个码组,即有
(13)
或者
(14)
式(13)即汉明码的编码原理 1.2 汉明码纠错原理
y=reshape(([a]'*ones(1,100))',1,m*n);
plot(x,y)
axis([0 4 0 1.5]);
set(gca,'XTick',0:1:4);
set(gca,'YTick',0:0.5:1.5);
title('hanmingencode')
xlabel('value')
设分组码 (n,k)中 k = 4。为了纠正一位错码,按汉明不等式可得 r ≥3,若取 r =3,则 n = k+r =7。我们用
a6 a5 a4 a3 a2 a1 a0 a2= a6 ⊕ a5 ⊕ a4 a1= a6 ⊕ a5 ⊕ a3 a0= a6 ⊕ a4 ⊕ a3
2.编码的检验与纠错
用 S1,S2,S3 表示三个监督关系式式中的校正子, 监督方程为:
G=[1 0 0 0 1 1 1;0 1 0 0 1 1 0;0 0 1 0 1 0 1;0 0 0 1 0 1 1];
a=input('输入信息元序列:');
c=mod(a*G,2);
disp('编码后序列为:');
disp(c);
x=.01:.01:4;
[m,n]=size([a]'*ones(1,100));
下面以(7,4)汉明码为例说明原理:
设汉明码(n,k)中 k=4,为了纠正一位错码,由式(1)可知,要求监督位
数 r≥3。若取 r=3,则 n=k+r=7。我们用 a6a5a4a3a2a1a0 来表示这 7 个码元,用 s1s2s3
的值表示 3 个监督关系式中的校正子,则 s1s2s3 的值与错误码元位置的对应关系
立。在未超过检错能力时,式(19)不成立。假设此时式(19)的右
端为 S,即
(20)

代入式(20),可得
由式(8)可知,所以 (21)
此处 S 与前面的 s1s2s3 有着一一对应关系,则 S 能代表错码位置。
因此,纠错原理即,接收端收到码组后按式(20)计算出 S,再根据表 1 判 断错码情况,进行差错纠正。
可以规定如表 1 所列。
表 1 校正子和错码位置的关系
s1s2 s3
001
错码位置 a0
010
a1
100
a2
011
a3
则由表 1 可得监督关系式:
s1s2 s3 101
110 111 000
错码位置
a4 a5 a6 无错码
(2)
(3)
⊕ (4)ຫໍສະໝຸດ 页脚内容1计算机控制技术实验
在发送端编码时,信息位 a6a5a4a3 的值决定于输入信号,因此它们是随机的。
计算机控制技术实验
实验报告书------汉明码设计与实现
汉明码编译码器系统
班级:
姓名:
学号:
一.实验原理描述
1.1 汉明码编码原理 一般来说,若汉明码长为 n,信息位数为 k,则监督位数 r=n-k。若希望用 r 个监督位构造出 r 个监督关系式来指示一位错码的 n 种可能位置,则要求
2r 1 n 或 2r 1 k r 1 (1)
当数字信号编码成汉明码形式(本文中即 A)后在信道中传输,由于信道中
噪声的干扰,可能由于干扰引入差错,使得接收端收到错码,因此在接收端进行
汉明码纠错,以提高通信系统的抗干扰能力及可靠性。
一般来说接收码组与 A 不一定相同。若设接收码组为一 n 列的行矩阵 B,

页脚内容3
计算机控制技术实验
(15)
B=input('输入接收序列B=');
S=mod(B*H',2);
%计算B的伴随式
if S==0
disp('接收到的码字无错误。');
E=dec2bin(0,7);
end
fori=1:1:7
if S==H(:,i)'
则发送码组和接收码组之差为 (16)
E 就是传输中产生的错码行矩阵
(17)
若 ei=0,表示接收码元无错误,若 ei=1,则表示该接收码元有错。式(16) 可改写成
(18)
若 E=0,即接收码组无错,则 B A E A,将它代人式(8),该是
仍成立,即有
(19)
当接收码组有错时,E≠0,将 B 带入式(8)后,该式不一定成
S1 =a6 ⊕ a5 ⊕ a4 ⊕ a2 S2 =a6 ⊕ a5 ⊕ a3 ⊕ a1 S3 =a6 ⊕ a4 ⊕ a3 ⊕ a0
页脚内容5
计算机控制技术实验
则 S1,S2,S3 的值与错码位置的对应关系可以规定如下表:
五.实验要求
1.编写 7 位汉明码的程序,输出汉明码
function f=hammingencod(a)
页脚内容4
计算机控制技术实验
二.实验仪器
1.通信原理综合实验系统一台 2.电脑-MATlab 一台
三.实验目的
1.熟悉掌握汉明码的原理与实现 2.观察了解汉明距离的作用 3.通过已经知道的汉明码监督方程为传输的编码进行纠错也验证
四.实验内容
1.汉明码编码规则 汉明码是 1950 年由美国贝尔实验室提出来的,是第一个设计用来纠正 一位误码的线性分组码,汉明码及其变型已广泛应用于数字通信和数据存储 系统中作为差错控制码。 汉明码的原始设计思想来自于前面讨论的奇偶监督码。 通过一个例子来说明如何具体构造这些监督关系式。
监督位 a2 、a1 、a0 应根据信息位的取值按监督关系来确定,即监督位应使式(2) ~式(4)中 s1 、 s2 、 s3 的值为 0(表示编成的码组中应无错码)
(5)
式(5)经过移项运算,接触监督位
(6) 式(5)其等价形式为:
(7)
式(6)还可以简记为

(8)
其中
页脚内容2
所以有
(9) 式(6)等价于