汉明码纠错java_汉明码(Hamming)编码与纠错原理
一 汉明码的编解码说明
(一)编码
Hamming(12,8)
N=12,表示编码后的比特长度
K=8,待编码数据的比特长度
R=N-K=4,校验位的比特长度
D=3 汉明距离:相邻行之间不同比特数据的最小值
(D-1)/2=1 纠错能力
表格1:
----------------------------------------------------------------------------------------------------
单位矩阵(I) 生成校验位的矩阵(P)
----------------------------------------------------------------------------------------------------
标号 11 10 9 8 7 6 5 4 3 2 1 0
编号 x^7 x^6 x^5 x^4 x^3 x^2 x^1 1 c3 c2 c1 c0
7 1 0 0 0 0 0 0 0 1 1 1 0
6 0 1 0 0 0 0 0 0 0 1 1 1
5 0 0 1 0 0 0 0 0 1 0 1 0
4 0 0 0 1 0 0 0 0 0 1 0 1
3 0 0 0 0 1 0 0 0 1 0 1 1
2 0 0 0 0 0 1 0 0 1 1 0 0
1 0 0 0 0 0 0 1 0 0 1 1 0
0 0 0 0 0 0 0 0 1 0 0 1 1
---------------------------------------------------------------------------------------------------
G是生成矩阵见表格1
A[7:0]
CODE=G x A
CODE[11]=A[7]
CODE[10]=A[6]
...
CODE[4]=A[0]
CODE[3]=A[7]^A[5]^A[3]^A[2] (^为异或)
CODE[2]=A[7]^A[6]^A[4]^A[2]^A[1]
CODE[1]=A[7]^A[6]^A[5]^A[3]^A[1]^A[0]
CODE[0]=A[6]^A[4]^A[3]^A[0]
(二)解码
1.求校验矩阵H
H = {P^T,I(N-K)}(^T表示转置; I(N-K)=I(4)表示4x4单位矩阵)
H为4x11矩阵
表2:
----------------------------------------------------------------------------------------------------------
11 10 9 8 7 6 5 4 3 2 1 0
-----------------------------------------------------------------------------------------------------------
p7 p6 p5 p4 p3 p2 p1 P0 I3 I2 I1 I0
-----------------------------------------------------------------------------------------------------------
3 1 0 1 0 1 1 0 0 1 0 0 0
2 1 1 0 1 0 1 1 0 0 1 0 0
1 1 1 1 0 1 0 1 1 0 0 1 0
0 0 1 0 1 1 0 0 1 0 0 0 1
----------------------------------------------------------------------------------------------------------
2.求校正子S
S = H^T * U (U为待解码的数据)
S[3] = U[11]^U[9]^U[7]^U[6]^U[3]
S[2] = U[11]^U[10]^U[8]^U[6]^U[5]^U[2]
S[1] = U[11]^U[10]^U[9]^U[7]^U[5]^U[4]^U[1]
S[0] = U[10]^U[8]^U[7]^U[4]^U[0]
3.根据假设错误模式定位错误比特
通过错误模式推导校正子Si,i是index指的是错误模式的种类,因为我们汉明码解码数据有12bit,
所以错误模式有12种,还包括一种全部正确的模式。
Si = H^T * Ei
表3:
-----------------------------------------------------------------------------
Ei H^T Si 编号
----------------------------------------------------------------------------
12'b0000_0000_0000 1110 0000
12'b0000_0000_0001 0111 0001 0
12'b0000_0000_0010 1010 0010 1
12'b0000_0000_0100 0101 0100 2
12'b0000_0000_1000 1011 1000 3
12'b0000_0001_0000 1100 0011 4
12'b0000_0010_0000 0110 0110 5
12'b0000_0100_0000 0011 1100 6
12'b0000_1000_0000 1000 1011 7
12'b0001_0000_0000 0100 0101 8
12'b0010_0000_0000 0010 1010 9
12'b0100_0000_0000 0001 0111 10
12'b1000_0000_0000 1110 11
----------------------------------------------------------------------------
4.优化数据修正方法
C[11] = U[11]^(S[3]&S[2]&S[1]&(~S[0]))
C[10] = U[10]^(~S[3]&S[2]&S[1]&S[0])
C[9] = U[9]^(S[3]&(~S[2])&S[1]&(~S[0]))
C[8] = U[8]^(S[3]&(~S[2])&S[1]&S[0])
C[7] = U[7]^(S[3]&(~S[2])&S[1]&S[0])
C[6] = U[6]^(S[3]&S[2]&(~S[1])&(~S[0]))
C[5] = U[5]^((~S[3])&S[2]&S[1]&(~S[0]))
C[4] = U[4]^((~S[3])&(~S[2])&S[1]&S[0])
C[3] = U[3]^(S[3]&(~S[2])&(~S[1])&(~S[0]))
C[2] = U[2]^((~S[3])&S[2]&(~S[1])&(~S[0]))
C[1] = U[1]^((~S[3])&(~S[2])&S[1]&(~S[0]))
C[0] = U[0]^((~S[3])&(~S[2])&(~S[1])&S[0])
例如:
待编码数据:8'b0011_0101
编码后数据:CODE[11:4] = 0011_0101
CODE[3:0] = 0000
CODE[11:0] = 12'b0011_0101_0000
经过信道,假设接收到的数据:
U[11:0] = 12'b0011_0101_0001
校正子:
S[3] = 0
S[2] = 0
S[1] = 0
S[0] = 1
S[3:0] = 4'b0001
根据表3,可知是在接收数据的最低位发生错误
汉明码纠错java_汉明码(Hamming)编码与纠错原理相关推荐
- 汉明码纠错java_汉明码纠错的基本原理及优化解决方案
引言 汉明码是在原编码的基础上附加一部分代码,使其满足纠错码的条件.它属于线性分组码,由于线性码的编码和译码容易实现,至今仍是应用最广泛的一类码.汉明码的抗干扰能力较强,但付出的代介也很大,比如8比特 ...
- 【通信系统仿真系列】基于Matlab的汉明码(Hamming Code)纠错传输以及交织编码(Interleaved coding)仿真
基于Matlab的汉明码纠错传输以及交织编码仿真 前言 原理 汉明码 编码过程 冗余位数量计算 校验位位置计算 计算校验相关位 开始编码 解码过程 实验结果 仿真代码 可以修改的参数 下载链接 主函数 ...
- MATLAB实现(7,4)汉明码的编码解码纠错及BER的分析
MATLAB实现7,4汉明码的编码解码纠错及BER的分析 背景 代码 计算BER 计算不使用汉明编码情况时的BER(模拟环境与理论情况) 总结 背景 本科时信息论与编码的作业 课程为 Informat ...
- 趣题:猜帽子游戏与Hamming编码
三个人坐成一个圆圈,每个人头上戴着一顶黑色的或者白色的帽子.每个人都只能看到另外两个人头上的帽子颜色.现在,他们需要独立地猜测自己头上的帽子颜色.每个人都需要在自己的小纸条上写下"黑色&qu ...
- 音视频同步原理解析;音频编码和解码原理
视频流中的DTS/PTS到底是什么? DTS(解码时间戳)和PTS(显示时间戳)分别是解码器进行解码和显示帧时相对于SCR(系统参考)的时间戳.SCR可以理解为解码器应该开始从磁盘读取数据时的时间. ...
- 彻底弄懂base64的编码与解码原理
作者介绍 背景 base64的编码原理网上讲解较多,但解码原理讲解较少,并且没有对其中的内部实现原理进行剖析.想要彻底了解base64的编码与解码原理,请耐心看完此文,你一定会有所收获. 涉及算法与逻 ...
- php实现汉明码,实验四 汉明码系统
<实验四 汉明码系统>由会员分享,可在线阅读,更多相关<实验四 汉明码系统(11页珍藏版)>请在人人文库网上搜索. 1.实验四 汉明码系统 一. 实验原理和电路说明这些多差错控 ...
- simulink 汉明码 用法_汉明码的性能分析
武汉理工大学<MATLAB应用>课程设计报告 disp(['译码器输出信号误码率: ' num2str(symerr(msg,rcv)/length(msg))]) %计算误码率 3.2. ...
- 15 11 汉明码matlab,数字通信汉明码报告
<数据通信原理>实验报告 实验题目: 汉明码的编译码 专业班级: 信息工程 2 班 姓名学号: 赵星敏 201342351 李明阳 201342300 指导教师: 刘钰 实验五 汉明码的编 ...
最新文章
- 栈与队列3——用递归和栈操作逆序一个栈
- 字符串作为freemarker模板的简单实现例子
- 基于java封装的语言_封装在java中的应用
- 类继承、组合和抽象类
- zone.js在bootstrap阶段对window对象里一些标准方法的注入逻辑
- 利用ABAP调试模式修改SE16里数据库表的内容
- PhpStorm之操作数据库
- 被中国人误传了数千年的七句话
- 删除U盘时提示无法停止‘通用卷’设备的解决方法
- Oracle11gR1中细粒度访问网络服务(转)
- centos 更新内核步骤
- Python基础 模块化编程(模块的导入)
- OIer__ZLY__OI计划
- 玛格丽特·米德2019下半年EI会议与人格理论初探
- 面向对象封装案例 --- 士兵突击
- 计算机笔记--【并发编程①】
- Redis单线程和多线程
- 蓝桥杯刷题冲刺 | 倒计时28天
- python员工管理系统课程设计报告_python--员工信息管理系统编译及思路
- 推荐--jQuery使用手册 1