信息论与编码实验报告-汉明编码

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验报告

课程名称:信息论与编码姓名:

系:

专业:

年级:

学号:

指导教师:

职称:

年月日

实验七 汉明编码

一、实验目的

1、掌握线性分组码的编码原理

2、掌握汉明码编码方法

3、了解编码对误码性能的改善

二、实验原理

(n ,k )线性分组码的H 矩阵是一个n r n k n ⨯=⨯-)(阶矩阵,这里k n r -=是校验元的数目。显然,r 个校验元能组成r 2列互不相同的r 重矢量,其中非全零矢量有12-r 个。如果用这12-r 个非全零矢量作为H 矩阵的全部列,即令H 矩阵的列数12-=r n ,则此H 矩阵的各列均不相同,且无全零列,由此可构造一个纠正单个错误的(n ,k )线性分组码。

同时,12-r 是n 所能取的最大值,因为如果12->r n ,那么H 矩阵的n 列中必会出现相同的两列,这样就不能满足对H 矩阵的要求。而由于12-=r n 是n 所能取的最大值,也就意味着码率R 取得了最大值,即

1

211--=-=-==r r n r n r n n k R

这样设计出来的码是符合我们的要求的,这样的码就是汉明码。

定义 若H 矩阵的列是由非全零且互不相同的所有二进制r 重矢量组成,则由此得到的线性分组码,称为GF(2)上的(12-r ,r r --12)汉明码。

三、实验内容

1、写出产生汉明码的的Matlab 程序

2、将程序在计算机上仿真实现,验证程序的正确性并完成习题。

四、实验环境

Microsoft Windows 7 Matlab 6.5

五、编码程序

本实验要求写出产生(3,1)汉明码的生成矩阵,由上述可知,我们的n=12-r =3,而k=r r --12=1,由此可得出r=2.

当r=2时,有3个非全零的二重矢量: (01),(10),(11)

构成矩阵:

⎦⎤⎢⎣⎡=101110H

由此得到一个能纠正单个错的(3,1)汉明码。若码字传输中左边第一位出错,则相应的伴随式)01(=s 就是H 矩阵的第一列,也正好是“1”的二进制表示。同理可知,无论哪一位出错,它对应的伴随式就是该位的二进制表示,故译码十分方便,特别适用于计算机内部运算和记忆系统中的纠错。

如果要得到系统码形式的H 矩阵,只需对上述矩阵进行初等变换交换列即可。

⎦⎤

⎢⎣⎡=101011H

相应地,生成矩阵G 为:

[]111G =

根据G C ⋅=μ生成码字。

由此构成的(3,1)汉明码如表3-1所示。

表3-1 (3,1)系统码

信息组 码字 0 000 1

111

MATLAB 程序:

%function f=humm_enc(a);

G=[1 1 1];%(3,1)汉明码的生成矩阵

t=input(‘输入0或1:');%t=0则产生(3,1)汉明码,t=1则对输入序列进行编码 if t==1

a=input('输入信息元序列:'); c=mod(a*G,2);%编码的码字c

disp('编码后序列:');%显示“编码后序列:”字样 disp(c); %显示编码的码字 else

disp('(3,1)汉明系统码为:');%显示“(3,1)汉明系统码为:”字样 for i=0:1; %循环变量的取值为0,1

a=dec2bin(i,1); %系统自动给出两信息元从0到1 c=mod(a*G,2) ; %输出编码的码字

disp(a); %显示系统自动给出两信息元从0到1

disp('对应码字为:'); %显示“对应码字为:”字样

disp(c); %显示编出的码字

end %结束for循环

end %结束整个程序

六、实验结果

①Untitled3

输入0或1:1

输入信息元序列:0

编码后序列:

0 0 0

②Untitled3

输入0或1:0

(3,1)汉明系统码为:0

对应码字为: 0 0 0

汉明系统码为:1

对应码字为: 1 1 1

七、实验总结

通过这次实验我对汉明编码有了进一步的认识,对生成矩阵的求法更熟悉了,同时对仿真模块的应用也有了深刻的认识,认真检验了各参数对编码的影响,此实验将为以后相类似实验的基础,以后相类似实验将更容易更快捷的被做出,可达到了学以致用的效果。

相关文档
最新文档