版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 Hamming码的编码和译码的Java程序1 程序设计理论依据程序设计的理论基础是汉明码的定义汉明码的定义是一个线性分组码,它的最小Hamming距离为3,能纠正全部一位错误,它的校验矩阵H由全部-1个长度为r的非0,相异的二元列矢量组成.二元Hamming码是完备码.Hamming码是一类非常重要的线性分组码,它能纠正全部一位错误,而且译码编码都非常简单接收矢量的伴随式等于校验矩阵H中与出错位对应的列矢量之和.因此,与可纠正的错误形式对应的H矩阵列矢量之和不应为0 而且彼此可以区分,对于能纠正一位错误的线性码来说就是要求它的校验矩阵中每一列矢量是非0矢量同时要求每一列矢量彼此相异.因为如果
2、H中有一列0矢量,则与该列对应的比特错误就不可能被检测出来.另外如果H中有2列矢量完全相同,则不可能区分与这2列矢量相对应的2个比特错误形式如果校验矩阵H有r=n-k 行, 则总共有-1个不相同的非0 r维列矢量.例如r=3,则存在-1个不同的列矢量 2 程序设计思想给出校验矩阵H 生成矩阵输入码为(7,4)Hamming码,所有可能接收的编码总数为 个,由G生成的编码数为16个,H与这16个码相乘得到的伴随式为S=000 即S=HY如S=001 根据校验矩阵H, Y的第8位出错,将Y的第8位异或1即该位求反将结果作为X'输出3 算法根据教材3.1 给出校验矩阵H 和待处理的编码矩Y3
3、.2 计算每个编码对应的伴随式 3.3 如果S等于0 , 输出=y3.4如果S等于H的某一列,例如S= ,对Y 的第i个分量求反将该位异或1,将结果作为输出4 总结 根据教材中提供的算法,用笔算和观察法进行Hamming码的编码和译码是简单易行的方法但用程序处理则要对数据结构精心安排,能够在Java语言中没有提供二进制数据类型的情况下以二进制的方式处理并以二进制的形式输出数据. 另外根据计算得到的伴随式确定S在H中的列位置也需要技巧,尽管用观察法很简单.5 该程序从设计到最后检验正确无误本文提供的Hamming码的编码和译码的Java程序经过与笔算和观察法对比,在可靠性上两者是完全一致的.如果
4、有充分的时间进行完善,修改还可用于线性码的编码和译码.import java.awt.*; import java.io.*;import java.lang.*;public class Array50public static void main(String args)int Sbefore=new int30317;int S =new int3031;int ST =new int3013;int HT =new int 713;int nC =new int30;int counter,check,sign=0,finish;int i,j,k,r;int H=0,1,1,1,1,
5、0,0, 1,0,1,1,0,1,0, 1,1,0,1,0,0,1;int C=0,0,0,1,1,1,1,1,0,0,1,1,1,1,1,1,0,1,0,1,1, 1,1,0,1,1,1,0,1,0,0,0,1,0,0,1,1,0,1,0,0,1, 1,0,0,0,1,0,1,1,0,0,1,1,1,1,1,1,0,1,0,1,0; int z =1,3,5; intnColumn=999; System.out.println("打印输入二进制代码矩阵H"); for(r=0;r<C.length;r+) System.out.print(" C&quo
6、t;+r+"="); for(j=0;j<H0.length;j+) for(k=0;k<H00.length;k+) System.out.print(""+Crjk); System.out.println(); for(i=0;i<H.length;i+) counter=0; for(j=0;j<H0.length;j+) for(k=0;k<H00.length;k+) HTkji=Hijk; counter+;/ if(counter%3=0) System.out.print(" "); /
7、 System.out.println(""); System.out.println(); System.out.println("打印校验矩阵H"); for(i=0;i<HT.length;i+) counter=0; System.out.print("H"+i+"="); for(j=0;j<HT0.length;j+) for(k=0;k<HT00.length;k+) HTijk=Hkji; System.out.print(""+HTijk); counter+
8、; if(counter%3=0) System.out.print(" "); System.out.println(""); for(r=0;r<C.length;r+) for(i=0;i<H.length;i+) counter=0;/ System.out.print("Sbefore"+r+""+i+"="); for(j=0;j<H0.length;j+) for(k=0;k<H00.length;k+) Sbeforerijk=Hijk&Crjk;
9、/ System.out.print(""+Sbeforerijk); counter+;/ if(counter%7=0) System.out.print(" "); / System.out.println(""); for(r=0;r<C.length;r+) for(i=0;i<Sbefore0.length;i+) counter=check=0; for(j=0;j<Sbefore00.length;j+) for(k=0;k<H00.length;k+) if(Sbeforerijk=1) ch
10、eck=1; Srij=check; System.out.println(); System.out.println("打印伴随式H"); for(i=0;i<C.length;i+) counter=0; System.out.print("S"+i+"="); for(j=0;j<ST0.length;j+) for(k=0;k<ST00.length;k+) STijk=Sikj; System.out.print(""+STijk); counter+; if(counter%3=0)
11、System.out.print(" "); System.out.println(""); for(r=0;r<C.length;r+)/ System.out.print(" S"+r+"="); for(i=0;i<S0.length;i+) counter=0; for(j=0;j<S00.length;j+)/ System.out.print(" S"+r+""+i+""+j+"="+Srij); / Sy
12、stem.out.print(""+Srij); counter+;/ if(counter%3=0) System.out.println(); System.out.println(); try System.in.read(); catch(Exception e) for(r=0;r<C.length;r+) finish=0; for(k=0;k<H00.length;k+) sign=0; / for(i=0;i<H.length;i+) for(j=0;j<H0.length;j+)/ System.out.println("
13、 S"+r+""+i+""+j+"="+Srij); try System.in.read(); catch(Exception e) System.out.println("begin"); for(r=0;r<C.length;r+) finish=0; nColumn=999; for(i=0;i<HT.length;i+)/ sign=0; / for(j=0;j<HT0.length;j+) for(k=0;k<HT00.length;k+) System.out.pri
14、ntln(" HT"+r+""+i+""+j+""+k+"="+STijk); if(HTijk!=STrjk) sign=1; break; else sign=0; if(sign=1) finish=0; break; else finish=1; if(finish=1)&&(i<HT.length) nColumn=i; break; if(nColumn>HT.length) System.out.println(" No error recei
15、ve=input"); else System.out.println("1 erroer occured in the position "+nColumn); System.out.println("system has change it"); Cr0nColumn=1; try System.in.read(); catch(Exception e)程序输出如下所示输入二进制代码矩阵 C0=0001111 C1=1001111 C2=1101011 C3=1101110 C4=1000100 C5=1101001 C6=1000101
16、C7=1001111 C8=1101010对应伴随式SS0=000S1=011S2=010S3=111S4=111S5=000S6=110S7=011S8=011出错位置 C0=0001111 No error receive=input C1=1001111 1 erroer occured in the position 0 system has change it C2=1101011 1 erroer occured in the position 5 system has change it C3=1101110 1 erroer occured in the position 3 system has change it C4=1000100 1 erroer occured in the position 3 system has change it C5=1101001 No error receive=input C6=1000101 1 erroer occured in the position 2 s
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 专业技能提升服务协议样本版B版
- 2024年鱼苗繁殖基地水产品包装与购销合同范本3篇
- 2024污水处理厂设计与施工承包合同
- 2024某医疗机构与某药品企业关于药品采购的合同
- 2025年度高效大棚租赁及配套设施更新服务协议3篇
- 2024版二手手机转让协议书
- 2024年租赁对讲设备合同范本3篇带眉脚
- 专业纸箱供应商2024年销售协议样本版A版
- 2-2 《大战中的插曲》说课稿 2024-2025学年统编版高中语文选择性必修上册
- 《低血糖生成指数稻谷(征集意见稿)》编制说明
- 项目前期投标文件技术标
- 钢箱梁计算分析与案例详解
- 苯酚及酚类37张课件
- 2021年上海期货交易所校园招聘笔试试题及答案解析
- 医联体综合绩效考核指标体系(医联体医院)
- DB12T 693-2016 天津市文书类电子文件数据存储结构规范
- 矿业煤矿企业NOSA安健环风险管理体系推行工作指南(2022版)
- 新项目开发商业计划书模板ppt
- 2021年中国华电集团公司组织架构和部门职能
- 林业标准林业调查规划设计收费依据及标准
- 数学归纳法原理第二归纳法跳跃归纳法反向归纳法
评论
0/150
提交评论