信息论与编码课程设计报告

合集下载

信息论与编码实验报告

信息论与编码实验报告

信息论与编码实验报告

信息论与编码实验报告实验一:英文文本信息量的计算一、实验目的及要求a)实验目的1、通过本实验熟悉Matlab 软件编程环境2、编写M 文件实现对英文文本信息量的统计,掌握信息量、信源熵的计算方法b)实验要求1、了解matlab 中M 文件的编辑、调试过程2、编写程序实现对给定英文文本信息量的统计3、英文文本中字母不区分大小写,考虑空格的信息量,但不考虑标点符号的信息量4、建议英文文本采用txt 格式二、实验步骤及运行结果记录a)实验步骤1、查找各个英文字母及空格出现的频率2、在Matlab 中读取给定的英文文章3、计算英文文章的长度4、统计在该文章中各个字母及空格出现的次数并放入数组N 中5、计算各个字母和空格的信息量及整篇文

章的信息量6、计算信源熵b)实验结果sumI = +003;H = 三、程序流程图四、程序清单,并注释每条语句五、实验小结通过本次实验熟悉了Matlab 软件编程环境和一些函数的功能及使用,掌握了信息量、信源熵的计算方法。 1 附一:开始读取英文文章计算文章的长度嵌套的for 循环语句假判断是否符合循环条件真if 否elseif 判断字是否为大写母输入相应的频率否elseif 判断是否为小写字母计算各个字母、空格及整篇文章的信息量是判断是否为小写字母是计算信源熵是放入数组N 中对应的位置放入数组N 中对应的位置放入数组N 中对应的位置结束附二: wenzhang=textread(‘实验一:english ‘,’\’); M=size(wenzhang); row=M(1,1); line=M(1,2); N=zeros(1,27); for i=1:row for j=1:line %读取英文文章%文章的长度if

信息编码设计

信息编码设计

吉林建筑大学

电气与电子信息工程学院

信息理论与编码课程设计报告

设计题目:线性分组码编码的分析与实现

专业班级:电子信息工程112

学生姓名:王朝阳

学号:10211218

指导教师:李红杨佳

设计时间:2014.11.24-2014.12.5

教师评语:

成绩评阅教师日期

第1章 概述

1.1设计的作用、目的

《信息论与编码》是一门理论与实践密切结合的课程,课程设计是其实践性教学环节之一。一方面,通过让学生完成具体编码算法的程序设计和调试工作,提高编程能力,深刻理解编码理论和信息论中的基本概念,同时增强其逻辑思维能力,培养和提高学生的自学能力以及综合运用所学理论知识去分析解决实际问题的能力;另一方面是对课堂所学理论知识作一个总结和补充。

1.2设计任务及要求

设计一个(6, 3)线性分组码的编译码程序:完成对任意序列的编码,根据生成矩阵形成监督矩阵,得到伴随式,并根据其进行译码,同时验证工作的正确性。

通过课程设计各环节的实践,应使学生达到如下要求:

1. 理解无失真信源编码的理论基础,掌握无失真信源编码的基本方法;

2. 深刻理解信道编码的基本思想与目的,理解线性分组码的基本原理与编码过程;

3. 能够使用MATLAB 或其他语言进行编程,编写的函数要有通用性。

1.3设计内容

已知一个(6,3)线性分组码的校验元与信息元有如下限定关系。设码字为 (c 5, c 4, c 3, c 2, c 1, c 0)

⎢⎢⎢⎣⎡⎥

⎥⎥⎦⎤

=011101110Q 求出标准校验矩阵、Q 矩阵、标准生成矩阵,完成对任意信息序列(123-个许用码字)的编码。

中南大学信息论与编码编码部分实验报告

中南大学信息论与编码编码部分实验报告

信息论与编码编码部分实验报告

课程名称:信息论与编码

实验名称:关于香农码费诺码Huffman码的实验学院:信息科学与工程学院

班级:电子信息工程1201

姓名:viga

学号:

指导老师:张祖平

日期:2014年1月3日

目录

⊙实验目的及要求

1.1 实验目的 (4)

1.2 开发工具及环境 (4)

1.3 需求分析与功能说明 (4)

⊙实验设计过程

2.1 用matlab实现香农码、费诺码和Huffman编码

2.1.1 说明 (6)

2.1.2 源代码 (7)

2.1.3 运行结果(截图) (19)

2.2 用C\C++ 实现香农码

2.2.1 说明 (22)

2.2.2 源代码 (23)

2.2.3 运行结果(截图) (26)

2.3 用C\C++ 实现Huffman码

2.3.1 说明 (26)

2.3.2 源代码 (29)

2.3.3 运行结果(截图) (36)

2.4 用C\C++ 实现费诺码

2.4.1 说明 (37)

2.4.2 源代码 (37)

2.4.3运行结果结果(截图) (40)

⊙课程设计总结 (42)

⊙参考资料

4.1 课程设计指导书 (43)

实验目的及要求

1.1 实验目的

1.掌握香农码、费诺码和Huffman编码原理和过程。

2.熟悉matlab软件的基本操作,练习使用matlab实现香农码、

费诺码和Huffman编码。

3.熟悉C/C++语言,练习使用C/C++实现香农码、费诺码和

Huffman编码。

4.应用Huffman编码实现文件的压缩和解压缩。

1.2 开发工具及环境

MATLAB 7.0、wps文字、红精灵抓图精灵2010

信息论与编码实验报告

信息论与编码实验报告

信息论与编码实验报告实验课程名称:赫夫曼编码(二进制与三进制编码)

专业信息与计算科学

班级信息与计算科学1班

学生姓名李林钟

学号 2013326601049

指导老师王老师

一、实验目的

利用赫夫曼编码进行通信可以大大提高通信利用率,缩短信息传输时间,降低传输成本。赫夫曼编码是信源编码中最基本的编码方法。

理解赫夫曼编码,无论是二进制赫夫曼编码,还是m 进制赫夫曼编码,都要理解其编码原理和编码步骤。 ● 回顾无失真信源编码定理,理解无失真编码的基本原理和常用编码方法。。 ●

掌握二进制赫夫曼编码和m 进制赫夫曼编码的基本步骤,能计算其平均码长,编码效率等。 ●

应用二进制赫夫曼编码或m 进制赫夫曼编码处理简单的实际信源编码问题。

二、实验环境与设备

1、操作系统与编程软件:windows 操作系统,cfree5.0, Visual C++ 6.0。

2、编程语言:C 语言以及C++语言 三、实验内容

1. 二进制赫夫曼编码原理及步骤: (1)信源编码的计算

设有N 个码元组成的离散、无记忆符号集,其中每个符号由一个二进制码字表示,信源符号个数n 、信源的概率分布P={p(s i )},i=1,…..,n 。且各符号xi 的以li 个码元编码,在变长字编码时每个符号的平均码长为∑==n

i li xi p L 1)( ;

信源熵为:)(log )()(1

xi p xi p X H n

i ∑=-= ;

唯一可译码的充要条件:11

≤∑=-n

i Ki m ;

其中m 为码符号个数,n 为信源符号个数,Ki 为各码字长度。 (2)二元霍夫曼编码规则

信息与编码论课程设计

信息与编码论课程设计

信息与编码论课程设计

一、课程目标

知识目标:

1. 学生能理解信息与编码的基本概念,掌握不同编码方式的特点及应用场景。

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

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

技能目标:

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

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

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

情感态度价值观目标:

1. 学生培养对信息科学的兴趣,激发探究精神,树立创新意识。

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

3. 学生在合作交流中,学会尊重他人,培养良好的沟通能力和团队协作精神。课程性质:本课程为理论与实践相结合的课程,旨在帮助学生掌握信息与编码的基本知识,提高实际操作能力。

学生特点:六年级学生具有一定的逻辑思维能力和自主学习能力,对新鲜事物

充满好奇,喜欢探索和挑战。

教学要求:注重启发式教学,引导学生主动参与,培养实践操作能力;关注学生个体差异,因材施教,提高教学质量。通过分解课程目标为具体学习成果,使学生在课程学习中获得全面、均衡的发展。

二、教学内容

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

教材章节:第一章 信息与编码基本概念

2. 数制转换:重点讲解二进制与十进制的转换方法,拓展至其他进制转换;通过实例分析,使学生掌握数制转换在实际应用中的运用。

信息论与编码课程实验报告

信息论与编码课程实验报告

福建农林大学计算机与信息学院

信息工程类

信息论与编码课程实验报告

实验项目列表

实验名称1:信源建模

一、实验目的和要求

(1)进一步熟悉信源建模;

(2)掌握MATLAB程序设计和调试过程中数值的进制转换、数值与字符串之间的转换等技术。

二、实验内容

(1)假设在一个通信过程中主要传递的对象以数字文本的方式呈现。

(2)我们用统计的方式,发现这八个消息分别是由N1,N2,…,N8个符号组成的。在这些消息是中出现了以下符号

(符号1,符号2,…,符号M)

每个符号总共现了

(次数1,次数2,…,次数M)

我们认为,传递对象的信源模型可表示为:X为随机变量(即每次一个字符);取值空间为:(符号1,符号2,…,符号M);其概率分布列为:(次数1/(N1+…+N8),…,次数M/( N1+…+N8))

三、实验环境

硬件:计算机软件:MATLAB

四、实验原理

图像和语声是最常用的两类主要信源。要充分描述一幅活动的立体彩色图像,须用一个四元的随机矢量场X(x,y,z,t),其中x,y,z为空间坐标;t 为时间坐标;而X是六维矢量,即表示左、右眼的亮度、色度和饱和度。然而通常的黑白电视信号是对平面图像经过线性扫描而形成。这样,上述四元随机矢量场可简化为一个随机过程X(t)。图像信源的最主要客观统计特性是信源的幅度概率分布、自相关函数或功率谱。关于图像信源的幅度概率分布,虽然人们已经作了大量的统计和分析,但尚未得出比较一致的结论。至于图像的自相关函数,实验证明它大体上遵从负指数型分布。其指数的衰减速度完全取决于图像类型与图像的细节结构。实际上,由于信源的信号处理往往是在频域上进行,这时可以通过傅里叶变换将信源的自相关函数转换为功率谱密度。功率谱密度也可以直接

面向人工智能应用的《信息论与编码》课程教学初探

面向人工智能应用的《信息论与编码》课程教学初探

面向人工智能应用的《信息论与编码》课程教学初探

1. 引言

1.1 研究背景

信息论与编码作为计算机科学领域中重要的基础知识,与人工智

能的结合已经成为当前研究的热点之一。在人工智能应用的不断发展

过程中,信息论与编码的理论不仅为人工智能算法提供了理论支持,

还为数据处理、通信和安全等方面提供了有力的技术保障。这种融合

带来了许多新的研究方向和挑战,也为教育工作者提供了更多的教学

机会。

研究背景部分旨在探讨信息论与编码在人工智能应用中的重要性

及现阶段存在的问题与挑战。通过深入分析信息论与编码的基础概念

以及它们在人工智能领域的应用情况,可以为未来更好地开展面向人

工智能的《信息论与编码》课程教学提供理论依据和实践指导。对于学术界和工业界来说,了解这一课题的研究背景能帮助他们更好地把握

最新的技术动态,推动人工智能领域的发展与创新。

1.2 研究目的

本文旨在探讨面向人工智能应用的《信息论与编码》课程教学初探,通过对信息论与编码基础概念以及面向人工智能的信息论应用和编码

技术应用进行深入分析,旨在为培养学生对人工智能领域的深入理解

和应用能力提供理论与实践支持。具体目的包括:

1. 深入剖析信息论与编码的基础概念,为学生提供扎实的理论基础,使他们能够准确理解信息的概念、信息的度量以及信息传输与存储的原理。

2. 探索面向人工智能的信息论应用,通过案例分析和实践操作,引导学生理解人工智能技术在信息处理中的应用,培养他们灵活运用信息论方法分析和解决实际问题的能力。

3. 探讨面向人工智能的编码技术应用,引导学生深入了解编码原理与技术,掌握常见编码方法及其在人工智能领域的应用,培养他们对编码技术的设计与实现能力。

信息论与编码课程设计(哈夫曼编码的分析与实现)

信息论与编码课程设计(哈夫曼编码的分析与实现)

吉林建筑大学

电气与电子信息工程学院信息理论与编码课程设计报告

设计题目:哈夫曼编码的分析与实现专业班级:电子信息工程101

学生姓名:

学号:

指导教师:吕卅王超

设计时间:2013.11.18-2013.11.29

一、设计的作用、目的

《信息论与编码》是一门理论与实践密切结合的课程,课程设计是其实践性教学环节之一,同时也是对课堂所学理论知识的巩固和补充。其主要目的是加深对理论知识的理解,掌握查阅有关资料的技能,提高实践技能,培养独立分析问题、解决问题及实际应用的能力。

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

二、设计任务及要求

通过课程设计各环节的实践,应使学生达到如下要求:

1. 理解无失真信源编码的理论基础,掌握无失真信源编码的基本方法;

2. 掌握哈夫曼编码/费诺编码方法的基本步骤及优缺点;

3. 深刻理解信道编码的基本思想与目的,理解线性分组码的基本原理与编码过程;

4. 能够使用MATLAB 或其他语言进行编程,编写的函数要有通用性。

三、设计内容

一个有8个符号的信源X ,各个符号出现的概率为:

编码方法:先将信源符号按其出现的概率大小依次排列,并取概率最小的字母分别配以0和1两个码元(先0后1或者先1后0,以后赋值固定),再将这两个概率相加作为一个新字母的概率,与未分配的二进制符号的字母重新排队。并不断重复这一过程,直到最后两个符号配以0和1为止。最后从最后一级开始,向前返回得到各个信源符号所对应的码元序列,即为对应的码字。

信息论与编码实验二

信息论与编码实验二

信息论与编码上机报告

完成时间:200 年月日

实验要求

1. 二进制对称信道容量:

利用BPSK 信号在一个加性白高斯噪声信道上传输二进制数据,并在用最佳匹配滤波器检测的输出端利用硬判决解码。

1) 画出该信道的差错概率作为函数,γ作为自变量的图。

γ=ε/N 0

ε—在每个BPSK 信号中的能量

N 0/2—噪声功率谱密度

用最佳检测的BPSK 的差错率是:()

γ2Q p =

2) 画出作为γ函数的信道容量的图。 ()

γ21)(1Q H p H C b b -=-=

2. 信道容量与带宽和SNR 的关系

1) 输入功率受限为P 和带宽为W 的带限AWGN 信道的容量由下式给出

⎪⎪⎭⎫ ⎝⎛+=W N P W C 021log 画出容量作为W 和P /N 0的函数关系。

2) 画出离散时间AWGN 信道容量作为输入功率和噪声方差的函数关系

⎪⎭⎫ ⎝⎛+=221log 21σP C

信息论与编码实验报告

信息论与编码实验报告

信息论与编码实验报告

一、实验目的

1.了解信息论与编码的基本概念和原理。

2.学习如何通过信息论与编码方法实现对数据的压缩和传输。

3.掌握信息论与编码实验的实验方法和实验技能。

4.提高实验设计、数据分析和报告撰写的能力。

二、实验内容

1.通过对输入信源进行编码,实现对数据的压缩。

2. 比较不同编码方法的压缩效果,包括Shannon-Fano编码和霍夫曼编码。

3.通过传输信道对编码后的数据进行解码,还原原始信源。

4.分析并比较不同编码方法的传输效果,包括码率和传输质量。

三、实验原理

1.信息论:熵是信息论中衡量信源不确定性的指标,熵越小表示信源的可预测性越高,在编码过程中可以压缩数据。

2. 编码方法:Shannon-Fano编码通过分治的方法将输入信源划分为不同的子集,分别进行编码;霍夫曼编码则通过构建最佳二叉树的方式,将较常出现的信源符号编码为较短的二进制码,较少出现的信源符号编码为较长的二进制码。

3.传输信道:信道可能存在误码和噪声,通过差错控制编码可以在一定程度上保障传输数据的正确性和完整性。

四、实验步骤

1. 对给定的输入信源进行Shannon-Fano编码和霍夫曼编码。

2.计算编码后的码率,分析不同编码方法的压缩效果。

3.将编码后的数据传输到信道,模拟信道中的误码和噪声。

4.对传输后的数据进行解码,还原原始信源。

5.比较不同编码方法的传输质量,计算误码率和信噪比。

五、实验结果与分析

1. 编码结果:通过对输入信源进行编码,得到了Shannon-Fano编码和霍夫曼编码的码表。

2.压缩效果:计算了不同编码方法的码率,比较了压缩效果。

信息论与编码报告

信息论与编码报告

信息论报告

摘要:信息论是一门用概率论与数理统计方法来研究信息的度量、传递和交换规律的科学。它主要是研究通讯和控制系统中普遍存在着信息传递的共同规律以及研究最佳解决信息的获限、度量、变换、存储和传递等问题的基础理论。自香农在1948年发表奠定信息论基础的《通信的数学理论》一文以来,信息论学科迅速发展并延伸到许多领域中。信息理论不仅在通信、计算机、控制等领域中有直接指导意义,还渗透到经济学、生物学、医学等广泛领域。本文简要介绍信息论的基本原理和发展史,重点介绍信息论在数据压缩、密码学、信号处理及量子理论中的应用。

关键词:信息、信息论、密码学、数据压缩、量子理论、熵

1.信息论原理

1.1信息论中的信息

信息是信息论中最重要最基本的概念。早期,人们对信息的理解是很肤浅的。最早把信息作为科学对象来加以研究的是通信领域,而这一领域的奠基之作当推哈特莱于1928年在《贝尔系统电话杂志》上发表的题为《信息传输》的论文。他把信息理解为选择通信符号的方式,并用选择的自由度来计量这种信息的大小。1948年,通信专家香农在《贝尔系统电话杂志》上发表了一篇名为《通信的数学理论》的论文,在文中他以概率论为工具,阐明了通信中的一系列基本理论问题,给出了计算信源信息量和信道容量的方法和一般公式,得到了一组表示信息传递重要关系的编码定理。香农在定量测度信息时,把信息定义为随机不确定性的减少,亦即信息是用来减少随机不确定性的东西。基于这一思想,布里渊直接指出,信息就是负熵[1]。而控制论的奠基人维纳则把信息看做广义通信的内容,他指出:“正如熵是无组织(无序)程度的度量一样,消息集合所包含的信息就是组织(有序)程度的度量。事实上完全可以将消息所包含的信息解释为负熵”[2]。

信息论与编码课程设计论文

信息论与编码课程设计论文

《信息理论与编码》

课程论文

题目:信息论的基本理论探究

学生姓名:

学号:

系别:

专业:

任课教师:

年月日

目录

摘要 (2)

关键词 (2)

1 前言 (4)

2 信息的度量 (5)

2.1 概述 (5)

2.2 离散信源及其信息度量 (5)

2.2.1 离散随机信源的自信息与信息熵 (5)

2.2.2 离散平稳信源 (6)

2.2.3 马尔可夫信源 (7)

3 离散信道 (7)

3.1 概述 (7)

3.2 平均互信息 (8)

3.3 离散信道的信道容量 (8)

4 连续信道 (8)

5 无失真信源编码 (9)

5.1 信源编码到无失真编码的概述 (9)

5.2 定长编码 (10)

5.3 变长编码 (10)

5.3.1 概述 (10)

5.3.2 香农编码 (11)

5.3.3 费诺编码 (11)

5.3.4 霍夫曼编码 (12)

6 本次课程论文总结 (12)

参考文献 (13)

信息论的基本理论探究

摘要

信息是从人类出现以来就存在于这个世界上,人类社会的生存和发展都离不开信息的获取、传递、处理、再生、控制和处理。而信息论正是一门把信息作为研究对象,以揭示信息的本质特性和规律为基础,应用概率论、随即过程和数理统计等方法来研究信息的存储、传输、处理、控制、和利用等一般规律的学科。主要研究如何提高信息系统的可靠性、有效性、保密性和认证性,以使信息系统最优化。在信息论的指导下,信息技术得到飞速发展,这使得信息论渗透到自然科学和社会科学的所有领域,并且应用与众多领域:编码学、密码学与密码分析、数据压缩、数据传输、检测理论、估计理论等。信息论的主要基本理论包括:信息的定义和度量;各类离散信源和连续信源的信源熵;有记忆,无记忆离散和连续信道的信道容量,平均互信息;无失真信源编码相关理论。

信息论与编码答案傅祖芸

信息论与编码答案傅祖芸

信息论与编码答案傅祖芸

【篇一:信息论与编码课程设计报告】

t>设计题目:统计信源熵与香农编码

专业班级学号学生姓名指导教师教师评分

2014年3月24日

目录

一、设计任务与要求................................................. 2 二、设计思路....................................................... 2 三、设计流程图..................................................... 3 四、程序运行及结果................................................. 5 五、心得体会....................................................... 6 参考文

献 .......................................................... 6 附录:源程序.. (7)

一、设计任务与要求

1、统计信源熵

要求:统计任意文本文件中各字符(不区分大小写)数量,计算字

符概率,并计算信源熵。 2、香农编码

要求:任意输入消息概率,利用香农编码方法进行编码,并计算信

源熵和编码效率。

二、设计思路

1、统计信源熵:

统计信源熵就是对一篇英文文章(英文字母数为n),通过对其中

的a,b,c,d/a,b,c,d.....(不区分大小写)统计每个字母的个数n,有这个

信息论与编码实验报告

信息论与编码实验报告

本科生实验报告

实验课程信息理论与编码

学院名称信息科学与技术学院

专业名称

学生姓名

学生学号

指导教师

实验地点

实验成绩

二〇一六年九月----二〇一六年十一月

填写说明

1、适用于本科生所有的实验报告(印制实验报告册除外);

2、专业填写为专业全称,有专业方向的用小括号标明;

3、格式要求:

①用A4纸双面打印(封面双面打印)或在A4大小纸上用蓝黑色水笔书写。

②打印排版:正文用宋体小四号,1.5倍行距,页边距采取默认形式(上下2.54cm,

左右2.54cm,页眉1.5cm,页脚1.75cm)。字符间距为默认值(缩放100%,间距:标准);页码用小五号字底端居中。

③具体要求:

题目(二号黑体居中);

摘要(“摘要”二字用小二号黑体居中,隔行书写摘要的文字部分,小4号宋体);

关键词(隔行顶格书写“关键词”三字,提炼3-5个关键词,用分号隔开,小4号黑体);

正文部分采用三级标题;

第1章××(小二号黑体居中,段前0.5行)

1.1 ×××××小三号黑体×××××(段前、段后0.5行)

1.1.1小四号黑体(段前、段后0.5行)

参考文献(黑体小二号居中,段前0.5行),参考文献用五号宋体,参照《参考文献著录规则(GB/T 7714-2005)》。

实验一:香农(Shannon )编码

一、实验目的

掌握通过计算机实现香农编码的方法。

二、实验要求

对于给定的信源的概率分布,按照香农编码的方法进行计算机实现。

三、实验基本原理

给定某个信源符号的概率分布,通过以下的步骤进行香农编码 1.将信源消息符号按其出现的概率大小排列

)()()(21n x p x p x p ≥≥≥ 2.确定满足下列不等式的整数码长K i ;

信息论课程设计报告

信息论课程设计报告

xx大学

信息论课程设计

姓名:

学号:

学院:

指导老师:

完成日期:2015.01.04

一、判定唯一可译码

1.任务说明:

输入:任意的一个码(即已知码字个数及每个具体的码字)

输出:判决结果(是/不是)

输入文件:in1.txt,含至少2组码,每组的结尾为”$”符

输出文件:out1.txt,对每组码的判断结果

说明:为了简化设计,可以假定码字为0,1串

2.问题分析、实现原理

判定唯一可译码根据唯一可译码的判别方法,利用数据结构所学的知识,定义字符串数据类型并利用指针进行编程来实现算法。

算法:

1、考察C 中所有的码字,若Wi是Wj的前缀,则将对应的后缀作为一个尾随后缀码放入集合Fi+1中;

2、考察C和Fi俩个集合,若Wi ∈C是Wj∈F的前缀或Wi ∈F是Wj∈C的前缀,则将相应的后缀作为尾随后缀码放入集合Fi+1中;

3、F=∪Fi即为码C的尾随后缀集合;

4、若F中出现了C中的元素,算法终止,返回假(C不是唯一可译码);否则若F中没有出现新的元素则返回真。

3.源代码:

#include<iostream>

#include stdlib.h

#include<string>

using namespace std;

struct strings

{

char *string;

struct strings *next;

};

struct strings Fstr, *Fh, *FP; //输出当前集合

void outputstr(strings *str)

{

do

{

cout<<str->string<<endl;

信息论与编码实验报告(DOC)

信息论与编码实验报告(DOC)

计算机与信息学院

信息论与编码实验报告

专业班级

学生姓名及学号周伟康20112910 课程教学班号

任课教师苏兆品

实验指导教师

实验地点

2013 ~ 2014 学年第一学期

信息论与编码课程设计

目录

一.课程设计目的 (2)

二.课程设计要求 (2)

三.课程设计描述 (2)

四.程序结构 (2)

五.算法及部分源码 (3)

六.用例测试 (9)

七.总结 (20)

一.课程设计目的

通过编程实现,在理解掌握的基础上进一步扩展课授的几种无失真信源编码算法。以实践检验理论。

二.课程设计要求

1.对一灰度图像进行游程编码的设计实现(将Huffman与游程结合)。

2.试对任意的数字序列(如学号、电话号码)进行自适应算术编码。

3.围绕设计题目查阅资料,掌握编码的基本原理。

4.按设计要求和编码原理进行算法的设计,算法的设计应满足正确性、

可读性、健壮性、高效率等要求。

5.在此基础上,可以进行扩展

三.课程设计描述

本次设计实现内容:

1.对任意的信源符号序列进行N元Huffman编码/译码。

2.对任意的信源符号序列进行N元Fano 编码/译码。

3.对任意的信源符号序列进行N元Elias 编码/译码。

4.对像素矩阵进行游程与上述编码方式结合的编码/译码。

5.数字串的自适应算数编码/译码。

6.对任意给定译码规则的译码和判断其是否为即时码。

输入数据从键盘或磁盘文件读入,运算结果显示到屏幕或保存到文件。

编写可视化图形交互界面。

本次设计程序用Java实现,由本人独立完成。

四.程序结构

本次设计采用MVC设计模式:

控制包下为文件读写线程

执行包下是执行主类

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

目录

一:实验原理----------------------------1

二:程序源代码--------------------------1

三:实验分析-----------------------------6

四:实验结论---------------------------7

赫夫曼编码

一:实验原理

哈夫曼编码的具体步骤归纳如下:

① 概率统计(如对一幅图像,或m幅同种类型图像作灰度信号统计),得到n个不同概率的信息符号。

② 将n个信源信息符号的n个概率,按概率大小排序。

③ 将n个概率中,最后两个小概率相加,这时概率个数减为n-1个。

④ 将n-1个概率,按大小重新排序。

⑤ 重复③,将新排序后的最后两个小概率再相加,相加和与其余概率再排序。

⑥ 如此反复重复n-2次,得到只剩两个概率序列。

⑦ 以二进制码元赋值,构成哈夫曼码字。编码结束。

哈夫曼码字长度和信息符号出现概率大小次序正好相反,即大

概信息符号分配码字长度短,小概率信息符号分配码字长度长。

C、哈夫曼编码的特点

(1)哈夫曼编码的构造顺序明确,但码不是唯一的(因以大赋1还是小的赋1而异;

(2)哈夫曼编码的字长参差不齐,硬件实现不方便;

(3)只有在概率分布很不均匀时,哈夫曼编码才有显著的效果,而在信源分布均匀时,一般不使用哈夫曼编码。

二:程序源代码:

#define MAXVALUE 10000

#define MAXLEAF 30

#define MAXNODE 59

#define MAXBIT 10

#define LENTH 30

#include ""

#include

typedef struct{

float gailv;

int flag;

int parent;

int lchild;

int rchild;

char ch;

int t;

}HNodeType;

typedef struct{

int bit[MAXBIT];

int start;

}HCodeType;

typedef struct{

float gailv;

char letter;

}mytype; /*it's the type of data save in file*/

typedef struct filehuff{

int count;

mytype mydata[MAXLEAF];

filehuff(){count=0; };

};

filehuff filedata;

char code[MAXVALUE];

HNodeType HuffNode[MAXNODE];

void savetofile()

{

FILE *fp;

if((fp=fopen("","wb"))==NULL)

{

printf("打开失败 ....");

return;

}

if(fwrite(&filedata,sizeof(filedata),1,fp)!=1) printf("写入文件失败 ....");

fclose(fp);

}

void openfile()

{ FILE *fp;

if((fp=fopen("","rb"))==NULL)

{

return;

}

fread(&filedata,sizeof(filedata),1,fp);

}

void translate()

{

char c;

int i,j,k=0,m,n=0;

printf("请输入你想要译码的二进制序列 ");

printf("\n");

getchar();

scanf("%c",&c);

for(i=0;(i

{ code[i]=c;

scanf("%c",&c);

}

printf("对应的信源符号为:");

for(j=0;j<=MAXVALUE&&HuffNode[j].parent!=-1;j++) m=j+1;

for(j=0,k=m;j<=i;j++)

{

if(code[j]=='0')

{

n=HuffNode[k].lchild;

if(n==-1)

{

printf("%c",HuffNode[k].ch);

k=m;j--;continue;

}

k=n;

}

else

{

n=HuffNode[k].rchild;

if(n==-1)

{

printf("%c",HuffNode[k].ch);

k=m;j--;continue;

}

k=n;

}

}

}

void Huffman()

{

HCodeType HuffCode[MAXLEAF],cd;

int i,j,m1,m2,x1,x2,c,p,m;

if==0)

{ printf("\n输入信源符号总数 : ");

scanf("%d",&m);

=m;

for(i=0;i<2*m-1;i++)

{ HuffNode[i].gailv=0;

HuffNode[i].parent=-1;

HuffNode[i].flag=0;

HuffNode[i].lchild=-1;

HuffNode[i].rchild=-1;

HuffNode[i].ch='a';

}

for(i=0;i

{ printf("请输入 (概率,信源符号):");

scanf("%f %c",&HuffNode[i].gailv,&HuffNode[i].ch);

[i].gailv=HuffNode[i].gailv;

[i].letter=HuffNode[i].ch;

savetofile();

}

}

else

{ m=;

for(i=0;i<2*m-1;i++)

{ HuffNode[i].gailv=0;

HuffNode[i].parent=-1;

HuffNode[i].flag=0;

HuffNode[i].lchild=-1;

相关文档
最新文档