信息论课程设计(2)
信息论课程教学大纲

信息论课程教学大纲Information Theory一、课程教学目标1、任务和地位:信息论是由Shannon奠基的一门数学学科,它产生于有效而可靠的通信问题中,并获得了广泛应用。
编码技术是信息论的重要分支的基础。
它在通信和计算机工程实践中得到了广泛的应用,成为通信系统设计中的一项通用技术。
通过本课程的学习,使学生对信息理论有一个比较全面和系统的了解,掌握信息论的基本概念和信息论方法,为从事信息科学的研究和应用打下一个坚实的基础。
课程以信号和信道的知识为基础,讲述信息论的基本概念,信源编码、信道编码和伪随机码的基本知识。
2、知识要求:通过一个学期的学习要达到如下要求:1)掌握平均信息量—熵的概念,了解信息论的基本知识和信道容量的计算。
2)掌握信源编码的意义,了解提高信息传输“有效性”的方法,掌握平均码长的计算和最佳信源编码的概念,通过仙农定理导出霍夫曼编码规则。
3)掌握信道编码的意义,了解提高信息传输“可靠性”的方法,掌握纠错编码的基本概念,重点讲解线性分组码的检错能力,介绍卷积码基本概念。
4)掌握伪随机码的基本概念,m序列码的产生及应用。
先修课程:信号与系统、数字逻辑电路、微机原理与应用、通信原理。
3、能力要求:本课程重点是通过讲解信息论与编码技术使学生掌握提高信道传输的“有效性”和“可靠性”的基本理论。
二、教学内容的基本要求和学时分配1.信息论与编码课程教学学时数分配表:2.具体要求第一章绪论[目的要求]了解信息论的产生、发展、应用,为以后学习打下基础[教学内容] 信息论研究的内容,信息的基本概念,通信系统模型及模型中各部分的作用,编码的种类[重点难点] 讲清通信系统模型及模型中各部分的作用。
[教学方法] 书本与多媒体课件相结合[作业] 无[课时] 3学时第二章信源及信源熵[目的要求] 弄清信源及信源熵的概念,深刻理解最大熵定理[教学内容] 信息论的基本概念,包括自信息量、条件自信息量、互信息量、条件互信息量、平均互信息量、单符号熵、熵的性质以及连续信源熵、最大熵定理和随机序列的熵等,解释冗余度的由来及作用[重点难点]重点是信息量、平均信息量、最大熵定理等概念的理解,难点是运用这些概念解决分析问题[教学方法] 书本与多媒体课件相结合,讲授与课堂讨论相结合[作业] 读书笔记一篇[课时] 9学时第三章无失真信源编码[目的要求] 掌握信源编码的意义,掌握最佳信源编码的概念及编码方法[教学内容] 无失真信源编码定理,包括定长编码定理和变长编码定理,详细阐述最佳编码中的香农码、费诺码和霍夫曼码的编码方法及其性能比较[重点难点]重点是香农码、费诺码和哈夫曼码为代表的最佳码的编码方法,难点是对无失真信源编码定理的理解。
信息理论基础第三版教学设计

信息理论基础第三版教学设计
一、教学目标
本教学设计旨在通过教学,使得学生了解信息理论的基本概念,对信息量、熵、信源编码、信道编码等概念有深入的认识,并且能够应用到实际问题中,还要提高学生的分析问题和解决问题的能力。
二、教学内容与方法
2.1 课程模块设计
本课程分为四个模块,分别是:
•信息论基础
•信息量和熵
•信源编码和信道编码
•应用案例分析
2.2 教学方法与策略
•理论知识讲解:采用板书和PPT形式,详细讲解各个概念和定理的含义,同时给出简单的数学公式。
•课堂探讨:引导学生讨论和分析课程内容相关的实际问题。
•实例演练:给学生提供一些实例,让他们应用所学知识进行问题分析和解决,同时让学生发挥创新能力,探索问题的多种解决方案。
三、教学评价
3.1 评价方式
•学生课堂发言的质量和数量
•期末试卷的成绩
•学生的作业质量
3.2 评价标准
•学生课堂发言的质量和数量:能够准确表述自己的观点,对问题有深刻的理解和认识,能够与其他学生进行讨论和交流。
•期末试卷的成绩:能够准确理解概念,运用所学知识进行问题分析和解决。
•学生的作业质量:能够独立完成作业,从而展示出对所学知识的理解和应用能力。
四、总结
通过本次教学,学生们对信息理论的基本概念、信息量、熵、信源编码和信道编码等方面有了更深的认识。
通过实例演练的过程,学生也能够应用所学知识进行问题分析和解决,同时提高了他们的信息分析和解决问题的能力。
注:本文档仅为示范文档,如有不妥之处,敬请谅解。
信息论与编码课程设计 河南理工大学

一设计目的信息论与编码是我们电子信息工程的一门重要的专业课,通过对本次课程设计,学习将学到的理论知识用于实践,同时也学习了用软件编写程序,进一步对本课程知识的巩固和理解。
学习分析问题,解决问题的方法和途径,提高对本专业的学习兴趣。
二设计任务与要求(1)统计信源熵要求:统计任意文本文件中各字符(不区分大小写)数量,计算字符概率,并计算信源熵。
(2)哈夫曼编码要求:任意输入消息概率,利用哈夫曼编码方法进行编码,并计算信源熵和编码效率。
三理论简介3.1通信系统的模型通信系统的模型通信系统的性能指标主要是有效性、可靠性、安全性和经济性,通信系统优化就是使这些指标达到最佳,除了经济性,这些指标正是信息论的研究对象,可以通过各种编码处理来使通信系统的性能最优化。
根据信息论的各种编码定理和上述通信系统的指标,编码问题可以分为3类:信源编码、信道编码和加密编码。
3.1.1 信源编码由于信源符号之间存在分布不均匀和相关性,使得信源存在冗余度,信源编码的主要任务就是减少冗余度,提高编码效率。
信源编码的基础是信息论中的两个编码定理:无失真编码定理和限失真编码定理。
前者适用于离散信源或数字信号;后者主要用于连续信源或模拟信号。
本次课程设计就是利用的无失真信源编码。
3.1.2 信道编码信源编码器的作用:把信源发出的消息变换成由二进制码元(或多进制码元)组成的代码组,这种代码组就是基带信号。
同时通过信源编码可以压缩信源的冗余度,以提高通信系统传输消息的效率。
信源译码器的作用:把信道译码器输出的代码组变换成信宿所需要的消息形式,它的作用相当于信源编码器的逆过程。
3.1.3 加密编码加密编码是研究如何隐蔽消息中的信息内容,以便在传输过程中不被窃听,提高通信系统的安全性。
3.2 信源熵3.2.1 信源的描述和分类& 按信源在时间和幅度上的分布情况离散信源:文字、数据、电报连续信源:语音、图像& 按发出符号的数量单个符号信源:指信源每次只发出一个符号代表一个消息符号序列信源:指信源每次发出一组含二个以上符号的符号序列代表一个消息 & 按符号间的关系无记忆信源有记忆信源3.2.2 离散信源熵& 自信息量:随机事件的自信息量定义为其概率对数的负值,即在信息论中常用的对数底是2,信息量的单位为比特(bit);& 联合自信息量两个消息xi ,yj 同时出现的联合自信息量:& 条件自信息量在事件yj 出现的条件下,随机事件xi 发生的条件概率为p(xi / yj) ,则它的条件自信息量定义为条件概率对数的负值:& 离散信源熵为信源中各个符号不确定度的数学期望,即单位为:比特/符号 或者 比特/符号序列。
网络信息论--NetworkInformationTheory课程设计 (2)

网络信息论–Network Information Theory课程设计一、课程介绍本课程是一门关于网络信息论的课程。
网络信息论研究信息的传输与处理在网络中的表现和性质。
该领域集合了众多学科,如信息论、图论、通信工程、概率论等,旨在研究网络中信息的可靠传输、冗余度、流量控制等问题。
本课程旨在探究网络信息论的基础概念、理论模型等,并针对一些具体应用场景进行案例分析和实践操作,培养学生的网络信息理论分析与实践操作能力,为学生后续学习和工作提供实际帮助。
二、课程内容1. 网络信息论基础概念•信息熵的概念及其性质•香农定理的基本内容和应用•线性编码与解码基础•多元信源的熵与互信息•无限搜索与无错误译码2. 网络信息论的应用•流量控制方法的基本概念•博弈论与网络信息论的联系•无线电子通信中的网络信息论应用•信息分类与网络流量调度3. 网络信息论实践操作•使用MATLAB进行线性编码的实现•实践操作:误码率以及复杂度分析•搭建网络模型进行无线通信场景的仿真实验•基于网络信息论的数据传输及处理实验三、课程学习成果通过学习本课程,学生们可以掌握网络信息论的基本概念、理论模型和应用场景,并能够进行一定的实践操作。
具体包括:•掌握网络信息论的基本概念、理论模型和应用场景•能够进行网络信息论的核心算法实现和代码分析•能够解决网络信息传输中出现的问题并提出对策•具备应用网络信息论进行数据传输和处理的基本能力四、参考文献1.Cover, T.M., and Thomas, J.A. Elements of Information Theory.John Wiley & Sons, 2006.2.El Gamal, A., and Kim, Y. Network Information Theory.Cambridge University Press, 2011.3.Zhang, C., Lau, V.K.N., and Liew, S.C. “Informationtheoretical study of dynamic complexity of networks,” IEEETransactions on Information Theory, 2017,DOI:10.1109/TIT.2017.2736998.4.Liang, Y., Wen, C-K., and Poor, H.V. An introduction tonetwork information theory. Springer Science & Business Media,2011.5.Yeung, R.W. A First Course in Information Theory. Springer-Verlag New York, 2002.以上内容基于网络信息论课程的设计和实践,旨在为学生提供一门全面了解信息传输的关键概念、理论模型和应用的课程。
信息论课程设计报告

成绩:2016-2017学年第1学期《信息论》课程设计学院名称:班级学号:学生姓名:教师姓名:2016年 12 月一、判定唯一可译码1. 任务说明输入:任意的一个码(即已知码字个数及每个具体的码字)输出:判决结果(是/不是)输入文件:,含至少2组码,每组的结尾为”$”符输出文件:,对每组码的判断结果说明:为了简化设计,可以假定码字为0,1串2. 实现原理判断方法:将码C中所有码字可能的尾随后缀组成一个集合F,当且仅当集合F中没有包含任一码字,则可判断此码C为唯一可译变长码。
构成集合F :首先观察码C 中最短的码字是否是其他码字的前缀。
若是,将其所有可能 的尾随后缀排列出。
就是将其他码字序列中截去与其最短码字相同的前缀 部分,将余下的序列为尾随后缀。
而这些尾随后缀又可能是某些码字的前 缀,或者最短码字又仍是这些尾随后缀的前缀,再将由这些尾随后缀产生 的新的尾随后缀列出。
然后再观察这些新的尾随后缀是否是某些码字的前 缀,或观察有否其他码字是这些新的尾随后缀的前缀,再将产生的尾随后 缀列出,依次下去,直至没有一个尾随后缀是码字的前缀或没有新的尾随 后缀产生为止。
这样,首先获得的是由最短码字能引起的所有尾随后缀。
接着,按照上述步骤将次短的码字、......所有码字可能产生的尾随后缀前部列出。
由此得到由码C 的所有可能的尾随后缀组成的集合F 。
参考算法伪代码:For all ,i j W W C ∈ doif i W 是j W 的前缀 then将相应的后缀作为一个尾随后缀放入集合0F 中End ifEnd forLoopFor all i W C ∈ doFor all j n W F ∈ doif i W 是j W 的前缀 then将相应的后缀作为一个尾随后缀放入集合1n F +中Else if j W 是i W 的前缀 then将相应的后缀作为一个尾随后缀放入集合1n F +中End ifEnd forEnd forIf ,i i W F W C ∃∈∈ thenReturn falseElse if F 中未出现新的元素 thenReturn trueEnd if实现源码#include <iostream>#include <fstream>#include <>#include <>using namespace std;#pragma warning (disable :4996)char c[100][50]; 运行结果输入文件:说明:输入文件中第一个数字表示码的组数,第二个数字表示一组码码字的个数,一组码结束以“$”符号结尾;“$”符号后的数字表示下一组码的码字个数。
《信息论》课程介绍

《信息论》课程介绍摘要:一、课程背景二、课程目标三、课程内容1.信息论基本概念2.信息熵与信息量3.信道容量与信源编码4.信道编码与解码5.信息论在实际应用中的发展四、课程学习方法与要求正文:《信息论》课程是一门理论性较强的课程,主要研究信息传输、信息处理、信号检测等领域的基本理论。
通过本课程的学习,学生将掌握信息论的基本概念、基本原理和计算方法,了解信息论在实际应用中的发展,提高解决实际问题的能力。
一、课程背景信息论是20 世纪40 年代由香农(Claude Shannon)创立的,它是一门研究信息、通信、计算等领域的理论基础。
信息论不仅关注信息的量度,还关注信息传输的效率和可靠性等问题。
随着信息技术的迅速发展,信息论已成为现代通信技术、数据压缩、信号处理等领域的理论基石。
二、课程目标通过本课程的学习,学生将能够:1.理解信息论的基本概念、基本原理和计算方法;2.掌握信息熵、信息量、信道容量等基本概念,并会进行计算;3.了解信源编码、信道编码和解码的基本原理和方法;4.熟悉信息论在实际应用中的发展,提高解决实际问题的能力。
三、课程内容本课程主要包括以下内容:1.信息论基本概念:包括信息、熵、信息量、信道容量等基本概念,以及它们之间的关系。
2.信息熵与信息量:详细介绍信息熵的定义、性质和计算方法,以及信息量的概念和计算方法。
3.信道容量与信源编码:介绍信道容量的定义、性质和计算方法,以及信源编码的基本原理和方法。
4.信道编码与解码:介绍信道编码的基本原理和方法,以及解码的原理和过程。
5.信息论在实际应用中的发展:介绍信息论在通信技术、数据压缩、信号处理等领域的应用和发展。
四、课程学习方法与要求1.认真阅读教材,掌握课程的基本概念、基本原理和计算方法;2.积极参与课堂讨论,提高解决实际问题的能力;3.完成课后习题,巩固所学知识;4.结合实际应用,加深对课程内容的理解。
信息论与编码第三版教学设计 (2)

信息论与编码第三版教学设计课程教学目标本教学设计旨在通过对信息论与编码课程的讲解,使得学生能够理解信息的本质、量化信息的方法和信息在传输过程中的编码与解码技术。
同时培养学生的问题分析和解决问题的能力,开阔学生的科学思维视野。
课程大纲第一章课程介绍•课程目标和教学要求•课程内容简介•课程参考资料第二章信息的产生、表示和处理•信息的产生与传播•信息的表示与处理•信息量的概念和度量第三章熵、信息源以及离散无记忆信源的信息压缩•熵的定义和计算•信息源和信源模型•布劳德算法、霍夫曼编码和算术编码第四章总结无记忆信源的信息压缩•Fano-编码•信息源整体编码•高斯信源和均匀信源的信息率第五章离散有记忆信源的信息压缩•有记忆信源的熵与马尔可夫模型•上下文相关编码和自适应编码第六章通信系统与信道容量•简单通信系统模型•信道的概念与性质•香农极限与信道容量第七章传输信道上的编码•误差控制编码•矩阵和循环码•卷积码和码间干扰第八章内容完备的编码原理•信息多路传输和信道编码•带宽可接受信道的编码原理•分布式压缩与广播教学方法本课程采用讲授、讨论和实验相结合的教学方式。
每周教师讲授一定的叙述知识,随后进行课堂讨论,让学生探讨问题思路和解决方案。
每学期安排至少4次专题讲座,由特邀嘉宾或学生进行分组报告,向全班分享课程相关的研究和应用案例。
另外,本课程将结合MATLAB等相关软件,进行实验教学。
让学生通过编写相关程序,亲手实践信息编码算法,进一步加深对知识理论的理解和掌握。
评价方式本课程评价方式主要以作业、考试和实验三项为主。
其中,每周布置一定量的作业,要求学生灵活运用所学知识,并有一定程度的创新性。
每学期安排两次闭卷考试,考查学生对知识的掌握情况。
此外,每学期安排至少3个实验项目,旨在让学生学以致用,培养学生的问题解决和创新能力。
结语信息论与编码是计算机科学与电子信息工程领域中非常重要的一门基础课程。
希望通过本教学设计,能够深度挖掘信息论与编码的理论研究,加强学生对科学方法论的认识,培养出具有科学素养和创新意识的优秀人才。
信息论基础教学教案-信息论知识总结

送端发送 ai 的概率,称为后验概率。收信者获得的信息量定义为互信息, 即收信者在收到消息(符号)b j 后,已经消除的关于 ai 的不确定性。因此, 互信息就是先验的不确定性减去尚存在的不确定性,其定义为
I
(ai
;bj
)
log
1 P(ai
)
log
1 P(ai
bj
)
3
《信息论基础》教案
本节小结
1. 消息和信息的概念以及信息、消息和信号之间的关系
2. 香农信息的含义和度量
自信息
I (ai
)
log
1 P(ai
)
log
P(ai
)
互信息
I
(ai
;
bj
)
log
1 P(ai
)
log
1 P(ai
bj
)
教学方法 时 和手段 间
利用多媒 体演示, 分条目进 10 行总结
4
《信息论基础》教案
教学章节 教学目的
教学内容 教学重点 教学难点
教学方式
授课时间
第一章绪论 1. 理解信息论的研究对象、目的和内容 2. 了解信息论的发展简史与现状 1. 信息论的研究对象、目的和内容 2. 信息论的发展简史与现状 1. 信息论的研究对象、目的和内容 1. 信息论的研究对象、目的和内容 以多媒体电子教案为主讲解主要内容,以板书为辅将知识点和方法明确化; 采取结合例子 讲授、逐 步深入、分 析的方法 进行讲解, 并着重强 调各种概 念的物理意义。 1 学时
状态(是否正确和可靠),因此,消息是千变万化的、不规则的以及 学生,讲解
随机的。
信息和消息
2、信息
概念,以及
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
电子科技大学电子工程学院信息论课程设计报告课程名称:信息编码与加密课程设计报告学生姓名:农瀚学号:21 指导教师:李万春一、课程设计名称:编程实现霍夫曼、费诺、香农编码二、课设原理:1)霍夫曼编码:霍夫曼编码的平均码长最短,是最佳编码。
编码步骤如下:(1 )将信源符号按概率大小排序;(2)对概率最小的两个符号求其概率之和,同时给两幅号分别赋予码元0和1 ;(3)将概率之和当做一个新符号的概率。
与剩下的概率一起,形成一个缩减信源,再重复上述步骤,直到概率和为1为止;(4)按上述步骤实际上构成了一个码树,从根到端点经过的树枝即为码字。
2)费诺编码:编码步骤如下:(1)将信源概率从大到小排序;(2)将信源符号分成两组,使两组信源符号的概率之和近似相等,并给两组信源符号分别赋0和1;(3)再把各个小组的信源符号细分为两组并赋码元,方法与第一次分组相同;(4)如此一直下去,直到每一个小组只含一个信源符号为止;(5)由此可构造成一个码树,所有终端节点上的码字组成费诺码。
3)香农编码:编码方法如下:⑴将信源消息符号按其出现的概率大小依次排列p(u1) > p(u2)》p(un)⑵确定码长Ki (整数):1»S —Ki=[ ]——取整⑶ 为了编成唯一可译码,计算第i个消息的累加概率Pi=工>(・Ju⑷ 将累加概率Pi变换成二进制数。
⑸ 取pi二进制数的小数点后Ki位即为该消息符号的二进制数。
三、课设目的:通过编程实现三种方式的编码,掌握三种编码方式的步骤。
四、课设内容:三种编码方式的编程思路:1、霍夫曼编码:(1)对给定的n个权值{W1,W2,W3,…,Wi,…,Wn} 构成n 棵二叉树的初始集合F= {T1,T2,T3,…,Ti,…,Tn},其中每棵二叉树Ti 中只有一个权值为Wi的根结点,它的左右子树均为空。
(为方便在计算机上实现算法,一般还要求以Ti的权值Wi的升序排列。
)(2)在F中选取两棵根结点权值最小的树作为新构造的二叉树的左右子树,新二叉树的根结点的权值为其左右子树的根结点的权值之(3)从F中删除这两棵树,并把这棵新的二叉树同样以升序排列加入到集合F中。
(4)重复二和三两步,直到集合F中只有一棵二叉树为止。
2、费诺编码的编程思路:(1)先使用冒泡法对信源概率概率排序;(2)依次将按排好序的符号概率进行近似1:1分成两大组;(3)对各组赋予一个二进制码元“ 0”和“ 1”;(4)输出符号,符号概率及编码。
3、香农编码:(1)对于一个给定的符号列表,制定了概率相应的列表或频率计数,使每个符号的相对发生频率是已知。
(2)排序根据频率的符号列表,最常出现的符号在左边,最少出现的符号在右边。
(3)清单分为两部分,使左边部分的总频率和尽可能接近右边部分的总频率和。
(4)该列表的左半边分配二进制数字0,右半边是分配的数字1。
这意味着,在第一半符号代都是将所有从0开始,第二半的代码都从1 开始。
(5)对左、右半部分递归应用步骤3和4,细分群体,并添加位的代码,直到每个符号已成为一个相应的代码树的叶。
五、 器材(设备、元器件):计算机、visual studio2017社区版六、 设计代码:见附录 九、实验数据及结果根据上述实验程序得到的实验数据及结果如下: 霍夫曼编码:ows\&yst&e 3 2、,匚 IT □ .ese扁码效率:90. 9645% 青按任意键继缜...费诺编码:1001000言源1编码沏 講2编玛为: 言源3编码为;言源5編码为: 盲源6编码为= 言源7编码均: 言源g 编码^ = 言凉9編码为. 詬换10^码为 莒源谕码关 言源1臨码共 言源1錮码均 言源1味帀软 言源谕砌 言源丘肃码为 言原1褊码共 謫1牆趾 諦19编話* 1001001010100 010101100101 OlOOOOlOOlulOU 10011 QOQO 1O1 O V -I X ■ - ■- o o :I'...:1000 :11001101:£f n F孵孵孵幣幣审率気率障率曇$:审棘陞率 鮒翎棘腮槪噸觥紀胪酰貯號噸W 概概概辟 討討割源源源源麻派源源源源' 湖源、>源瀕 信信肓宿訣信信信信信信信信信(0. 006<35822 =0,00753SC70. 0104®4 0.01440470.01568&5(X 0233161 C-. 0235258 C. 0297砧5 0. 0424512.0432447 C. 043305S 0. 0447707 C. 0464492 0. 0E5269 6 0555庇 Q. 0^357010. 0陀£氐40. 0505^94 0. aS 15760. 0354213长#8左怜I ・・ A - R w5 5 E -E 4 4 4 4 4 4 4 4444 s 4F ■■■■ti i ■申 s s i 长长檢长口长长长口长长长长 字字字字护字字字齐字宇宇31679-3o152-■TM-■-■-■OKr1Jiu7r-tsni1■■■-■-■£M-■-w嘛圍W.1II痢為w.囲漏販線遍囲诵iEI诵瓯w.怖师.1r^-F--=1--!:』=i'l」一—一1」-」』—」=」』—'--I4」_iD■I4一-11■I9科;辭.柢名寿;0.0.3355^7山06覇4410,<33102300■帧541“.G743431O.CW1520.0E融硏工行珈?G.CaQKlO.C45^H(I.fl4f3810.胡34俯Q r QQ203440*0211798Q+M5此和0.0141134XL32 価0.0C7S7J780.00753807 FFr-:襦彳F M r 觀CD'昴碍I 010和无011Q0111 需咼1000編码":皿1 编五101J 希不nji1011 编祐1100編础::K J W編码11011 畲码;「】1皿罰勺mon111011 筍%uubo 却 K1111GL0 編码1 11 11111 苗礼111MQ nun&&145-55-F*w诵汨'障:H.40 肓持总衽磁録飯*・,香农编码:-」一一匚一4三二一匸•一一」•-三一-■一一■-■---■.怦龄J:脖4:胯時能胖律膀符硏符笛將询斑癡疥ife翊麋媳W嚟穩頫漏诟盪漏碾屢测=门兰口亠一一旨一|7二==|•言-Hwtpa-.2口亠口士I-J二C.亠一」.=2一曰=1亠一n亠=金J^1—Jn.pf—..I'diI■up■1・I■■I-■I-r—1・I■■■11dIIInpp!—.>8I4i1751671410154111813信awBi 信棕册率借痺擴率,措课棣幸;信蹄率:信潭概率|恬裤機車:仁原嘅率:疳砺播I率1仁谛堀%信暁糰率.肓蓿概率’信■凉探率I 信诵撮鞋蓿凉棵率.0.083315& 累和概率Q -L:.0.082333^ 累加槪率0.0B33155 CL0S056S9 宝加擁率[.H5G54I:. C T S402L 羞麵槪率山1452230. OE64S92 累加槪李H 左圧0L0626444 里祐槪車0, 3S10BS D”052M6I 景加概率0. 433729L. U489S17 禀畑稱率D. 40S8240.04E5244 第加用率匚5:477FOL M32L42 玺加概率D, 5片益0. 0405896 累血瞬0. 6265M010396215 霖知糅率D,朋FL04 0L理獗听髯负愉皋0, ?06626 r.02&^647 舉扪飯主0.73^626Q. 0245^79 累加恼丰Q. 763390. 0L8S9L 至H槪卞山?S?9SSD.iX T437: *加棣率「.方亦产C CUO222 累加薇率乩沁66C. C0^21 需9 寧tn 熾丰0.P1OFP8 Q+ WBO2MT S 加海車Q,曰496C5宇456&&7756-E-=■I66:pE卷聖1宇0001码孚=C0G1 裡字.ODLQ4:C11码字:OJ010畤,01100码孚:OJ101 两卒.C1L11 逼乎,19001 字:10DL0凸卒,10100 衬辛士10101 网宇,101101 玛电101111 咼字,11QDOO F)4:Iiieoio玛宇 1 110011 與字I 110100 码字1 1101011 码黑11C11Q0謁就芒率:72. 9O97X十、结论完成了20个非等概随机信源的霍夫曼、费诺和香农编码,并给出了编码效率和码字。
十^一、总结及心得体会通过这次课程设计,我掌握了三种编码方式的步骤,并能够利用编程实现编码,提高了自己的编程水平和对该知识点的掌握程度。
附录代码:// ConsoleApplicationl.cpp : 定义控制台应用程序的入口点。
//霍夫曼编^码*************/*******#include "stdafx.h"#include 《algorithm〉#include <iostream>#include <math.h>#include <stdlib.h>#include <stdio.h>#include <time.h>using namespace std;#define SourNum20#define MAXBIT 100#define MaxValue 10000#define MAXLEAF 30#define MAXNODE MAXLEAF! -1double Sp[ SourNunj;char coder[100][100];int bitlong[100];void ProSource() //产生非等概信源的函数{int n = 0;srand(( unsigned )time(O)); double sum = 0;while (1){Sp[n] = ( double )rand() / ( RAND_MAX〃产生随机浮点数sum = sum + Sp[n];if (sum < 1 && Sp[n] <0.086){n++;if (n >19)break;else continue ;}else{sum = sum - Sp[n];Sp[n] = 0;continue ;}}Sp[SourNum = 1 - sum;霍夫曼编码***********typedef struct{int bit[ MAXBIT; int start;} HCodetypedef struct{double weight; double parent;double lchild;double rchild;int last;} HNodeType void HuffmanTree( HNodeType HuffNode [ MAXNODE int n) { int i, j, x1, x2;;double m1, m2;for (i = 0; i < 2 * n - 1; i++){HuffNode [i].weight = 0;HuffNode [i].parent = -1;HuffNode [i].lchild = -1;HuffNode [i].rchild = -1;} for (i = 0; i < n; i++){HuffNode [i].weight = Sp[i];}for (i = 0; i < n - 1; i++){m1 = m2 = MaxValue;x1 = x2 = 0;for (j = 0; j < n + i; j++){if ( HuffNode [j].weight < m1 && HuffNode [j].parent == -1){m2 = m1;x2 = x1;m1 = HuffNode [j].weight;x1 = j;}else if ( HuffNode [j].weight < m2 && HuffNode [j].parent == -1){m2 = HuffNode [j].weight;x2 = j;}}HuffNode [x1].parent = n + i;HuffNode [x2].parent = n + i;HuffNode [ n + i].weight = HuffNode [x1].weight + HuffNode [x2].weight;HuffNode [ n + i].lchild = x1;HuffNode [ n + i].rchild = x2;}double CodEffi() // 求编码效率{int AveraLong = 0, SumLong = 0; double H = 0, CE = 0;for ( int i = 0; i < SourNum i++){SumLong = SumLong + bitlong[i];}AveraLong = SumLong / SourNumfor ( int j = 0; j < SourNum j++){H = (-Sp[j])*(log(Sp[j]) / log(2)) + H;}CE = H / AveraLong;return CE;}int main(){ProSource();sort(Sp, Sp + SourNun);HNodeTypeHuffNode[ MAXNODEHCodeHuffCode[ MAXLEAFcd;int i, j, c, p, n;n = SourNumHuffmanTree(HuffNode, SourNum+ 1);for (i = 0; i < n; i++){cd.start = n - 1;c = i;p = HuffNode[c].parent;while (p != -1){if (HuffNode[p].lchild == c)cd.bit[cd.start] = 0;elsecd.bit[cd.start] = 1; cd.start--;c = p;p = HuffNode[c].parent;}for (j = cd.start + 1; j<n; j++)HuffCode[i].bit[j] = cd.bit[j];}HuffCode[i].start = cd.start;}memset(coder, '\0' , sizeof (coder));int temp=0;for (i = 0; i<n; i++){cout << "信源"<< i <<"编码为:" for (j = HuffCode[i].start + 1; j < n; j++)cout << HuffCode[i].bit[j];char (HuffCode[i].bit[j]+48);temp++; temp = 0;bitlong[i] = strlen(coder[i]);CodEffi(); return 0; //费诺编码.cpp :定义控制台应用程序的入口点。