信息论与编码matlab
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
信息论实验报告
姓名胡小辉
班级电子信息工程0902
学号 0909091112
1.实验目的
1、掌握哈夫曼编码、费诺编码、汉明码原理;
2、熟练掌握哈夫曼树的生成方法;
3、学会利用matlab、C语言等实现Huffman编码、费诺编码以及hamming编码。
2.实验原理
Huffman编码:
哈夫曼树的定义:假设有n个权值,试构造一颗有n个叶子节点的二叉树,每个叶子带权值为wi,其中树带权路径最小的二叉树成为哈夫曼树或者最优二叉树;
实现Huffman编码原理的步骤如下:
1. 首先将信源符号集中的符号按概率大小从大到小排列。
2. 用0和1表示概率最小的两个符号。可用0表示概率小的
符
号,也可用1表示概率小的符号,但整个编码需保持一致。
3. 将这两个概率最小的符号合并成一个符号,合并符号概率
为
最小概率之和,将合并后的符号与其余符号组成一个N-1的新信源符号集,称之为缩减符号集。
4. 对缩减符号集用步骤1,2操作
5. 以此类推,直到只剩两个符号,将0和1分别赋予它们。
6. 根据以上步骤,得到0,1赋值,画出Huffman码树,并从
最
后一个合并符号回朔得到Huffmaan编码。
费诺编码:
费诺编码的实现步骤:
1、将信源消息符号按其出现的概率大小依次排列:。
2、将依次排列的信源符号按概率值分为两大组,使两个组的
概率之和近似相同,并对各组赋予一个二进制码元“0”和“1”。
3、将每一大组的信源符号再分为两组,使划分后的两个组的
概率之和近似相同,并对各组赋予一个二进制符号“0”和“1”。
4、如此重复,直至每个组只剩下一个信源符号为止。
5、信源符号所对应的码字即为费诺码。
hamming编码:
若一致监督矩阵H 的列是由不全为0且互不相同的所有二进制m(m≥2的正整数)重组成,则由此H矩阵得到的线性分组码称为[2m-1,2m-1-m,3]汉明码。
我们通过(7,4)汉明码的例子来说明如何具体构造这种码。设分组码(n,k)中,k = 4,为能纠正一位误码,要求r≥3。现取r=3,则n=k+r=7。我们
用a
0a
l
a
2
a
3
a
4
a
5
a
6
表示这7个码元,用S
1
、S
2
、S
3
表示由三个监督方程式计算得到的校
正子,并假设三位S
1、S
2
、S
3
校正子码组与误码位置的对应关系如表1所示。
表1 校正子和错码位置关系
由表可知,当误码位置在a
2、a
4
、a
5
、a
6
时,校正子S
1
=1;否则S
1
=0。因此有S
1
=a
6⊕a
5
⊕a
4
⊕a
2
,同理有S
2
=a
6
⊕a
5
⊕a
3
⊕a
1
和S
3
=a
6
⊕a
4
⊕a
3
⊕a
。在编码时a
6
、
a 5、a
4
、a
3
为信息码元,a
2
、a
1
、a
为监督码元。则监督码元可由以下监督方程唯
一确定
a 6⊕a
5
⊕a
4
⊕a
2 = 0
a 6⊕a
5
⊕a
3
⊕a
1 = 0
(1.1.1)
a 6⊕a
4
⊕a
3
⊕a
0 = 0
也即
a 2=a 6⊕a 5⊕a 4
a 1=a 6⊕a 5⊕a 3 (
1.1.2)
a 0 = a 6⊕a 4⊕a 3
由上面方程可得到表2所示的16个许用码组。在接收端收到每个码组后,计算出S 1、S 2、S 3,如果不全为0,则表示存在错误,可以由表1确定错误位置并予以纠正。举个例子,假设收到码组为0000011,可算出S 1S 2S 3=011,由表1可知在a 3上有一误码。通过观察可以看出,上述(7,4)码的最小码距为d min =3,纠正一个误码或检测两个误码。如果超出纠错能力则反而会因“乱纠”出现新的误码.
表2 (7,4)汉明码的许用码组
3.1 (7,4)汉明码的编码思路
(7,4)汉明码的编码就是将输入的四位信息码编成七位的汉明码,即加入三位监督位。根据式(2.2.0)A = [a 6 a 5 a 4 a 3] ·G 可知,信息码与生成矩阵G 的乘积就是编好以后的(7,4)汉明码,而生成矩阵G 又是已知的,由式(1.1.9)得
1 0 0 0 1 1 1
G = 0 1 0 0 1 1 0 0 0 1 0 1 0 1 0 0 0 1 0 1 1