汉明码编码实验报告详细解释.docx
- 文档编号:16394778
- 上传时间:2023-07-13
- 格式:DOCX
- 页数:9
- 大小:863.74KB
汉明码编码实验报告详细解释.docx
《汉明码编码实验报告详细解释.docx》由会员分享,可在线阅读,更多相关《汉明码编码实验报告详细解释.docx(9页珍藏版)》请在冰点文库上搜索。
汉明码编码实验报告详细解释
汉明码的实现详细实验报告
一、实验目的
1、掌握线性分组码的编码原理
2、掌握汉明码编码方法
3、了解编码对误码性能的改善
二、实验内容
1、自行设置汉明码的参数,生成矩阵,计算所设计出的汉明码;写出产生(3,1)汉明码的生成矩阵,给出生成码的源程序,并给出运行结果。
2、利用encode库函数实现汉明编码;
3、搭建一个通信仿真模块,并给出运行结果,分析汉明码对通信性能的影响;
4、整理好所有的程序清单或设计模块,并作注释。
三、实验原理
(一)、汉明码的介绍
汉明码是1951年由汉明(R.W.Hamming)提出的能纠正单个错
误的线性分组码。
它性能良好,既具有较高的可靠性,又具有较高的传输效率,而且编译码电路较为简单,易于工程实现,因此汉明码在发现后不久,就得到了广泛的应用。
我们的目的是要寻找一个能纠正单个错误,且信息传输率(即码率r=k/n)最大的线性分组码。
我们已经知道,具有纠正单个错误能
力的线性分组码的最小距离应为3,即要求其H矩阵中至少任意两列
线性无关。
要做到这一点,只要H矩阵满足“两无”一一无相同的列,无全零列就可以了。
(n,k)线性分组码的H矩阵是一个⑴-"n訂n阶矩阵,这里r=n—k是校验元的数目。
显然,r个校验元能组成2r列互不相同的r重矢量,其中非全零矢量有2r-1个。
如果用这2r-1个非全零矢量作为H矩阵的全部列,即令H矩阵的列数n=2「一1,则此H矩阵的各列均不相同,且无全零列,由此可构造一个纠正单个错误的(n,k)线性分组码
同时,2r-1是n所能取的最大值,因为如果n2r-1,那么H矩阵的n列中必会出现相同的两列,这样就不能满足对H矩阵的要求。
而由于n=2-1是门所能取的最大值,也就意味着码率R取得了最大
值,即
这样设计出来的码是符合我们的要求的,这样的码就是汉明码
定义若H矩阵的列是由非全零且互不相同的所有二进制r重矢量组
成,则由此得到的线性分组码,称为GF
(2)上的(2r-1,2r-1-r)汉
明码。
(二八产生(3,1)汉明码的原理及程序代码
本实验要求写出产生(3,1)汉明码的生成矩阵,由上述可知,我们
的n=2r-1=3,而k=2r-1-r=1,由此可得出r=2.
当r=2时,有3个非全零的二重矢量:
(01),(10),(11)
构成矩阵
■0111
H=I
〔10J
由此得到一个能纠正单个错的(3,1)汉明码。
若码字传输中左边第一位出错,贝S相应的伴随式s=(01)就是H矩阵的第一列,也正好是“1的二进制表示。
同理可知,无论哪一位出错,它对应的伴随式就是该位的二进制表示,故译码十分方便,特别适用于计算机内部运算和记忆系统中的纠错。
如果要得到系统码形式的H矩阵,只需对上述矩阵进行初等变换交换列即可。
110
H=|
101一,
相应地,生成矩阵G为
G=111
根据c=uG生成码字。
由此构成的(3,1)汉明码如表3-1所示。
表3-1(3,1)系统码
信息组
码字
0
000
1
111
程序段代码为:
%functionf=humm_enc(a);
G=[111];%(3,1)汉明码的生成矩阵
t=input(输入0或1:
');%t=0则产生(3,1)汉明码,t=1则对输
入序列进行编码
ift==1
a=input('输入信息元序列:
');
c=mod(a*G,2);%编码的码字c
disp('
else
为:
”字样
编码后序列:
');%显示“编码后序列:
”字样
disp('对应码字为:
');%显示“对应码字为:
”字样disp(c);%显示编出的码字
end
%
结束for循环
end
%
结束整个程序
显示系统自动给出两信息元从0到1
disp(a);%
(三八利用encode库函数实现汉明编码程序为
msg=randint(1,40);%生成一行40列的信息序列
code=encode(msg,7,4,'hamming');%进行汉明编码
(四)、搭建通信仿真模块图形
四、实验步骤
按照实验原理中所述进行相应的实验操作即:
1、求(3,1)码的生成矩阵;
2、进行代码输入;
3、进行仿真;
4、记录实验结果。
五、实验记录及分析
1、(3,1)码的生成矩阵的求解过程已在实验原理中详细作解
2、代码运行结果为
(1)、输入1且信息元系列为1时
输入0或1:
1
输入信息元序列:
0
编码后序列:
000
2)、输入1且信息元系列为0时
输入0或1:
1输入信息元序列:
1编码后序列:
111
(3)、输入0时显示以下结果输入0或1:
0
(3,1)汉明系统码为:
0对应码字为:
000
1对应码字为:
111
3、利用encode库函数实现汉明编码程序为:
msg=
Columns1through11
111
0
1
0
0
0
0
0
0
Columns12through22
010
1
1
1
0
0
0
1
1
Columns23through33
011
1
1
0
0
1
1
0
0
Columns34through40
000
0
1
0
1
4、进行仿真结果;
参数设置
Create-a?
^n±ilfiae&dfiTfith二色占占宜岸色lengthK^dC*d^T:
:
rdlengthK.
HuEthavethefora2”H・bwhtieKi&aninteser£jreit*rthanor@aiialt&3„3*jEttaual
TheinputauBtcontainexactlyKeleaents,IfitisfTBae^based^thenitwstbeacoIlmvector.
号StinkBlockParameters:
Display
Dieplay
NusexicdisplayQfinputvalues,
Paranaters
Farsat:
short
DeciBation:
1
_|Fl^atincdisplay
OKCancelHelp
在主框中输入simout运行后为:
simout=
0
0
0
0.3333
1.0000
3.0000
0.1429
1.0000
7.0000
六、实验思考
1、分析汉明码对通信性能及其作用的影响;
答:
当计算机存储或移动数据时,可能会产生数据位错误,这时
可以利用汉明码来检测并纠错,简单的说,汉明码是一个错误校验码码集,与其他的错误校验码类似,汉明码也利用了奇偶校验位的概念,通过在数据位后面增加一些比特,可以验证数据的有效性。
利用一个以上的校验位,汉明码不仅可以验证数据是否有效,还能在数据出错的情况下指明错误位置。
在接受端通过纠错译码自动纠正传输中的差错来实现码纠错功能,称为前向纠错。
在数据链路中存在大量噪音时,前向纠错可以增加数据吞吐量。
通过在传输码列中加入冗余位(也称纠错位)可以实现前向纠错。
但这种
方法比简单重传协议的成本要高。
汉明码利用奇偶块机制降低了前向纠错的成本。
2、哪些参数可能对汉明仿真编码进行影响
答:
BernoulliBinaryGenerator中的0出现的概率(prababilityofazero),还有Intialseed、sampletime,ErrorRateCalculation中的Receivedelay禾口computationdelay等等。
七、实验心得
通过这次实验我对汉明吗有了进一步的认识,对生成矩阵的求法更熟悉了,同时对仿真模块的应用也有了深刻的认识,认真检验了各参数对编码的影响,此实验将为以后相类似实验的基础,以后相类似实验将更容易更快捷的被做出,最重要的是我能够运用纠错编码理论知识来解决我所遇到的问题,可达到了学以致用的效果。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汉明码 编码 实验 报告 详细 解释