信息论与编码实验报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

信息论与编码基础实验报告
学院: 队别: 专业: 姓名: 学号:
电子科学与工程学院 二队 06 级 通信工程专业 曹务绅 200604015014
国防科学技术大学电子科学与工程学院
1

汉明码编译码
一、 实验目的
通过本次实验的练习, 进一步巩固了信道编码的基本原理, 掌握了Hamming 码编译码方法,提高了软硬件操作能力,培养了实验人员理论结合实践的能力。
二、 实验原理
(一)汉明码: 汉明码是在原编码的基础上附加一部分代码,使其满足纠错码的条件。它属 于线性分组码, 由于汉明码的抗干扰能力较强, 至今仍是应用比较广泛的一类码。 它具有以下特征: 码 长: n = 2m − 1
信息位数: k = 2 m − m − 1 监督码位: r = n − k = m 最小码距: d = 3 纠错能力: t = 1 (二)汉明码的编码: 在(n,k)汉明码中, (n-k)个附加的监督码元是由信息码元的线性运算产生 的。码长为 n,信息码元长度为 k,2k 个码组构成 n 维线性空间中的一个 k 维子 空间,编码的实质就是要在 n 维空间中,找出一组长为 n 的 k 个线性无关的矢 量 g0 g1 g k −1 ,使得每个码组 c 都可以表示为 k 个矢量的线性组合,即 c0 ] = mk −1 g 0 + mk − 2 g1 + m0 g k −1 其中, m i∈{0,1}, i=0,
c = [cn −1 cn − 2
1,……,k-1。将上式写成矩阵形式得
2

C = [ mk −1
mk − 2
⎡ g0 ⎤ ⎢ ⎥ ⎢ g1 ⎥ m0 ] ⎢ ⎥ = MG ⎢ ⎥ ⎢ g k −1 ⎥ ⎣ ⎦
由此, [ mk −1
mk − 2
m0 ] 是带编码信息的信息组,G是一个k*n阶矩阵,
G称为(n,k)汉明码的生成矩阵。当G确定以后,编码的问题也就解决了。 在实际的硬件实现中,经常利用除法电路实现循环汉明码的编译码,这样可 以大大简化编译码的电路,详细解释见思考题1. (三)汉明码的译码: 对于汉明码,由于其属于线性分组码,所以后者的各种译码方式都适用于汉 明码的译码。对于(7,4)汉明码来讲,其监督元有 3 位,故一致校验矩阵 H 为一个 3 行 7 列的矩阵,且 H 矩阵正是由 7 个非零 3 重作列矢量构成的。如下 图所示:
⎡1 1 1 0 1 0 0 ⎤ H = ⎢0 1 1 1 0 1 0⎥ ⎢ ⎥ ⎢1 1 0 1 0 0 1 ⎥ ⎣ ⎦
观察上面的一致校验矩阵我们可以发现,对于纠一位错误来说,生成的伴随 式的值就等于对应的 H 列向量,即错误位置。对于接收到的码字 R,若计算出来 的伴随式 S 与 H 的第 i 列相同,则可以判断接收码字 R 一定出错了,而且错误 位置在第 i 位。由此可以明显看出,对于汉明码,采用伴随式译码简化译码中纠 检错过程, 这也是在实际中伴随式译码在汉明码的译码中得到大量应用一个重要 原因。
三、 设计思想
3

从自己的实际出发, MATLAB 的应用上要比 C++或者 C#要熟练, 在 所以选择 利用 MATLAB 作为基础的实验平台。 如下图所示,一般的通信系统就是由以下几个部分组成,本次实验模拟的就 是虚线框图里的若干部分,即“编码—传输—译码“。 信 源 信 源 编 码 信 道 编 码 信 道 译 码 信 源 译 码 信 宿
信道
噪声
图一:通信系统的一般组成
1、 基本功能的设计实现 针对实验要求的仿真内容,选定一种比较典型的汉明码——(7, 4)码, 由实验原理中的论述可知,汉明码是分组码的一种,实现汉明码的编译吗过程, 关键在于以下几个环节。 编码方式的选择:针对汉明码的 2 种比较普遍的编码方式,我选择利用 生成多项式产生汉明码,一是考虑到这种方法本身具有简单、明了的特点,且 在 MATLAB 中实现较容易。二是在程序界面的设计中,要求用户可以任意输 入信息序列,即 M,采用生成矩阵法可以很灵活的由 C=MG 得到编码之后的 序列,便于之后的处理。 构造生成矩阵 G,对于(7,4)系统分组码,其比较典型的一种生成矩 阵如下所示:
4

⎡1 ⎢0 G=⎢ ⎢0 ⎢ ⎣0
0 1 0 0
0 0 1 0
0 0 0 1
1 1 1 0
0 1 1 1
1⎤ 1⎥ ⎥ 0⎥ ⎥ 1⎦
对于用户输入的任意长度的信息序列 I,首先对其进行 4 个一行的分组,以得 到我们所要求的信息元 M,再和 G 做矩阵乘法后,即可得到所对应的长度为 7 个一个码字。将各码字连成一维长列,显示并在信道中传输。 信道模型的选择:在码字的传输过程中,信道的模型以及转移概率的大 小直接影响接收端接收数据的可靠性, 为方便分析, 此次设计采用较基本的 BSC (binary symmetric channel)信道,其错传概率 P 即可以模拟信道中噪声的 大小。在仿真过程中,准备通过程序来实现错误概率 P 的可调(P∈[0,1]) ,用 来模拟不同程度的噪声对码字传输以及对接收端译码性能的影响;当 P=0 时, 即实现对无噪无损信道的模拟。 在 MATLAB 里,函数 bsc(C,p)可以很方便的模拟二元对称信道的传输情 况,且 p 可以由用户任意赋值(P∈[0,1]) 。 译码功能的设计:此环节是实验的重点,也是难点。原理中已经论 证了伴随式译码的优点,在此模块的设计中也采取这种译码方式。首先由 G 得 到相应的一致校验矩阵 H:
⎡1 1 1 0 1 0 0 ⎤ H = ⎢0 1 1 1 0 1 0⎥ ⎢ ⎥ ⎢1 1 0 1 0 0 1 ⎥ ⎣ ⎦
接收端在从信道中接收并存储序列 I’后, 首先要完成对其 7 个一行的分组, 每一行也就是接收到的一个码字 R(可能已经有了错误码元) 。求的 R 的伴随 式 S,通过程序判断 S 与 H 的哪一行相同,则错误就出现在哪一位,否则,接 收码字无误。最后由 C=R+E(E 为错误图样)来恢复码字,实现纠错。
5

相关文档
最新文档