信息论与编码课程设计

合集下载

信息论与编码课程设计

信息论与编码课程设计

信息论与编码课程设计一、课程背景信息和通信技术的快速发展,使得我们的生活变得越来越依赖于数字信息处理。

在现代通信系统中,信息的传输、存储、处理和安全性等方面的问题得到了广泛的关注和研究。

而信息论和编码技术作为数字通信系统的基础知识和技能之一,对于了解数字通信和信息处理领域具有重要的意义。

二、课程目标本门课程旨在使学生掌握以下内容:1.熟悉信息论的基本概念和理论框架;2.理解信源编码和信道编码的基本原理和实际应用;3.掌握一些典型的编码技术,如香农编码、哈夫曼编码、CRC 等;4.能够分析和评估不同的编码方案,并设计实际的编码系统;5.熟练掌握 MATLAB 编程,通过编程实现和模拟不同的编码方案。

三、课程教学方式本门课程采用讲授理论基础、案例分析、编码设计实践、编程实现等多种教学方式相结合,注重理论与实践的结合,充分激发学生的学习兴趣和创新思维。

四、课程内容1. 信息论基础信息的概念和量化,信息的熵和条件熵,信息的熵编码和香农编码,信道容量和误差概率等内容。

2. 信源编码离散无记忆信源的编码,霍夫曼编码,自适应霍夫曼编码,算术编码等内容。

3. 信道编码编码和译码的基本概念,线性块编码,循环冗余校验码CRC,卷积码,卷积码译码等内容。

4. 码量与码率控制码率控制的概念,码率控制的基本方法,码率控制的实现等内容。

5. 信道编码的应用无线通信系统中信道编码的应用,如GSM和CDMA系统等,数字电视的信道编码等内容。

五、课程设计1. 课程设计目标本门课程设计的目标是让学生通过实际的编码设计和仿真实现对课程所学理论知识的理解和掌握,提高学生的创新能力和实际应用能力。

2. 课程设计内容1.实际编码案例的分析和评估;2.编码方案的设计和实现;3.编码方案的性能分析和比较;4.编码系统的仿真和调试。

3. 课程设计时间安排•第一周:课程设计介绍和案例选题;•第二周:方案设计和实现;•第三周:性能分析和比较;•第四周:编码系统的仿真和调试;•第五周:报告制作和展示。

2024版信息论与编码教案

2024版信息论与编码教案

应用:算术编码在图像、视频和音频压 缩等领域具有广泛应用,如JPEG 2000、 H.264等标准中采用了算术编码技术。 与霍夫曼编码相比,算术编码具有更高 的压缩比和更好的性能表现。
06
多媒体信息压缩编码
多媒体信息压缩编码的基本概念与原理
压缩编码的必要性
多媒体数据量大,存储和传输成本高,需通过压缩编码降低数据 量。
典型编码方法
03
详细介绍几种典型的编码方法,如香农编码、哈夫曼编码、算
术编码等。
教学目标与要求
掌握信息论与编码的基本理论
通过学习,使学生能够深入理解信息论与编 码的基本概念和原理。
培养编码实践能力
通过案例分析、实验等环节,提高学生的编 码实践能力。
培养创新能力
鼓励学生探索新的编码方法,培养创新思维 和解决问题的能力。
编码分类
包括无损编码和有损编码,前者 可以完全恢复原始信息,后者则 会损失部分信息以换取更高的压 缩比。
霍夫曼编码的原理与应用
• 原理:霍夫曼编码是一种可变长度编码方法,根据信源符 号出现的概率来构造最优编码。它利用概率大的符号用较 短的码字表示,概率小的符号用较长的码字表示,从而实 现平均码长最短。
信息论的基本概念
信息
信息是事物运动状态或存在方式的不确定性的描述。
信息系统
由信源、信道、信宿等组成的传输和处理信息的系统。
信息论
研究信息的传输、处理、存储和检索等过程中的基本 理论和方法。
信息的度量与性质
信息的度量
用概率和统计的方法对信息进行量化,如香农 信息熵、互信息等。
信息的性质
包括普遍性、客观性、可传递性、可共享性、 可压缩性等。
压缩编码的可能性

信息论与编码课程设计

信息论与编码课程设计

信息论与编码课程设计报告设计题目:统计信源熵、香农编码与费诺编码专业班级:XXXXXXXXXXXX姓名:XXXXXXXXXXXX学号:XXXXXXXXXXXX指导老师:XXXXXXXXXXXX成绩:时间:2015年3月31日目录一、设计任务与要求 (2)二、设计思路 (2)三、设计流程图 (5)四、程序及结果 (7)五、心得体会 (11)六、参考文献 (12)附录 (13)一、 设计任务与要求1. 统计信源熵要求:统计任意文本文件中各字符(不区分大小写)数量,计算字符概率,并计算信源熵。

2. 香农编码要求:任意输入消息概率,利用香农编码方法进行编码,并计算信源熵和编码效率。

3. 费诺编码要求:任意输入消息概率,利用费诺编码方法进行编码,并计算信源熵和编码效率。

二、 设计思路1、统计信源熵:统计信源熵就是对一篇英文文章中的i 种字符(包括标点符号及空格,英文字母不区分大小写)统计其出现的次数count i (),然后计算其出现的概率()p i ,最后由信源熵计算公式:1()()log ()ni i n H x p x p x ==-∑算出信源熵()H x 。

所以整体步骤就是先统计出文章中总的字符数,然后统计每种字符的数目,直到算出所有种类的字符的个数,进而算出每种字符的概率,再由信源熵计算公式计算出信源熵。

在这里我选择用Matlab 来计算信源熵,因为Matlab 中系统自带了许多文件操作和字符串操作函数,其计算功能强大,所以计算信源熵很是简单。

2、香农编码信源编码模型:信源编码就是从信源符号到码符号的一种映射f ,它把信源输出的符号i a 变换成码元序列i x 。

1,2,...,,i i N f a i q x =→:1:{,...,}q S s a a ∈ 信源 12{,...,}li i i i i X x x x = 码元1{,...,}1,2,...,i q S a a i N ∈=1,2,...,N i q =1:{,...,}r X x x x ∈ 码符号N 次扩展信源无失真编码器凡是能载荷一定的信息量,且码字的平均长度最短,可分离的变长码的码字集合都可以称为最佳码。

信息论与编码技术》实验教案

信息论与编码技术》实验教案

信息论与编码技术实验教案第一章:信息论基础1.1 实验目的1. 了解信息的基本概念及其度量方法;2. 掌握信息的熵、冗余度和信道容量等基本概念。

1.2 实验原理1. 信息的基本概念:信息、消息、信源等;2. 信息的度量:平均信息量、熵、冗余度等;3. 信道容量和编码定理。

1.3 实验设备与材料1. 计算机及投影仪;2. 相关实验软件。

1.4 实验步骤1. 讲解信息的基本概念及其度量方法;2. 分析实际例子,演示信息的熵、冗余度和信道容量的计算过程;3. 让学生通过实验软件进行相关计算和分析。

1.5 思考与讨论1. 信息量与消息长度的关系;2. 信道容量在实际通信系统中的应用。

第二章:数字基带编码2.1 实验目的1. 掌握数字基带编码的基本原理;2. 学会使用相关软件进行数字基带编码的仿真。

2.2 实验原理1. 数字基带编码的定义和分类;2. 常用数字基带编码方法:NRZ、RZ、曼彻斯特编码等;3. 数字基带编码的性能评估:误码率、带宽利用率等。

2.3 实验设备与材料1. 计算机及投影仪;2. 相关实验软件。

2.4 实验步骤1. 讲解数字基带编码的基本原理和方法;2. 演示常用数字基带编码的仿真效果;3. 让学生通过实验软件进行数字基带编码的仿真实验。

2.5 思考与讨论1. 数字基带编码的优缺点;2. 如何在实际通信系统中选择合适的基带编码方法。

第三章:信道编码与误码控制3.1 实验目的1. 了解信道编码的基本原理;2. 掌握常见的信道编码方法;3. 学会使用相关软件进行信道编码的仿真。

3.2 实验原理1. 信道编码的定义和作用;2. 常用信道编码方法:卷积编码、汉明编码、里德-所罗门编码等;3. 误码控制原理:检错、纠错等。

3.3 实验设备与材料1. 计算机及投影仪;2. 相关实验软件。

3.4 实验步骤1. 讲解信道编码的基本原理和方法;2. 演示常用信道编码的仿真效果;3. 让学生通过实验软件进行信道编码的仿真实验。

信息论与编码课程设计 河南理工大学

信息论与编码课程设计   河南理工大学

一设计目的信息论与编码是我们电子信息工程的一门重要的专业课,通过对本次课程设计,学习将学到的理论知识用于实践,同时也学习了用软件编写程序,进一步对本课程知识的巩固和理解。

学习分析问题,解决问题的方法和途径,提高对本专业的学习兴趣。

二设计任务与要求(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) ,则它的条件自信息量定义为条件概率对数的负值:& 离散信源熵为信源中各个符号不确定度的数学期望,即单位为:比特/符号 或者 比特/符号序列。

《信息论与编码技术》实验教案

《信息论与编码技术》实验教案

卷积码编码与译码方法探讨
卷积码原理
理解卷积码的基本原理和编码过程,包括卷积码 的生成函数和约束长度等概念。
编码实现
通过编程实现卷积码的编码过程,掌握卷积码编 码算法的实现方法。
译码方法
探讨卷积码的译码方法,包括维特比译码算法等 ,并通过仿真实验进行验证。
差错控制编码技术应用实践
应用场景
了解差错控制编码技术在通信、存储等领域的 应用场景和需求。
差错控制编码方法
介绍常用的差错控制编码方法,如奇偶校验码、循 环冗余校验码(CRC)等,并分析其性能特点。
阐述差错控制的基本概念、原理及其在数字 通信系统中的重要性。
差错控制策略设计与实现
通过实验,设计并实现一种基于特定编码方 法的差错控制策略,评估其在数字通信系统 中的性能。
图像压缩编码算法研究及实现
实验内容
设计并实现一个离散信道信息传输系统,通过输入不同的信源符号序列和信道 参数,观察并分析系统性能。
离散信道中的信息传输实验
实验步骤
1
2
1. 确定信源符号集及其概率分布;
3
2. 设计合适的信道编码方案;
离散信道中的信息传输实验
01
3. 在离散信道中实现编码后的信号传输;
02
4. 在接收端进行解码并计算误码率;
详细阐述Turbo码的编码算法、译码算法的具体实现步骤,包括交 织器设计、分量编码器选择、迭代译码算法等。
性能评估方法
介绍Turbo码性能评估的主要指标,如误码率、误帧率等,以及相 应的仿真实验方法和结果分析。
LDPC码编译码算法研究
LDPC码基本原理
介绍LDPC码的定义、分类、编码原理、译码原理等基本概念。

信息与编码论课程设计

信息与编码论课程设计

信息与编码论课程设计一、课程目标知识目标:1. 学生能理解信息与编码的基本概念,掌握不同编码方式的特点及应用场景。

2. 学生能掌握二进制、十进制等数制转换方法,并运用这些方法进行编码和解码。

3. 学生了解信息安全的基本原理,认识到保护信息的重要性。

技能目标:1. 学生具备运用二进制进行简单计算和信息编码的能力。

2. 学生能够运用所学知识,分析并解决实际问题,例如:设计一个简单的加密和解密程序。

3. 学生能够通过合作与交流,共同探讨信息与编码的应用,提高团队协作能力。

情感态度价值观目标:1. 学生培养对信息科学的兴趣,激发探究精神,树立创新意识。

2. 学生认识到信息与编码在科技发展和社会生活中的重要作用,增强社会责任感。

3. 学生在合作交流中,学会尊重他人,培养良好的沟通能力和团队协作精神。

课程性质:本课程为理论与实践相结合的课程,旨在帮助学生掌握信息与编码的基本知识,提高实际操作能力。

学生特点:六年级学生具有一定的逻辑思维能力和自主学习能力,对新鲜事物充满好奇,喜欢探索和挑战。

教学要求:注重启发式教学,引导学生主动参与,培养实践操作能力;关注学生个体差异,因材施教,提高教学质量。

通过分解课程目标为具体学习成果,使学生在课程学习中获得全面、均衡的发展。

二、教学内容1. 信息与编码基本概念:介绍信息的定义、特性及编码的必要性;讲解不同编码方式(如:文字编码、图像编码、声音编码等)及其应用场景。

教材章节:第一章 信息与编码基本概念2. 数制转换:重点讲解二进制与十进制的转换方法,拓展至其他进制转换;通过实例分析,使学生掌握数制转换在实际应用中的运用。

教材章节:第二章 数制转换及其应用3. 编码与解码:以二进制编码为例,讲解编码和解码的基本原理;引导学生运用所学知识进行简单的编码与解码实践。

教材章节:第三章 编码与解码技术4. 信息安全:介绍信息安全的基本原理,如加密、解密、数字签名等;通过案例分析,使学生了解信息安全在现实生活中的重要性。

《信息理论与编码》课程设计指导书

《信息理论与编码》课程设计指导书

《信息理论与编码》课程设计指导书指导教师:设计专业及班级:设计时间:一、设计的作用、目的《信息论与编码》是一门理论与实践密切结合的课程,课程设计是其实践性教学环节之一,同时也是对课堂所学理论知识的巩固和补充。

其主要目的是加深对理论知识的理解,掌握查阅有关资料的技能,提高实践技能,培养独立分析问题、解决问题及实际应用的能力。

通过完成具体编码算法的程序设计和调试工作,提高编程能力,深刻理解信源编码、信道编译码的基本思想和目的,掌握编码的基本原理与编码过程,增强逻辑思维能力,培养和提高自学能力以及综合运用所学理论知识去分析解决实际问题的能力,逐步熟悉开展科学实践的程序和方法。

二、设计任务及要求题目一:二进制哈夫曼编码的分析与MATLAB实现1.理解无失真信源编码的理论基础,掌握无失真信源编码的基本方法;2.根据哈夫曼编码算法,考虑一个有多种可能符号(各种符号发生的概率不同)的信源,得到哈夫曼编码和码树;3.掌握哈夫曼编码的优缺点;4.能够使用MATLAB或其他语言进行编程,编写的函数要有通用性,要理解每个函数的具体意义和适用范围,对主要函数的功能和参数做详细说明,要求程序输出显示所有的码字,平均码长,编码效率。

题目二:线性分组码编码的分析与MATLAB实现1.理解信道编码的理论基础,掌握信道编码的基本方法;2.掌握生成矩阵和一致校验矩阵的作用和求解方法;3.针对线性分组码分析其纠错能力,并能够对线性分组码进行译码;4.能够使用MATLAB或其他语言进行编程,实现编码及纠错,编写的函数要有通用性。

题目三:费诺编码的分析与实现1.理解无失真信源编码的理论基础,掌握无失真信源编码的基本方法;2.根据费诺编码算法,考虑一个有多种可能符号(各种符号发生的概率不同)的信源,得到费诺编码;3.掌握费诺编码的优缺点;4.能够使用MATLAB或其他语言进行编程,编写的函数要有通用性,要理解每个函数的具体意义和适用范围,对主要函数的功能和参数做详细说明。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

信息论与编码课程设计报告设计题目:统计信源熵、香农编码与费诺编码专业班级:XXXXXXXXXXXX姓名:XXXXXXXXXXXX学号:XXXXXXXXXXXX指导老师:XXXXXXXXXXXX成绩:时间:2015年3月31日目录一、设计任务与要求 (2)二、设计思路 (2)三、设计流程图 (5)四、程序及结果 (7)五、心得体会 (11)六、参考文献 (12)附录 (13)一、 设计任务与要求1. 统计信源熵要求:统计任意文本文件中各字符(不区分大小写)数量,计算字符概率,并计算信源熵。

2. 香农编码要求:任意输入消息概率,利用香农编码方法进行编码,并计算信源熵和编码效率。

3. 费诺编码要求:任意输入消息概率,利用费诺编码方法进行编码,并计算信源熵和编码效率。

二、 设计思路1、统计信源熵:统计信源熵就是对一篇英文文章中的i 种字符(包括标点符号及空格,英文字母不区分大小写)统计其出现的次数count i (),然后计算其出现的概率()p i ,最后由信源熵计算公式:1()()log ()ni i n H x p x p x ==-∑算出信源熵()H x 。

所以整体步骤就是先统计出文章中总的字符数,然后统计每种字符的数目,直到算出所有种类的字符的个数,进而算出每种字符的概率,再由信源熵计算公式计算出信源熵。

在这里我选择用Matlab 来计算信源熵,因为Matlab 中系统自带了许多文件操作和字符串操作函数,其计算功能强大,所以计算信源熵很是简单。

2、香农编码信源编码模型:信源编码就是从信源符号到码符号的一种映射f ,它把信源输出的符号i a 变换成码元序列i x 。

1,2,...,,i i Nf a i q x =→:1:{,...,}q S s a a ∈ 信源 12{,...,}lii i i i X x x x = 码元1{,...,}1,2,...,i q S a a i N ∈= 1,2,...,N i q =1:{,...,}r X x x x ∈ 码符号N 次扩展信源无失真编码器凡是能载荷一定的信息量,且码字的平均长度最短,可分离的变长码的码字集合都可以称为最佳码。

为此必须将概率大的信息符号编以短的码字,概率小的符号编以长的码字,使得平均码字长度最短。

能获得最佳码的编码方法主要有:香农(Shannon )、费诺(Fano )、哈夫曼(Huffman )编码等。

香农第一定理: 离散无记忆信源为1212......()()()......q q s s s S p s p s p s P ⎡⎤⎡⎤=⎢⎥⎢⎥⎣⎦⎣⎦熵()H S ,其N 次扩展为1212......()()()......N q q S p p p P αααααα⎡⎤⎡⎤=⎢⎥⎢⎥⎢⎣⎦⎦⎣熵为()N H S ,码符号集为12(,,...,)r Xx x x =。

先对信源N S 进行编码,总可以找到一种编码方法,构成唯一可译码,使S 中每个信源符号所需的平均码长满足()1()log log N L H S H S r N N r+>≥ 且当N →∞时有()()log lim N r N L H S H S N r →∞== ,L 是平均码长1()Nqi i i L p αλ==∑,i λ是i α对应的码字长度。

香农编码方法:(1) 将信源消息符号按其出现的概率大小依次排列:12...n p p p ≥≥ (2)确定满足下列不等式整数码长i K 为()()1i i i lb p K lb p -≤≤-+(3)为了编成唯一可译码,计算第i 个消息的累加概率为11()i i k k P p a -==∑(4)将累加概率i P 变成二进制数。

(5)取i P 二进制数小数点后i K 位即为该消息符号的二进制码字。

3、费诺编码方法(1)将信源消息符号按其出现的概率大小依次排列:12...n p p p ≥≥ (2)将依次排列的信源符号按概率值分为两大组,使两个组的概率之和近似相同,并对各组赋予一个二进制码元“0”和“1”。

(3)将每一大组的信源符号再分为两组,使划分后的两个组的概率之和近似相同,并对各组赋予一个二进制符号“0”和“1”。

(4)如此重复,直至每个组只剩下一个信源符号为止。

(5)信源符号所对应的码字即为费诺码。

三、 设计流程图① ②由信源熵计算公式1()()log ()ni i n H x p x p x ==-∑计算出信源熵⑤ 2、香农编码输入概率矩阵根据公式调用函数计算码长3、费诺编码开始输入概率矩阵将每一大组的的概率重复上一步操作,直到每组只剩一个概率四、程序及结果1、统计信源熵的Matlab程序function h=entropy(p)clcfid=fopen('shuju.txt','r');%打开txt文件[ex,num]=fscanf(fid,'%c',inf)%读取二进制文件的数据,并将数据存入矩阵str1=lower(ex)%将字符串中的大写字母转换成小写字母sort_str1=sort(str1);%按照字符的ASCII值对字符串排序j=1;for i=1:length(sort_str1)-1%计算出字符串的种类if strcmp(sort_str1(i),sort_str1(i+1))~=1%比较两个字符串是否完全相等,相等是1,否则0j=j+1;str2(j)=sort_str1(i);endstr2(j+1)=sort_str1(i+1);endfor i = 1:length(str2)%length函数获取字符串长度str_num =strfind(sort_str1,str2(i));%strfind(S1,S2):寻找S2是否匹配S1,并返回S2的位置count1(i) = length(str_num);endstr2count=count1(3:end)p=count./sum(count)sum(-p.*log2(p))%计算信源熵待读取的英文:The Pressure of Graduate StudentsNow I am a post graduate student, I will graduate next year, so I start to find jobs recently, I feel so much pressure, though I have good education, I still get rejection from the companies. The pressure of graduate students are so heavy, the competition isso fierce that many students can’t get the ideal jobs. They should adjust their strategies.The pressure of graduate students is so heavy. On the one hand, they don’t have experience, so they don’t know how to get the job interview and miss many chances. On the other hand, there are more and more students have high education, some have received higher education, some have studies abroad which make their resumes stand out. Those average students don’t have advantages over the above mentioned ones.Average students need to make their resumes specially, so they can have the chance. They can describe their characteristic to fit the job, the employers will see this and give you the chance. Students can also make their internship experience stand out, becausethe employers pay special attention to it.The job pressure is heavy for every graduate student, if the students take the wise strategy, they can have more chances to get the job.程序运行结果:总共出现的字符种类: ,.abcdefghijklmnoprstuvwxy’每种字符对应出现的次数: [206 16 11 78 10 33 42161 10 20 65 53 8 5 16 21 58 64 16 55 80 113 36 20 8 3 20 4]每种字符出现的概率:[ 0.1672 0.0130 0.0089 0.0633 0.0081 0.0268 0.0341 0.1307 0.0081 0.0162 0.0528 0.0430 0.0065 0.0041 0.0130 0.0170 0.0471 0.0519 0.0130 0.0446 0.0649 0.0917 0.0292 0.0162 0.0065 0.0024 0.0162 0.0032]H x=4.1250信源熵:()2、香农编码程序function c=shannon(p)% p=[0.25 0.25 0.20 0.15 0.10 0.05];% shannon(p);[p,index]=sort(p);p=fliplr(p);%从大到小n=length(p);pa=0;%累加概率for i=2:npa(i)=pa(i-1)+p(i-1);endk=ceil(-log2(p));%码长计算c=cell(1,n);%生成元胞数组,存码字,是cell,跟上一行不一样for i=1:nc{i}= '';tmp=pa(i);for j=1:k(i)tmp=tmp * 2;if tmp>=1tmp=tmp - 1;c{i}(j)= '1';elsec{i}(j)= '0';endendend%p%pa%交换回原来的顺序c=fliplr(c);c(index)=c;fprintf('信源信息熵:\n');H=sum(-p.*log2(p))%计算信源熵fprintf('平均码长:\n');K=sum(p.*k)%计算平均码长fprintf('编码效率:\n');w=H./K%计算编码效率fprintf('码字:\n');c程序运行结果:p=[0.25 0.25 0.20 0.15 0.10 0.05];shannon(p);信源信息熵:H = 2.4232平均码长:K = 2.7000编码效率:w = 0.8975码字:c = '01' '00' '100' '101' '1101' '11110'3、费诺编码程序主程序function c=fano1(p)% p=[0.25 0.25 0.20 0.15 0.10 0.05]% c=fano1(p)n=size(p,2);if n==1c=cell(1,1);c{1}='';returnend[p,index]=sort(p);%按概率排序p=fliplr(p);total=sum(p);%总概率acc=0;%累积概率flag=0;%是否到达尾部的标志for i=1:n-1newacc=acc+p(i);if abs(total-2 * newacc)>=abs(total - 2*acc) flag=1;break;endacc=newacc;endif ~flagi=n;endsplit=i;%从分界点对两边的码递归做fanoc1=fano1(p(1:split-1));c2=fano1(p(split:n));c=cell(1,n);%添加前缀0,1for i=1:split-1c{i}=strcat('0',c1{i});endfor i = split:nc{i}=strcat('1',c2{i-split+1} );end%将顺序调整回去c=fliplr(c);c(index)=c;子程序function []=fano2(c,p)for i=1:length(c)%求平均码长count(i)=length(cell2mat(c(i)));endfprintf('信源信息熵:\n');H=sum(-p.*log2(p))%计算信源熵fprintf('平均码长:\n')K=sum(count.*p)%计算平均码长fprintf('编码效率:\n')w=H./K%计算编码效率fprintf('码字:\n')c程序运行结果:p=[0.25 0.25 0.20 0.15 0.10 0.05]c=fano1(p)fano2(c,p)p = 0.2500 0.2500 0.2000 0.1500 0.1000 0.0500c = '00' '01' '10' '110' '1110' '1111'信源信息熵:H = 2.4232平均码长:K = 2.4500编码效率:w = 0.9891码字:c = '00' '01' '10' '110' '1110' '1111'五、心得体会做这次课程设计前前后后花了三天时间,之前并没有用心想,只是看了看网上的资料,看人家都是用什么方法解决的。

相关文档
最新文档