信息论课程设计汇本香农费诺编码

上传人:工**** 文档编号:475669241 上传时间:2022-11-21 格式:DOC 页数:35 大小:1.51MB
返回 下载 相关 举报
信息论课程设计汇本香农费诺编码_第1页
第1页 / 共35页
信息论课程设计汇本香农费诺编码_第2页
第2页 / 共35页
信息论课程设计汇本香农费诺编码_第3页
第3页 / 共35页
信息论课程设计汇本香农费诺编码_第4页
第4页 / 共35页
信息论课程设计汇本香农费诺编码_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《信息论课程设计汇本香农费诺编码》由会员分享,可在线阅读,更多相关《信息论课程设计汇本香农费诺编码(35页珍藏版)》请在金锄头文库上搜索。

1、 华 北 科 技 学 院信息论基础课程设计说明书班级:计算B092某: 李 宁 (200909014217) 设计题目:信源编码软件 设计时间:2012.7.4至2012.7.8指导教师:李慧评 语:_评阅成绩:评阅教师:目录设计总说明1前言2第1章总体设计方案31.1 软件结构设计3第2章算法思想及设计52.1香农编码52.1.1香农编码思想:52.1.2香农编码算法设计:62.2费诺编码62.2.1费诺编码思想62.2.2费诺编码算法设计7第3章软件详细设计83.1主界面设计83.2功能设计83.2.1香农编码的实现83.2.2费诺编码的实现153.2.3有关文档的223.2.4皮肤切换的

2、设计23第4章软件测试264.1香农编码的测试264.1.1 软件运行及结果测试264.2费诺编码的测试274.2.1 软件运行及结果测试274.3测试结果29第5章总结30参考文献31附录32 / 设计总说明早期的数据压缩起源于人们对概率的认识。当对文字信息进行编码时,如果为出现概率较高的字母赋予较短的编码,为出现概率较低的字母赋予较长的编码,平均编码长度就能缩短不少。印象中的著名的Morse电码就是一个X例。信息论之父C.E.Shannon曾指出,任何信息都存在冗余,冗余大小与信息中每个符号的出现概率(不确定性)有关。他所提出的无失真信源编码定理奠定了数据压缩的理论基础。数据压缩的目的就是

3、要消除信息中的冗余,而信息熵及相关的定理恰恰用数学手段精确地描述了信息冗余的程度。本文主要采用香农编码和费诺编码方法来描述信源的编码过程。香农编码采用信源符号与概率由用户输入。通过一定的校验代码确保离散信源的正确性。例如单个符号的概率不能大于1,概率和不能大于1,信源概率和不为1时无法编码等校验。由于香农编码是将信源概率由大到小排序的,所以,本软件也实现了这一点,输入时不必考虑信源概率顺序问题,软件会自动按概率排序编码。最后将结果显示在MFC列表控件上。用户可以将最终结果保存成文件。费诺编码通过输入字符串来自动计算单个信源符号的概率。当然,为了方便起见,本软件对费诺编码还提供了打开文件完成信源

4、输入,从而可以更快的输入字符串。进行编码时同样按概率从大到小排序,同样可以将结果保存到文件中。本软件界面友好,方便可靠,用户可根据自己的爱好选择不同的界面风格。在首页加入了好看的Flash,使软件更为美观。同样反映除了本软件的功能特性。根据实验要求和日常压缩数据的习惯,本软件最终完成了以下目标:1、 界面设计友好,美观,数据存储安全,可靠。2、 操作简便、适用,无冗余操作。3、 编码效率较高,编码时间短。关键词: 离散信源;香农编码;费诺编码;信源熵前言本课程设计是在学习了信息论与编码和相关开发的软件课程后,让学生通过实际的操作来熟悉信源编码微机实现,培养学生能够独立的完成对相关课题或者项目的

5、分析能力、设计能力和调试能力。本课程设计是衔接在大一时C课程设计之后的,同样是运用MFC程序来设计,联系本学期所学内容,要求有独立的操作界面。由于在以前有过类似的练习,故在这次的课程设计相对以前来说不是太难。在这次的课程设计中,着重培养的是学生的自学能力,以及独立分析互联网上和图书馆里的各种资料,来丰富自己的知识并且提高对数学公式的计算机实现、VC+等软件的实际操作能力。通过这次的课程设计,能够使学生对已经学习过的信息论与编码课程的进一步的掌握,能够对知识进行最大程度的消化融汇。因此这次的课程设计对我们有着非常重要的意义。本课程设计中用VC+编写出基于MFC界面的简单软件以实现压缩信源的目的。

6、软件应用香农编码的相关理论,经过比较系统合理的编程操作,实现可视化的窗口以方便用户使用。通过简单校验确保信源正确性,保证软件的可靠性。最终将结果保存为文档方便记录编码结果。通过让完成具体编码算法的程序设计和调试工作,达到提高编程能力和深刻理解编码理论的目的。培养我们使用计算机和查阅参考资料的能力,提高我们的基本设计能力。培养了理论联系实际和独立思考的能力。并激发我们的实际开发创造的意识和能力。培养和提高我们的自学能力以及综合运用所学理论知识去分析解决实际问题的能力。第1章 总体设计方案1.1 软件结构设计香农编码帮助费诺编码编码选择信源编码费诺编码香农编码编码理论菜单皮肤切换图1.1.1 软件

7、功能结构图输入信源符号和概率码长累加概率码字进行编码检验信息平均码长显示结果正确错误信源熵信息率信源符号概率编码效率图1.1.2香农编码流程图输入字符串序列码长概率码字进行编码打开文件字符串长度显示结果字符个数信源熵信源符号编码效率直接输入概率计算及排序出现次数平均码长图1.1.3费诺编码流程图第2章算法思想及设计2.1香农编码2.1.1香农编码思想:设有离散无记忆信源:1按信源符号的概率从大到小的顺序排列,为方便起见,可令23确定满足下列不等式的整数,并令为第个码字的长度4把用二进制表示,用小数点后的位作为的码字例:有一单符号离散无记忆信源对该信源编二进制香农码编码过程:2.1.2香农编码算

8、法设计:通过文本框输入信源符号及相应概率。用冒泡法将信源符号及概率依概率由大到小排序,计算其累加概率,用数学公式计算每个信源符号的。最后把结果写入列表控件中,以可视化方式显示编码结果。2.2费诺编码2.2.1费诺编码思想设有离散无记忆信源1.按信源符号的概率从大到小的顺序排队不妨设2.将依次排列的信源符号按概率值分为两大组,使两个组的概率之和近似相同,并对各组赋予一个二进制码元“0”和“1”。 3.将每一大组的信源符号再分为两组,使划分后的两个组的概率之和近似相同,并对各组赋予一个二进制符号“0”和“1”。 4.如此重复,直至每个组只剩下一个信源符号为止。 5.信源符号所对应的码字即为费诺码。

9、例:有一单符号离散无记忆信源对该信源编二进制费诺码2.2.2费诺编码算法设计通过输入字符串或打开相关文件获取字符串,用字符串处理方法统计每个字符的数量及运算其概率。然后按照每个字符的概率用冒泡法进行排序。然后用递归的思想进行费诺编码,求得了每个字符的二进制码字。并且对编码后的平均码长,以及编码的传输效率进行了求解。第3章 软件详细设计3.1主界面设计编码软件主界面如图3.1.1所示,基本功能在菜单中进行选择。用Falsh CS5软件设计一个简单的Flash插入到主界面,使界面更美观而且形象。 图3.1.1 主界面3.2功能设计3.2.1香农编码的实现香农编码是通过编辑框依次输入信源符号和概率的

10、,输入时同时完成校验工作。即单个信源符号概率不能大于1,信源概率和不能大于1,概率和不为1时不能进行编码。正确输入信源符号及其概率后便可计算出该离散信源的码长、码字等信息。可以讲编码结果保存为txt文本等文件。图3.2.1香农编码界面图3.2.2保存编码结果(1) 添加信源代码:void CShannonCode:OnAdd() / TODO: Add your control notification handler code hereUpdateData(true); CString tempf1,tempf2;/添加之前、之后列表控件值float sum=0.0, sum2=0.0, t

11、empa1, tempa2;if(m_prob = 1.0)/单个信源符号概率不能大于1MessageBox(概率小于1!,提示);return;for(int i = 0;i = 1.0)/如果和大于等于1,则不再添加MessageBox(信源概率和已等于1!无法添加!,提示);return;CString s1,s2;m_list1.InsertItem(r,);s1.Format(%s,m_single);m_list1.SetItemText(r,0,s1);s2.Format(%.6f,m_prob);m_list1.SetItemText(r,1,s2);r+;count+;for

12、(int j = 0;j 1.0)/如果添加后概率和大于1,则最后添加的信源不做计算MessageBox(当前信源添加后信源概率和大于1!,提示);s1.Format(%s,);m_list1.SetItemText(r-1,0,s1);s2.Format(%s,);m_list1.SetItemText(r-1,1,s2);r-;count-;return;m_single = ;m_prob = 0.0;UpdateData(false); (2) 算法实现代码:void CShannonCode:Count() CString singe,temp,s;char binN=;CString singleN;/信源符号数组float pN;/信源概率数组int i,j,c3;float btemp,vtemp;double c1,c2;/读取输入的信源符号和概率for(i = 0; i count; i+)singlei =m_list1.GetItemText(i,0); temp=m_list1.GetItemText(i,1); pi = (float)(atof(temp);/信源符号和概率按概率大小排序for(i = 1;i

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号