平稳信源熵求解课程设计_第1页
平稳信源熵求解课程设计_第2页
平稳信源熵求解课程设计_第3页
平稳信源熵求解课程设计_第4页
平稳信源熵求解课程设计_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、郑州工业应用技术学院课程设计(论文)题 目: 离散平稳信源熵求解 指导教师: 魏平俊 职称: 教授 学生姓名: 魏秀涛 学号: 1401140108 专 业: 电子信息工程 院 (系): 信息工程学院 答辩日期: 2016年12月18日 2016年12月18日摘要 信息是从人类出现以来就存在于这个世界上,人类社会的生存和发展都离不开信息的获取、传递、处理、再生、控制和处理。而信息论正是一门把信息作为研究对象,以揭示信息的本质特性和规律为基础,应用概率论、随即过程和数理统计等方法来研究信息的存储、传输、处理、控制、和利用等一般规律的学科。主要研究如何提高信息系统的可靠性、有效性、保密性和认证性,

2、以使信息系统最优化。在信息论的指导下,信息技术得到飞速发展,这使得信息论渗透到自然科学和社会科学的所有领域,并且应用与众多领域:编码学、密码学与密码分析、数据压缩、数据传输、检测理论、估计理论等。信息论的主要基本理论包括:信息的定义和度量;各类离散信源和连续信源的信源熵;有记忆,无记忆离散和连续信道的信道容量,平均互信息;无失真信源编码相关理论。 求离散性信源熵也是信息论课程实践学习中必须要经历,在了解常规的求解方式的同时,利用计算机语言进行实践编程。 用预先规定的方法将文字、数字或其他对象编成数码,或将信息、数据转换成规定的电脉冲信号。编码在电子计算机、电视、遥控和通讯等方面广泛使用。其中哈

3、夫曼编码有广泛的应用,通过本次实验,了解编码的具体过程,通过编程实现编码。本次实验所使用的机器语言均为C语言。关键字:信息论 离散和连续信源熵 C语言编程设计目录绪论11. 课程设计概述及意义22. 设计任务32.1设计目的32.2设计内容32.3设计条件33. 理论分析43.1离散信号概念43.2信源熵53.2.1定义53.2.2本质53.2.3物理含义63.3离散平稳信源的数学定义63.4离散平稳信源熵求解说明74.软件介绍84.1 Visual C+ 6.0简介84. 2主要部分95.程序设计115.1设计程序流程图115.2设计程序编码125.3程序运行结果156.课程设计心得体会16

4、致谢17参考文献18绪论在自然界发生的许多过程中,有的过程朝一个方向可以自发地进行,而反之则不行。自然界发生的一些过程是有一定的方向性的,这种过程叫不可逆过程。过程前后的两个状态是不等价的。用什么物理量来度量这种不等价性呢?通过研究,找到了“熵”这个物理量。 熵的概念最初是由R.J.克劳修斯在19世纪中叶建立的,1870年,玻耳兹曼给出了熵的统计解释。熵概念对于初学者,一直是一个较抽象并难以通俗表达的物理概念。近40年来,熵的概念有了迅速而广泛的发展。在天体物理中,黑洞的熵与面积这样的几何概念有联系;在信息论中,信息的熵与信息量的概念有联系,并且出现负熵的概念;在生物学中,生命现象也与熵有着密

5、切关系。此外,由普利高津和哈肯建立的非平衡态统计耗散结构理论及协同学理论,使人们对熵规律有了更新的认识,在无序中产生有序机制的出现,使得熵在许多方面都显示出它的重要性。信源输出信号在数学中可以用随机过程加以描述,因此,可以说信源的建模在某种程度上也就是用恰当的随机过程来描述信号。从复杂性科学的角度来说,熵率只是非线性系统多重分形谱中特殊的一维,即信息维。熵的单位为 J/(mol·K) 或 kJ/(kmol·K)。对实际的绝热膨胀过程,熵必然增加。熵增加的幅度越小,说明损失越小,效率越高。 在本文中,我们将信源的随机模型和非线性动力学中对象之间建立联系,其中离散无记忆信源、隐

6、马尔可夫信源和康托集之间具有对应关系。我们还将演示如何用解析的方法计算离散无记忆信源的熵率。并且这种统计物理的方法,完全可以推广到一般信源熵率的计算。1. 课程设计概述及意义本课程设计是在学习了信息论与编码和相关开发的软件课程后,让我们通过实际的操作来熟悉信源编码微机实现,培养我们能够独立的完成对相关课题或者项目的分析能力、设计能力和调试能力。本课程设计是衔接在C课程、数据结构课程设计之后的,运用程序思想来完成的,联系信息论与编码所学内容,要求有独立的操作界面。在这次的课程设计中,着重培养的是我们的自学能力,以及独立分析互联网上和图书馆里的各种资料,来丰富自己的知识并且提高对数学公式的计算机实

7、现、VC+等软件的实际操作能力。通过这次的课程设计,能够使我们对已经学习过的信息论与编码课程的进一步的掌握,能够对知识进行最大程度的消化融汇。因此这次的课程设计对我们有着非常重要的意义。 本课程设计中用VC编写出基于visual studio2010界面的简单软件以实现压缩信源熵求解及哈夫曼编码的目的。经过比较系统合理的编程操作,实现可视化的窗口以方便用户使用。通过简单校验确保信源正确性,保证软件的可靠性。最终将结果保存为文档方便记录编码结果。 通过让完成具体编码算法的程序设计和调试工作,达到提高编程能力和深刻理解编码理论及信源熵求解的目的。培养我们使用计算机和查阅参考资料的能力,提高我们的基

8、本设计能力。培养了理论联系实际和独立思考的能力。并激发我们的实际开发创造的意识和能力。培养和提高我们的自学能力以及综合运用所学理论知识去分析解决实际问题的能力。2. 设计任务2.1设计目的 深刻理解信源熵的计算方法;深刻理解信源编码的基本思想与目的;2.2设计内容首先对拖入文件中的字符总个数进行统计 ,然后从文本头开始查找同一字符个数,并计算 其概率 最后由得出的字符概率求得信源熵 2.3设计条件 计算机、C语言或其他语言环境;设计软件 visual studio20103. 理论分析3.1离散信号概念离散信源:若一类信源输出的消息常常是以一个个符号的形式出现,例如文字、字母等,这些符号的取值

9、是有限的或可数的,这样的信源称为离散信源。比如(0、1)二元信元,它的消息是以一定的概率来出现的,所以可以采用概率空间来描述。单符号离散信源的数学模型可表示为 (3.1.1)其中满足:01,(3.1.2)公式(3.1.2)表示信源的可能取值共有n个:,每次必取其中之一。需要注意的是,大写字母X,Y,Z代表随机变量,指的是信源整体。带下标的小写字母代表随机事件的某一结果或信源的某个元素。两者不可混淆。其中X1,X2,Xn为信源的消息;P(x1), P(x2),P(xn)为各消息出现的概率。3.2信源熵3.2.1定义已知单符号离散无记忆信源的数学模型,其中,且。我们定义信源各个离散消息的自信息量的

10、数学期望(即概率加权的统计平均值)为信源的平均信息量,一般称为信源的信息熵,也叫信源熵或香农熵,有时称为无条件熵或熵函数,简称熵,记为。它实质上是无记忆信源平均不确定度的度量。如果取以2为底的对数,信源熵的单位是 bit/符号。X中各离散消息的自信息量为非负值,概率也是非负值,且01,故信源熵也是非负值。的定义公式与统计热力学中熵的表示形式相同,这就是信源熵名称的由来。3.2.2本质信源熵表征信源的平均不确定度,平均自信息量是消除信源不确定度所需要的信息的度量。信源一定,不管它是否输出离散消息,只要这些离散消息具有一定的概率特性,必有信源的熵值,这熵值在总体平均的意义上才有意义,因而是一个确定

11、值。3.2.3物理含义总括起来,信源熵有三种物理含义: (1)信源熵表示信源输出后,每个离散消息所提供的平均信息量。 (2)信源熵表示信源输出前,信源的平均不确定度。 (3)信源熵反映了变量X的随机性。3.3离散平稳信源的数学定义在一般情况下,离散信源的输出是空间和时间的离散符号序列,而且在序列中符号之间有依赖关系。此时可用随机矢量来描述信源发出的消息,即其中任意一变量都是离散随机变量,它表示时刻所发出的符号。信源在时刻将要发出什么样的符号决定于两方面:(1)与信源在时刻随机变量的取值的概率分布有关。一般情况不同时,概率分布也不同,即。(2)与时刻以前信源发出的符号有关,即与条件概率有关。同样

12、在一般情况下,它也是时间的函数,所以。对于平稳信源来说,其条件概率与时间起点无关,只与关联长度有关。它表示平稳信源发出的平稳随机序列前后的依赖关系与时间起点无关。如果某时刻发出什么符号与前面发出的个符号有关。那么任何时刻它们的依赖关系都是一样的。即。平均符号熵:定义N长的信源符号序列中平均每个信源符号所携带的信息量为:。也叫平均符号熵。3.4离散平稳信源熵求解说明离散平稳信源也是一种非常重要的信源。不同时刻信源输出符号的概 率分布完全相同,则称为一维离散平稳信源。二维离散平稳信源就是信源输出的随机序列,X1,X2,Xi,满足其一维和二维概率分布与时间起点无关。这种各维联合概率分布均匀与时间起点

13、无关的完全平稳信源称离散平稳信源。二维离散平稳信源的联和熵为:,此值表示原来信源X输出任意一对可能的消息的共熵,即描述信源X输出长度为2的平均不确定性,或所含的信息量,因此可用作为二维离散平稳信源的信息熵的近似值。在通信系统的各种信源中,离散随机信源是最基本的一种信源,信源输出是单个的符号的消息,并且消息之间是两两互不相容的。我们知道,事件发生的不确定性与事件发生的概率有关:事件的发生概率越小,不确定性就越大,事件发生的概率越大,不确定性就越小,对于发生概率为1的必然事件就不存在不确定性。设一离散信源的概率空间为: . . 即,如果知道已发生,则该事件所含有的信息量称自信息,表达式为:上面的自

14、信息是指某一信源发出某一消息所含的信息量,但所发消息不同,它们所含信息量也就不同,所以自信息不能作为整个信源的信息测度,我们定义平均自信息量,即对每个事件各自所携带的信息量做一个加权平均,也称信息熵,表示如下:信息熵具有一些基本的性质,比如,对称性,确定性,非负性,扩展性,可加性等等。这里面有一个最大离散熵定理,表明:离散信源情况下,对于具有q个符号的离散信源,只有在q个信源符号等可能出现的情况下,信源熵才能达到最大值,这样也表明等概率分布信源的平均不确定性为最大。4.软件介绍4.1 Visual C+ 6.0简介Visual C+ 6.0,简称VC或者VC6.0,是微软推出的一款C+编译器,

15、将“高级语言”翻译为“机器语言(低级语言)”的程序。Visual C+是一个功能强大的可视化软件开发工具。自1993年Microsoft公司推出Visual C+1.0后,随着其新版本的不断问世,Visual C+已成为专业程序员进行软件开发的首选工具。Visual C+6.0由Microsoft开发, 它不仅是一个C+ 编译器,而且是一个基于Windows操作系统的可视化集成开发环境(integrated development environment,IDE)。Visual C+6.0由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导Class Wizard等开发工具

16、。 这些组件通过一个名为Developer Studio的组件集成为和谐的开发环境。Microsoft的主力软件产品。Visual C+是一个功能强大的可视化软件开发工具。Visual C+6.0以拥有“语法高亮”,自动编译功能以及高级除错功能而著称。比如,它允许用户进行远程调试,单步执行等。还有允许用户在调试期间重新编译被修改的代码,而不必重新启动正在调试的程序。其编译及创建预编译头文件(stdafx.h)、最小重建功能及累加连结(link)著称。这些特征明显缩短程序编辑、编译及连结的时间花费,在大型软件计划上尤其显著。4. 2主要部分1Developer Studio 图1 Develop

17、er Studio环境这是一个集成开发环境,我们日常工作的99%都是在它上面完成的,再加上它的标题赫然写着“Microsoft Visual C+”,所以很多人理所当然的认为,那就是Visual C+了。其实不然,虽然Developer Studio提供了一个很好的编辑器和很多Wizard,但实际上它没有任何编译和链接程序的功能,真正完成这些工作的幕后英雄后面会介绍。我们也知道,Developer Studio并不是专门用于VC的,它也同样用于VB,VJ,VID等Visual Studio家族的其他同胞兄弟。所以不要把Developer Studio当成Visual C+, 它充其量只是Vis

18、ual C+的一个壳子而已。这一点请切记! 2MFC从理论上来讲,MFC也不是专用于Visual C+,Borland C+,C+Builder和Symantec C+同样可以处理MFC。同时,用Visual C+编写代码也并不意味着一定要用MFC,只要愿意,用Visual C+来编写SDK程序,或者使用STL,ATL,一样没有限制。不过,Visual C+本来就是为MFC打造的,Visual C+中的许多特征和语言扩展也是为MFC而设计的,所以用Visual C+而不用MFC就等于抛弃了Visual C+中很大的一部分功能。但是,Visual C+也不等于MFC。 3Platform SDK

19、这才是Visual C+和整个Visual Studio的精华和灵魂,虽然我们很少能直接接触到它。大致说来,Platform SDK是以Microsoft C/C+编译器为核心(不是Visual C+,看清楚了),配合MASM,辅以其他一些工具和文档资料。上面说到Developer Studio没有编译程序的功能,那么这项工作是由谁来完成的呢?是CL,是NMAKE,和其他许许多多命令行程序,这些我们看不到的程序才是构成Visual Studio的基石。5.程序设计5.1设计程序流程图 5.2设计程序编码#include<stdio.h>#include <stdlib.h&g

20、t;#include <ctype.h>#include<math.h>int check(char* s);void initial(void);struct Shujulong int cishu;double gl;char data;Jc256;int main(void)FILE* fp = NULL;char* filename = NULL;if( ( filename = (char*)malloc(500*sizeof(char) ) =NULL )return 0;doprintf("请拖入一个以字母命名的文件:");gets(f

21、ilename);while( ! check(filename) );if( (fp = fopen(filename, "r") )= NULL )printf("文件名为:'filename' 的文件不存在");return 0;fclose(fp);printf("n开始读入文件内容");initial();long int number = 0L;double Xys = 0.0;char ch = '0'while( !feof(fp) )ch = fgetc(fp);if( ch <

22、= 255 && ch >=0)ch=(ch<='Z'&&ch>='A')? (ch+32):ch;Jcch.cishu += 1;Jcch.data = ch;number += 1;for(int i = 0; i < 256 ;i+)if( Jci.cishu = 0 )continue;Jci.gl = static_cast<double>(Jci.cishu) / static_cast<double>(number);Xys = Xys + ( - log(Jci.gl

23、) * Jci.gl ) /log(2.0);printf("n其中 %c 字符的个数为:%d ,概率是:%4.5f。",Jci.data,Jci.cishu,Jci.gl);printf("n该信源的熵是:%.4f.",Xys);printf("n本次试验正常运行n");fclose(fp);return 0;void initial(void)for(int i = 0;i<256;i+)Jci.cishu = 0;int check(char* s)int i = 0;while( *(s+i) != '0')i+;if( *(s+i-4) =

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论