信息论与编码实验报告-汉明编码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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
七、实验总结
通过这次实验我对汉明编码有了进一步的认识,对生成矩阵的求法更熟悉了,同时对仿真模块的应用也有了深刻的认识,认真检验了各参数对编码的影响,此实验将为以后相类似实验的基础,以后相类似实验将更容易更快捷的被做出,可达到了学以致用的效果。