汉明码编译码指导书
㈠ 汉明码的编码原理
以数据码1101为例讲讲汉明码的编码原理,此时D8=1、D4=1、D2=0、D1=1,在P1编码时,先将D8、D4、D1的二进制码相加,结果为奇数3,汉明码对奇数结果编码为1,偶数结果为0,因此P1值为1,D8+D2+D1=2,为偶数,那么P2值为0,D4+D2+D1=2,为偶数,P3值为0。这样,参照上文的位置表,汉明码处理的结果就是1010101。在这个4位数据码的例子中,我们可以发现每个汉明码都是以三个数据码为基准进行编码的。下面就是它们的对应表:
汉明码
编码用的数据码
P1
D8、D4、D1
P2
D8、D2、D1
P3
D4、D2、D1
从编码形式上,我们可以发现汉明码是一个校验很严谨的编码方式。在这个例子中,通过对4个数据位的3个位的3次组合检测来达到具体码位的校验与修正目的(不过只允许一个位出错,两个出错就无法检查出来了,这从下面的纠错例子中就能体现出来)。在校验时则把每个汉明码与各自对应的数据位值相加,如果结果为偶数(纠错代码为0)就是正确,如果为奇数(纠错代码为1)则说明当前汉明码所对应的三个数据位中有错误,此时再通过其他两个汉明码各自的运算来确定具体是哪个位出了问题。
㈡ (7,4)汉明码 matlab编程
程序改为如下:
S=ones(7,3);%要加的部分
A=[1101100];
[r,l]=size(A);
E=[0000000;0000001;0000010;0000100;0001000;0010000;0100000;1000000];%%%%%求校正子,然后将其转化成十进制数
fori=1:r
Sx=S(i,1)*4+S(i,2)*2+S(i,3);
end%%%%下面是(7,4)码检错
fori=1:r
switch(Sx)
case0
disp('此接收码字没错')
case1
disp('注意:此接收码字的第一位有错,请纠正')
case2
disp('注意:此接收码字的第二位有错,请纠正')
case4
disp('注意:此接收码字的第三位有错,请纠正')
case3
disp('注意:此接收码字的第四位有错,请纠正')
case5
disp('注意:此接收码字的第五位有错,请纠正')
case6
disp('注意:此接收码字的第六位有错,请纠正')
case7
disp('注意:此接收码字的第七位有错,请纠正')
end
end
%%%下面为在知道哪位出错的情况下,进行纠正
fori=1:r
switch(Sx)
case0
B(i,:)=A(i,:)+E(1,:);
case1
B(i,:)=A(i,:)+E(2,:);
case2
B(i,:)=A(i,:)+E(3,:);
case4
B(i,:)=A(i,:)+E(4,:);
case3
B(i,:)=A(i,:)+E(5,:);
case5
B(i,:)=A(i,:)+E(6,:);
case6
B(i,:)=A(i,:)+E(7,:);
case7
B(i,:)=A(i,:)+E(8,:);
end
end
B=rem(B,2);
disp('纠错后的码字');
disp(B);
结果:
注意:此接收码字的第七位有错,请纠正
纠错后的码字
0 1 0 1 1 0 0
㈢ 数据校验码--汉明码(Hamming code)
汉明码是Richard Hamming于1950年提出的。是目前广泛采用的一种有效的校验码,其中,主存的ECC(Error Correcting Code)采用的就是类似的校验码。
----摘自网络
这个分组的思想有点不是很理解。
以下使用P代表校验位,H代表汉明码,D代表原始信息位,N位信息位的位数,K位校验位的位数。
则N与K的关系为 2^(K-1) >=N+K+1 ,如下表:
假设原始数据信息位的位数为8,那么他需要的K值位5,即需要有5个校验位,组成的汉明码的位数为13.再根据校验位的分配原则,组成的汉明码如下:
|位|13| 12| 11 |10| 9| 8| 7 |6| 5| 4| 3| 2| 1|
|-|-|-|-|-|-|-|-|-|-|-|-|-|
|汉明码|P5| D8| D7| D6 | D5| P4| D4| D3| D2| P3| D1| P2| P1|
P5本来应该是放在第16位的,但是由于生成的汉明码位数为13所以它就被挪到的第13位了。
那么怎么确定校验呢?最初也困扰我许久。
先看一个表格:
其中H的下标代表在汉明码中的位置,也是P4P3P2P1组成的-十进制数
校验位Pi的偶校验结果就是:
P1 = D1 ^ D2 ^ D4 ^ D5 ^ D7
P2 = D1 ^ D3 ^ D4 ^ D6 ^ D7
P3 = D2 ^ D3 ^ D4 ^ D8
P4 = D5 ^ D6 ^ D7 ^D8
如果是奇校验的话上面的结果取反就是了。
那么还有P5呢?上面的结果中,D4,D7出现了3次,而D1,D2,D3,D5,D6,D8仅出现了2次,为了使其各个信息位在校验中均匀的出现校验,从而定义 P5 = D1 ^ D2 ^ D3 ^ D5 ^ D6 ^D8 ,这样,每一位信息位都均匀的出现在3个Pi值得形成关系中,当任意一位信息位变化的时候都会引起3个P值得变化, 即合法汉明码的码距为4 (前面都懂,这个码距为4有点想不明白)
这就是编码了。
现在再来看看这句话
P1,P2,P3,P4,P5的位数分别为1,2,4,8,13
D1的汉明码位数为3,3 = 2 + 1所以D1会被P1,P2两个校验位所校验。
根据偶校验结果以及上应该就清楚了。
将收到的汉明码进行偶校验(当然也可以进行奇校验,前提是前面编码的时候使用的是奇校验)
S1 = P1 ^ D1 ^ D2 ^ D4 ^ D5 ^ D7
S2 = P2 ^ D1 ^ D3 ^ D4 ^ D6 ^ D7
S3 = P3 ^ D2 ^ D3 ^ D4 ^ D8
S4 = P4 ^ D5 ^ D6 ^ D7 ^D8
S5 = P5 ^ D1 ^ D2 ^ D3 ^ D5 ^ D6 ^D8
汉明码出错情况:
记录 S = S5 S4 S3 S2 S1
以上结果分析基于偶校验。
|汉明码||P5| D8| D7| D6 | D5| P4| D4| D3| D2| P3| D1| P2| P1|
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
|出错位号||H13| H12| H11 |H10|H9| H8| H7 |H6| H5| H4| H3| H2|H1|
||S5|1|1|0|1|1|0|0|1|1|0|1|0|0|
||S4|0|1|1|1|1|1|0|0|0|0|0|0|0|
||S3|0|1|0|0|0|0|1|1|1|1|0|0|0|
||S2|0|0|1|1|0|0|1|1|0|0|1|1|0|
||S1|0|0|1|0|1|0|1|0|1|0|1|0|1|
㈣ 海明码(汉明码)的配置问题
不知道你理解了海明码的原理没有,这个 1357 2367 4567 其实后面都还有一长串的 码长不同的话相应的要延长 现在这个取4位是因为码长只有7位
这个位置是固定的 事先计算出来 设计好的 只有这样安排才能达到用最小的校验码来达到最高的检错功能
至于具体是怎么计算和设计的 我一下子说不清楚 你照着书 多看 多想 多试 主要是要从根本上理解 "校验"这个过程和原理 就容易理解了
㈤ 汉明码的介绍
汉明码(Hamming Code),是在电信领域的一种线性调试码,以发明者理乍得·卫斯里·汉明的名字命名。汉明码在传输的消息流中插入验证码,当计算机存储或移动数据时,可能会产生数据位错误,以侦测并更正单一比特错误。由于汉明编码简单,它们被广泛应用于内存(RAM)。
㈥ 7,用汉明码的编码方程,及校验矩阵H,设发送的信号是0110,实际发送的信号是什么,假设发送的第三个比特由0
解释交织过程:解决突发的成串的误码,改造信道,将信道中的突发的成串差错变为随机的独立差错。即将一条消息的比特以非相继的方式发送,使突发差错信道变为离散信道。交织技术的实现可以通过存储器来完成,在信道的输入端将信息按列写入交织存储器,按行读出;在信道的输入端,按行写入去交织存储器,按列读出。
㈦ (6,3) 汉明码 如何编码
参考答案 在没有看见你之前,我从未以貌取人。
㈧ 汉明码求解步骤
汉明码的目的是能够纠正一位误码,假设信息码共有n位。
汉明码共有r位,那么总共的码长为n+r位.为能检测出n+r位编码中其中一位的错误。
汉明码必须能够表示至少n+r+1种状态,其中n+r种表示n+r位编码中有一位错误,另外还需要一种来表示整个编码正确无误。则汉明码的长度需要满足下列关系。
2r>=n+r+1k个校验位是通过对m+k位复合码字进行奇偶校而确定的。其中,P1位负责校验海明码的第1、3、5、7、?(P1、D1、D2、D4、?)位,(包括P1自己)。
P2负责校验海明码的第2、3、6、7、?(P2、D1、D3、D4、?)位,(包括P2自己)。P3负责校验海明码的第4、5、6、7、?(P3、D2、D3、D4、?)位,(包括P3自己)。
㈨ 汉明码编译码原理实验指导书怎么写
标题:万用表的的使用
一、实验目的
二、实验原理
三、实验步骤
四、实验数据及分析
五、实验心得体会
基本上一二照抄实验指导书,三指导书没有就按实验操作过程写,四按指导书填入实验数据,自己分析一下误差的原因,五自己吹吹。
㈩ 汉明码 问题 求教..
网络了一下
好像你的题目的解是错的
以下ke的
汉明码的编码原理
现以数据码1101为例讲讲汉明码的编码原理,此时D8=1、D4=1、D2=0、D1=1,在P1编码时,先将D8、D4、D1的二进制码相加,结果为奇数3,汉明码对奇数结果编码为1,偶数结果为0,因此P1值为1,D8+D2+D1=2,为偶数,那么P2值为0,D4+D2+D1=2,为偶数,P3值为0。这样,参照上文的位置表,汉明码处理的结果就是1010101。在这个4位数据码的例子中,我们可以发现每个汉明码都是以三个数据码为基准进行编码的。下面就是它们的对应表:
--------------
ke的1101是1010101,你的是0011101.
⊕应该是将三个数相加奇数为1,偶数为零,应该有个术语的吧,异或? 是异或
网址上就是用异或