信息论实验演示和在线测试系统.docx
- 文档编号:30725954
- 上传时间:2023-08-19
- 格式:DOCX
- 页数:70
- 大小:423.54KB
信息论实验演示和在线测试系统.docx
《信息论实验演示和在线测试系统.docx》由会员分享,可在线阅读,更多相关《信息论实验演示和在线测试系统.docx(70页珍藏版)》请在冰豆网上搜索。
信息论实验演示和在线测试系统
摘要
《信息论基础》作为信息与计算科学、通信学科的一门专业课程,广泛应用于各个领域。
《信息论基础》是一门理论性和实践性都较强的学科,因此针对课程特点,开发相关实验演示与测试系统可以提高学生的实际操作能力和对课程的掌握水平。
在深入研究《信息论基础》相关基本理论和C++编程技术基础上,采用MFC+ACCESS+控制台编程设计并实现《信息论基础》实验演示与在线测试系统。
实验演示系统包括离散信息熵的计算、信道容量的计算、Huffman编码、LZW编码、DES加密算法五个实验。
实验演示系统展示了实验的基本理论与操作,系统采用MFC+控制台编程实现,MFC做界面,具体实验操作采用控制台编程。
测试系统包括章节测试和课程测试,每部分都提供了试题,可以实时进行在线评分,系统采用MFC+ACCESS数据库实现,MFC实现答题和解析界面,题目和答案存储在数据库中,通过自动注册数据库实现界面和数据库的连接。
最后针对信息论课程实践教学要求进行测试,测试结果表明所有功都能流畅运行,满足设计需求。
关键词:
信息论基础;实验演示系统;在线测试系统;MFC;控制台编程
Abstract
TheInformationTheoryBasisas,communications,informationandcomputationsciencedisciplineofaprofessionalcourse,widelyusedinvariousfields.TheInformationTheoryBasisisatheoryandpracticearestrongdiscipline,soaccordingtothecharacteristicsofcurriculumdevelopmentofrelatedexperimentaldemonstrationandtestingsystemcanimprovethestudents'practicalabilityandgraspofthecourse.
InthefurtherstudyofTheInformationTheoryBasisbasedonrelatedbasictheoryandC++programmingtechnology,usingMFC+ACCESS+consoleprogrammingdesignandimplementTheInformationTheoryBasisforexperimentaldemonstrationandonlinetestsystem.Experimentaldemonstrationsystemincludingdiscreteinformationentropycalculation,thecalculationofchannelcapacity,Huffmancoding,LZWencodingandtheDESencryptionalgorithm.Experimentdemosystemshowsthebasictheoryandoperation,thesystemUSESMFC+Win32ConsoleApplication,MFCinterface,specificexperimentaloperationinconsoleprogramming.Testsystemincludeschapterstestandcoursetest,eachpartprovidestheexamandcanbeonlinescoring,real-timesystemusingMFC+ACCESSdatabaseimplementation,MFCimplementationproblemsolvingandanalyticalinterface,questionsandanswersarestoredindatabase,therealizationofautomaticregistrationdatabasethroughinterfaceandthedatabaseconnection.
Finallybasedoninformationtheorycoursepracticeteachingrequirementsfortesting,testresultsshowthatallworkcansmoothrunning,meetthedesignrequirements.
Keywords:
Informationtheorybasis;Theexperimentaldemonstrationsystem;Theonlinetestsystem;MFC;Win32ConsoleApplication
目录
1绪论1
1.1编写目的1
1.2技术说明1
1.2.1C++1
1.2.2MFC编程2
1.2.3控制台程序2
1.2.4ACCESS数据库3
2国内外现状4
3理论基础6
3.1信息熵6
3.2信道容量7
3.3Huffman编码9
3.4LZW编码9
3.5DES编码10
4系统总体设计12
4.1软件支持信息12
4.2系统数据流12
4.3总体结构13
4.4系统数据结构设计13
5详细设计15
5.1开始界面15
5.1.1设计图15
5.1.2核心代码16
5.2实验演示17
5.2.1演示界面17
5.2.2离散信息熵模块18
5.2.3信道容量模块22
5.2.4Huffman编码模块26
5.2.5LZW编码模块30
5.2.6DES加密模块33
5.3测试系统36
5.3.1答题模块36
5.3.1答案解析模块42
6总结45
致谢46
参考文献47
附录A:
英文原文48
附录B:
中文翻译58
1绪论
1.1编写目的
信息论作为计算机学科的一门基础课程,广泛的应用于计算的各个领域,如:
编码学、密码学与密码分析学、数据传输数据压缩、检测理论、估计理论。
信息论课程的学习对于计算机专业的学生来说至关重要。
本论文,内容是信息论课程中的五个重要实验和课程测试。
实验演示模块实现离散信息熵、信道容量、Huffman编码、LZW编码、DES加密的演示,在学生掌握相关理论的基础之上,加深对实验的理解和运用,测试系统包括章节测试和课程测试,可以让学生清楚的了解自己对课程内容的掌握情况,及时查漏补缺。
1.2技术说明
1.2.1C++
C++是在C语言的基础上开发的一种面向对象编程语言,应用广泛;C++支持多种编程范式--面向对象编程、泛型编程和过程化编程。
最新正式标准C++于2014年8月18日公布。
其编程领域众广,常用于系统开发,引擎开发等应用领域,是至今为止最受广大程序员受用的最强大编程语言之一,支持类:
类、封装、重载等特性[1]。
C++设计成静态类型、和C同样高效且可移植的多用途程序设计语言。
C++设计直接的和广泛的支持多种程序设计风格(程序化程序设计、资料抽象化、面向对象程序设计、泛型程序设计)。
C++设计无需复杂的程序设计环境。
C++语言灵活,运算符的数据结构丰富、具有结构化控制语句、程序执行效率高,而且同时具有高级语言与汇编语言的优点,与其它语言相比,可以直接访问物理地址,与汇编语言相比又具有良好的可读性和可移植性。
总得来说,C++语言的主要特点表现在两个方面,一是尽量兼容C,二是支持面向对象的方法。
它操持了C的简洁、高效的接近汇编语言等特点,对C的类型系统进行了改革的扩充,因此C++比C更安全,C++的编译系统能检查出更多的类型错误。
另外,由于C语言的广泛使用,因而极大的促进了C++的普及和推广。
C++语言最有意义的方面是支持面向对象的特征。
虽然与C的兼容使得C++具有双重特点,但他在概念上完全与C不同,更具面向对象的特征。
出于保证语言的简洁和运行高效等方面的考虑,C++的很多特性都是以库(如STL)或其他的形式提供的,而没有直接添加到语言本身里。
关于此类话题,BjarneStroustrup的《C++语言的设计和演化》(1994)里做了详尽的陈述。
C++引入了面向对象的概念,使得开发人机交互类型的应用程序更为简单、快捷。
很多优秀的程序框架包括Boost、Qt、MFC、OWL、wxWidgets、WTL就是使用的C++。
1.2.2MFC编程
MFC(MicrosoftFoundationClasses)是微软基础类库的简称,是微软公司实现的一个C++类库,主要封装了大部分的windowsAPI函数,vc++是微软公司开发的c/c++的集成开发环境,所谓集成开发环境,就是说利用它可以编辑,编译,调试,而不是使用多种工具轮换操作,灵活性较大。
vc也指它的内部编译器,集成开发环境必须有一个编译器内核,例如DevC++其中一个编译器内核就是gcc。
MFC除了是一个类库以外,还是一个框架,在vc++里新建一个MFC的工程,开发环境会自动帮你产生许多文件,同时它使用了mfcxx.dll。
xx是版本,它封装了MFC内核,所以你在你的代码看不到原本的SDK编程中的消息循环等等东西,因为MFC框架帮你封装好了,这样你就可以专心的考虑你程序的逻辑,而不是这些每次编程都要重复的东西,但是由于是通用框架,没有最好的针对性,当然也就丧失了一些灵活性和效率。
但是MFC的封装很浅,所以效率上损失不大[2]。
1.2.3控制台程序
控制台程序是为了兼容DOS程序而设立的,这种程序的执行就好像在一个DOS窗口中执行一样,没有自己的界面。
所谓的控制台应用程序,就是能够运行在MS-DOS环境中的程序。
控制台应用程序通常没有可视化的界面,只是通过字符串来显示或者监控程序。
控制台程序常常被应用在测试、监控等用途,用户往往只关心数据,不在乎界面。
控制台程序是为了兼容DOS程序而设立的,这种程序的执行就好像在一个DOS窗口中执行一样,没有自己的界面。
INTEL的CPU有三种工作模式,实模式,保护模式,虚拟模式。
实模式是16位的,在这种模式下可工作纯DOS。
保护模式是32位的,WINDOWS就工作在这种模式下,为了使在32位保护模式下工作的WINDOWS可兼容16位实模式下的DOS程序,又设立了虚拟模式,就是控制台程序[5]。
1.2.4ACCESS数据库
ACCESS是由微软发布的关系数据库管理系统。
它结合了 MicrosoftJetDatabaseEngine和图形用户界面两项特点,是MicrosoftOffice的系统程序之一。
ACCESS是微软把数据库引擎的图形用户界面和软件开发工具结合在一起的一个数据库管理系统。
它是微软OFFICE的一个成员,在包括专业版和更高版本的office版本里面被单独出售。
2012年12月4日,最新的微软ACCESS2013在微软Office2013里发布,微软ACCESS2010是前一个版本。
ACCESS以它自己的格式将数据存储在基于ACCESSJet的数据库引擎里。
它还可以直接导入或者链接数据(这些数据存储在其他应用程序和数据库)。
软件开发人员和数据架构师可以使用ACCESS开发应用软件,“高级用户”可以使用它来构建软件应用程序。
和其他办公应用程序一样,ACCESS支持VisualBasic宏语言,它是一个面向对象的编程语言,可以引用各种对象,包括DAO(数据访问对象),ActiveX数据对象,以及许多其他的ActiveX组件。
可视对象用于显示表和报表,他们的方法和属性是在VBA编程环境下,VBA代码模块可以声明和调用Windows操作系统函数[10]。
ACCESS的用途体现在两个 方面:
一、用来进行数据分析:
ACCESS有强大的数据处理、统计分析能力,利用ACCESS的查询功能,可以方便地进行各类汇总、平均等统计。
并可灵活设置统计的条件。
比如在统计分析上万条记录、十几万条记录及以上的数据时速度快且操作方便,这一点是Excel无法与之相比的。
这一点体现在:
会用ACCESS,提高了工作效率和工作能力。
二、用来开发软件:
ACCESS用来开发软件,比如生产管理、销售管理、库存管理等各类企业管理软件,其最大的优点是:
易学!
非计算机专业的人员,也能学会。
低成本地满足了那些从事企业管理工作的人员的管理需要,通过软件来规范同事、下属的行为,推行其管理思想。
(VB、.net、C语言等开发工具对于非计算机专业人员来说太难了,而ACCESS则很容易)。
这一点体现在:
实现了管理人员(非计算机专业毕业)开发出软件的“梦想”,从而转型为“懂管理+会编程”的复合。
2国内外现状
信息论是美国C.E.香农于1948年提出。
信息论是研究信息的基本性质和度量方法以及信息的获得、传输、存贮、处理和交换等一般规律的科学。
信息论作为一门科学理论,发端于通信工程。
它具有广义和狭义两个概念:
狭义信息论是应用统计方法研究通讯系统中信息传递和信息处理的共同规律的科学,即研究概率性语法信息的科学;广义信息论是应用数学和其他有关科学方法研究一切现实系统中信息传递和处理、信息识别和利用的共同规律的科学,即研究语法信息、语义信息和语用信息的科学。
我们的信息论基础就是属于我们的狭义信息论,是运用概率论与数理统计的方法研究信息、信息熵、数据传输、压缩、编码等问题的应用学科。
由于信息论理论知识的空洞,国内外各大高校都做出了不懈的努力。
目前,各大高校都在迅速采取行动,来提高信息论的教学质量,江苏科技大学、内蒙古工业大学、华中科技大学等都建立了比较完整的信息论基础实践教学平台,这些大学的信息论实践教学都在高校中处于领先地位,在许多方面值得我们去学习与借鉴。
以下以江苏科技大学和内蒙古工业大学为例介绍他们的信息论基础教学平台系统[12]。
江苏科技大学的教学平台系统:
江苏科技大学的信息论教学平台是该学校的电子信息学院运用MATLAB的图形用户界面设计(GUI)建立而成。
该系统是现在国内最为完整的不仅包括了基础理论验证实验、提高型实验、综合型实验还包括了实际运用型实验。
该教学平台实现了:
二进制信息熵的计算,该界面包括一维信息熵、二维信息熵、条件熵、噪声熵以及互信息的计算;信源编码实验,这个实验包括无失真信源编码界面与限失真信源编码界面,其中无失真信源编码界面主要介绍了香农编码、费诺编码和哈夫曼编码三中变长码的换算以及这些编码的性能对比;信道编码与译码,该模块主要实现了卷积码的编码与译码,CRC编码与译码;信道容量的迭代计算,该界面主要运用迭代算法实现了离散信道容量的计算。
还有就是几个实际综合运用实验包括图像编码综合运用实验,语音编码综合运用实验,保密编码综合运用实验。
内蒙古工业大学的教学平台系统:
该教学平台由该校的信息工程学院开发,主要是用于信息论基础理论的验证,实现了二进制熵的计算、信源编码以及信道容量的计算。
二进制熵的计算包括了一维信息熵、二维信息熵、条件熵、互信息;信源编码实践实验是该教学平台最为突出很好的运用GUI界面设计把无失真信源编码与限失真信源编码结合起来,当输入离散信源时可以对其进行香农编码、费诺编码与哈夫曼编码,结果可以显示这些变长码的编码、编码效率以及平均码长,可以对这几种变长码进行性能对比;当输入为连续性信源时可以对其进行均匀编码与非均匀编码,能输出其码字与量化误差,可以通过量化误差对其性能进行对比;信道容量计算实验同样是通过迭代算法实现,其计算的是离散信道容量。
这些学校的实践教学平台对我校有许多重要启示,注重基础是实践教学的重要基础;增添提高型、综合型实验,使平台模块化,是实践教学的关键环节;促使学生高度关注、共同参与,增强学生学习兴趣,是实现实践教学的根本保证。
目前,教学平台多为网络教学平台,考虑网络教学平台的维护费用过高,结合切实需求,决定开发客户端教学平台。
通过学习信息论理论和相关技术学习,确定本次论文结构:
理论基础、系统总体设计、系统详细设计、结论。
3理论基础
3.1信息熵
作为一种通俗的解释,熵是一种不规则性的测量尺度.这一种解释起源于香农在通讯理论的研究中,为确定信息量而提出的一种熵测度.对于离散概率分布p=(p1,p…,pn),香农熵定义为H(X)=E[I(xi)]=
log
在p1+p2+p3+…pk=1的条件下,为使H(X)最大,显然是pi=1/k(i=1,2,…,k),即在等概率分布情况下H(X)达到最大值,换句话说,熵的值与不规则度(如果以等概率分布作为不规则性的极端表现)是一致的.这是熵作为一个概率测度的理论基础.物理学的发展为熵理论提供了更为现实的应用背景,热力学的第二法则既是所谓熵增大的法则,对孤立的系统,系统的热力学状态只能假定在熵增大的方向上起变化,Boltzmann原理把熵引入了热力学的研究领域,他所提供的著名关系式S=klogw(w是系统状态的概率)是后来Planck的量变论及爱因斯坦的光量子理论开展的基础.人们对熵的认识和应用很长一段时间内都局限于理论物理领域,直到本世纪中叶,一些人开始注意到熵对系统不确定性度量的一般性,试图在行为科学和社会科学中更广泛地引用熵,对一些复杂现象加以刻划。
信息熵的概念:
设一个离散型随机变量和它的概率分布为
任意随机事件的自信息量定义为该事件发生概率的对数的负值,即I(
)=-log
。
自信息量I(
)是指某一信源X发出某一消息信号
所含有的信息量,发出的消息不同,它们所含的信息量也就不同,因此自信息量是一个随机变量,它不能用来作为整个信源的信息测度。
香农将平均自信息量定义为信息熵,简称为熵。
即
(3.1)
联合熵:
(3.2)
条件熵:
(3.3)
(3.4)
3.2信道容量
信道容量:
信道能无错误传送的最大信息率。
对于只有一个信源和一个信宿的单用户信道,它是一个数,单位是比特每秒或比特每符号。
它代表每秒或每个信道符号能传送的最大信息量,或者说小于这个数的信息率必能在此信道中无错误地传送。
根据信道容量的定义,就是在固定信道的条件下,对所有可能的输入概率分布
求平均互信息的极大值。
前面已知
是输入概率分布的上凸函数,所以极大值一定存在。
而
是
个变量
的多元函数。
并且满足
。
所以可用拉格朗日乘子法来计算这个条件极值。
引入一个函数:
解方程组
(3.5)
可以先解出达到极值的概率分布和拉格朗日乘子
的值,然后在解出信道容量
。
因为
(3.6)
而
,所以
解(3.5)式有
(对
都成立)
又因为
所以(3.5)式方程组可以转化为
假设使得平均互信息
达到极值的输入概率分布
这样有
从而上式左边即为信道容量,得
(3.7)
现在令
(3.8)
式中,
是输出端接收到Y后获得关于
的信息量,即是信源符号
对输出端Y平均提供的互信息。
一般来讲,
值与
有关。
根据(3.7)式和(3.8)式,
所以对于一般离散信道有如下定理。
一般离散信道的平均互信息
达到极大值(即等于信道容量)的充要条件是输入概率分布
满足
这时C就是所求的信道容量。
3.3Huffman编码
哈夫曼编码(HuffmanCoding),又称霍夫曼编码,是一种编码方式,哈夫曼编码是可变字长编码(VLC)的一种。
Huffman于1952年提出一种编码方法,该方法完全依据字符出现概率来构造异字头的平均长度最短的码字,有时称之为最佳编码,一般就叫做Huffman编码。
设某信源产生有五种符号u1、u2、u3、u4和u5,对应概率P1=0.4,P2=0.1,P3=P4=0.2,P5=0.1。
首先,将符号按照概率由大到小排队,如图所示。
编码时,从最小概率的两个符号开始,可选其中一个支路为0,另一支路为1。
这里,我们选上支路为0,下支路为1。
再将已编码的两支路的概率合并,并重新排队。
多次重复使用上述方法直至合并概率归一时为止。
哈弗曼码的码字(各符号的代码是异前置码字,即任一码字不会是另一码字的前面部分,这使各码字可以连在一起传送,中间不需另加隔离符号,只要传送时不出错,收端仍可分离各个码字,不致混淆。
实际应用中,除采用定时清洗以消除误差扩散和采用缓冲存储以解决速率匹配以外,主要问题是解决小符号集合的统计匹配,例如黑
(1)、白(0)传真信源的统计匹配,采用0和1不同长度游程组成扩大的符号集合信源。
游程,指相同码元的长度(如二进码中连续的一串0或一串1的长度或个数)。
按照CCITT标准,需要统计2×1728种游程(长度),这样,实现时的存储量太大。
事实上长游程的概率很小,故CCITT还规定:
若l表示游程长度,则l=64q+r。
其中q称主码,r为基码。
编码时,不小于64的游程长度由主码和基码组成。
而当l为64的整数倍时,只用主码的代码,已不存在基码的代码。
3.4LZW编码
LZW编码又叫“串表压缩编码”就是通过建立一个字符串表,用较短的代码来表示较长的字符串来实现压缩。
LZW压缩算法是Unisys的专利,有效期到2003年,所以对它的使用已经没有限制了
字符串和编码的对应关系是在压缩过程中动态生成的,并且隐含在压缩数据中,解压的时候根据表来进行恢复,算是一种无损压缩.根据Lempel-Ziv-WelchEncoding,简称LZW的压缩算法,用任何一种语言来实现它.LZW压缩算法的基本概念:
LZW压缩有三个重要的对象:
数据流(CharStream)、编码流(CodeStream)和编译表(StringTable)。
在编码时,数据流是输入对象(文本文件的据序列),编码流就是输出对象(经过压缩运算的编码数据);在解码时,编码流则是输入对象,数据流是输出对象;而编译表是在编码和解码时都须要用借助的对象。
字符(Character):
最基础的数据元素,在文本文件中就是一个字节,在光栅数据中就是一个像素的颜色在指定的颜色列表中的索引值;
字符串(String):
由几个连续的字符组成;
前缀(Prefix):
也是一个字符串,不过通常用在另一个字符的前面,而且它的长度可以为0;
根(Root):
一个长度的字符串;
编码(Code):
一个数字,按照固定长度(编码长度)从编码流中取出,编译表的映射值;
图案:
一个字符串,按不定长度从数据流中读出,映射到编译表条目.
LZW压缩算法的基本原理:
提取原始文本文件数据中的不同字符,基于这些字符创建一个编译表,然后用编译表中的字符的索引来替代原始文本文件数据中的相应字符,减少原始数据大小。
看起来和调色板图象的实现原理差不多,但是应该注意到的是,我们这里的编译表不是事先创建好的,而是根据原始文件数据动态创建的,解码时还要从已编码的数据中还原出原来的编译表.
3.5DES编码
DES全称为DataEncryptionStandard,即数据加密标准,是一种使用密钥加密的块算法,1977年被美国联邦政府的国家标准局确定为联邦资料处理标准(FIPS),并授
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 信息论 实验 演示 在线 测试 系统