




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
信息论实验报告姓名班级学号胡小辉电子信息工程0902实验目的1、掌握哈夫曼编码、费诺编码、汉明码原理;2、熟练掌握哈夫曼树的生成方法;3、学会利用matlab、C语言等实现Huffman编码、费诺编码以及hamming编码。2.实验原理Huffman编码:哈夫曼树的定义:假设有n个权值,试构造一颗有n个叶子节点的二叉树,每个叶子带权值为wi,其中树带权路径最小的二叉树成为哈夫曼树或者最优二叉树;实现Huffman编码原理的步骤如下:首先将信源符号集中的符号按概率大小从大到小排列。用0和1表示概率最小的两个符号。可用0表示概率小的符号,也可用1表示概率小的符号,但整个编码需保持一致。将这两个概率最小的符号合并成一个符号,合并符号概率为最小概率之和,将合并后的符号与其余符号组成一个N-1的新信源符号集,称之为缩减符号集。对缩减符号集用步骤1,2操作以此类推,直到只剩两个符号,将0和1分别赋予它们。根据以上步骤,得到0,1赋值,画出Huffman码树,并从最后一个合并符号回朔得到Huffmaan编码。费诺编码:费诺编码的实现步骤:1、将信源消息符号按其出现的概率大小依次排列:。2、将依次排列的信源符号按概率值分为两大组,使两个组的
概率之和近似相同,并对各组赋予一个二进制码元“0”和“1”。3、将每一大组的信源符号再分为两组,使划分后的两个组的概率之和近似相同,并对各组赋予一个二进制符号“0”和“1”。4、如此重复,直至每个组只剩下一个信源符号为止。5、信源符号所对应的码字即为费诺码。hamming编码:若一致监督矩阵H的列是由不全为0且互不相同的所有二进制m(mN2的正整数)重组成,则由此H矩阵得到的线性分组码称为[2m-1,2m-1-m,3]汉明码。我们通过(7,4)汉明码的例子来说明如何具体构造这种码。设分组码(n,k)中,k=4,为能纠正一位误码,要求rN3。现取r=3,则n=k+r=7。我们用aaaaaaa表示这7个码元,用S、S、S表示由三个监督方程式计算得到的校123S1S2S3错码位置001a0010ai100a123S1S2S3错码位置001a0010ai100a2011a3S1S2S3错码位置101a4110a5111a6000无错码表1校正子和错码位置关系由表可知,当误码位置在a、a、a、a时,校正子S=1;否则S=0。因此有S2456111=a®a®a®a,同理有S=a㊉a㊉a㊉a和S=a㊉a㊉a㊉a。在编码时a、654226531364306a、a、a为信息码元,a、a、a为监督码元。则监督码元可由以下监督方程唯543210一确定6542=0/…八a㊉a㊉a㊉a(1.1.1)也即Ca=a㊉a㊉a2654ya=a㊉a㊉a(1.1.2)aa㊉a㊉aJ0=643由上面方程可得到表2所示的16个许用码组。在接收端收到每个码组后,计算出S「s2、s3,如果不全为0,则表示存在错误,可以由表1确定错误位置并予以纠正。举个例子,假设收到码组为0000011,可算出S1S2S3=011,由表1可知在气上有一误码。通过观察可以看出,上述(7,4)码的最小码距为1讪=3,纠正一个误码或检测两个误码。如果超出纠错能力则反而会因“乱纠”出现新的误码.信息位监督位信息位监督位aaaaaaaaaaaaaa654321065432100000000100011100010111001100001010110100100011110101100101001101100001010110111010100110011111010001110001111111表2(7,4)汉明码的许用码组3.1(7,4)汉明码的编码思路(7,4)汉明码的编码就是将输入的四位信息码编成七位的汉明码,即加入三位监督位。根据式(2.2.0)A=[a6a5a4a3]・G可知,信息码与生成矩阵G的乘积就是编好以后的(7,4)汉明码,而生成矩阵G又是已知的,由式(1.1.9)得所以,厂1000G=01000010V0001可以得111[110101011J出如下方程组
a3—a3a2a3—a3a2a1a0a5a4a+6a6+a6+a—a66—a5—a4a+a54a+a53a+a433.实验过程及结果1、哈弗曼编码例如:当p1-0.3、p2-0.15、p3-0.05、p4-0.1、p5-0.4则根据其原理得到的matlab程序如下:clc;clear;A-[0.3,0.15,0.05,0.1,0.4];%信源消息的概率序列A-fliplr(sort(A));%按降序排列T—A;[m,n]-size(A);B-zeros(n,n-1);%空的编码表(矩阵)fori—1:nB(i,1)-T(i);%生成编码表的第一列endr-B(i,1)+B(i-1,1);%最后两个元素相加T(n-1)—r;T(n)—0;T-fliplr(sort(T));t—n-1;forj-2:n-1%生成编码表的其他各列fori—1:tB(i,j)—T(i);endK=find(T==r);B(n,j)=K(end);%从第二列开始,每列的最后一个元素记录特征元素在%该列的位置r=(B(t-1,j)+B(t,j));%最后两个元素相加T(t-1)=r;T(t)=0;T=fliplr(sort(T));t=t-1;endB;%输出编码表END1=sym('[0,1]');%给最后一列的元素编码END=END1;t=3;d=1;forj=n-2:-1:1%从倒数第二列开始依次对各列元素编码fori=1:t-2ifi>1&B(i,j)==B(i-1,j)d=d+1;elsed=1;endB(B(n,j+1),j+1)=-1;temp=B(:,j+1);x=find(temp==B(i,j));END(i)=END1(x(d));endy=B(n,j+1);END(t-1)=[char(END1(y)),'0'];END(t)=[char(END1(y)),'1'];t=t+1;END1=END;endA%排序后的原概率序列END%编码结果fori=1:n[a,b]=size(char(END(i)));L(i)=b;endavlen二sum(L.*A)%平均码长H1=log2(A);H=-A*(H1')%熵P=H/avlen%编码效率输出结果:A=0.40000.30000.15000.1QQ00.0500END=LljOljOQLQQQOjQQQL]avlen=2.0500H二2.0087P=0.9799费诺编码:同样,例如:p1=0.3、p2=0.15、p3=0.05、p4=0.1、p5=0.4时根据其原理所得到的matlab程序如下:clc;clear;A=[0.3,0.15,0.05,0.1,0.4];A=fliplr(sort(A));%降序排列[m,n]=size(A);fori=1:nB(i,1)=A(i);%生成B的第1列end%生成B第2列的元素a=sum(B(:,1))/2;fork=1:n-1ifabs(sum(B(1:k,1))-a)<=abs(sum(B(1:k+1,1))-a)break;endendfori=1:n%生成B第2列的元素ifi<=kB(i,2)=0;elseB(i,2)=1;endend%生成第一次编码的结果END=B(:,2)';END=sym(END);%生成第3列及以后几列的各元素j=3;while(j〜=0)p=1;while(p<=n)x=B(p,j-1);forq=p:nifx==-1break;elseifB(q,j-1)==xy=1;continue;elsey=0;break;endendendify==1q=q+1;endifq=plq-p=1B(p,j)=-1;elseifq-p==2B(p,j)=0;END(p)=[char(END(p)),'0'];B(q-1,j)=1;END(q-1)=[char(END(q-1)),'1'];elsea=sum(B(p:q-1,1))/2;fork=p:q-2ifabs(sum(B(p:k,1))-a)<=abs(sum(B(p:k+1,1))-a);break;endendfori=p:q-1ifi<=kB(i,j)=0;END(i)=[char(END(i)),'0'];elseB(i,j)=1;END(i)=[char(END(i)),'1'];endendendendp=q;endC=B(:,j);D=find(C==-1);[e,f]=size(D);ife==nj=0;elsej=j+1;endendBAENDfori=1:n[u,v]=size(char(END(i)));L(i)=v;endavlen=sum(L.*A)输出结果:0.40000-1.0000-1.0000-1.0000-i.oaoo0.30001.00000-1.0000-1.0000-1.00000.15001.0000i.oaoo0-1.0000-i.oaoo0.10001.0000i.oaoo1.00000-i.oaoo0.05001.00001.OWNl.QOOQ1.0000-i.oaooA二0.40000.30000.1500O.10000.0500END二[0;10;1IO,1UOj1111]avlen=2.0500汉明码:
clc;clear;close;N=100;display('随机产生二进制信源消息序列:');[a]=randint(1,100);%************转换矩阵[a]for%************转换矩阵[a]forj=0:(4-1)P(i+1,j+1)=a(j+i*4+1);endend[P]%functiong=hammingdecod(R)%H=input('生成汉明码:');H=[1110100;1101010;1011001];%生成汉明码G=[1000111;0100110;0010101;0001011]%(7,4)汉明码的生成矩阵%t=input('输入0或1:');%t=0则产生(7,4)汉明码,t=1则对输入序列进行编码%ift==1c=mod(P*G,2);%编码的码字c%function[X]=turnRow(c)n=size(c);fori=0:(n(1)-1)forj=0:(n(2)-1)X(j+i*n(2)+1)=c(i+1,j+1);endendX1=randerr(1,175,1);%************相加Q=mod(X1+X,2);%************转换矩阵X1%**********编码fori=0:(length(Q)/7-1)forj=0:(7-1)Q1(i+1,j+1)=Q(j+i*7+1);endenddisp(输出编码后序列为:');Q1Z=mod(Q1*H',2);%**********编码n=size(Z);%T=T();fori=0:(n(1)-1)T(i+1)=4*Z(i+1,1)+2*Z(i+1,2)+Z(i+1,3);ifT(i+1)Q1(i+1,8-T(i+1))=1-Q1(i+1,8-T(i+1));endendT=Q1;disp('(经过信道后变为:');T%**************译码functionC=yima(B,k)n=size(T);fori=1:n(1)forj=1:4C(i,j)=T(i,j);endenddisp('输出译码序列:');disp(C);输出结果:1i011001]1011010011110111110101a00011010a0110001i101i00ai01ai01ii11□Q010101a001□q11ii01i010ai110i000(经过信道后壹为:Q1=11101110011。1000100Qaoiiiaio1Q1100100011100111100LD10ol1a0ald]a]oo1o]logo]LD0]000aa0000000000000000000□a0a0a000000aa00Q0000aa00a0000000000i]L000□000000001101010100110011
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2025学年火电电力职业鉴定试题预测试卷及参考答案详解(综合题)
- 重难点自考专业(行政管理)试题附完整答案【全优】
- 静脉采血知识培训
- 2026届浙江省湖州市南浔区实验学校九上化学期中检测模拟试题含解析
- 库卡机器人进阶培训
- 福建省泉州市第八中学2026届英语九上期末学业水平测试试题含解析
- 2026届江苏省常州市金坛区水北中学英语九上期末教学质量检测试题含解析
- 企业培训师上课
- 2026届山东省滨州市滨城区东城中学化学九年级第一学期期中统考试题含解析
- 2026届四川省成都市石室天府中学九年级化学第一学期期末复习检测试题含解析
- 标准化作业管理制度
- 增值税纳税实务课件
- 2025年油气工程行业研究报告及未来发展趋势预测
- 跨境电商中消费者行为模式分析
- 附睾结核护理查房
- 安全环保教育培训记录
- 眩晕综合征护理常规
- 加强团队协议书范本
- 2025精益生产管理培训
- 公寓开荒保洁方案(3篇)
- 小儿雾化护理说课
评论
0/150
提交评论