南昌大学信息论与编码实验
- 格式:pdf
- 大小:208.07 KB
- 文档页数:7
《信息论与编码》实验2 香农编码规则及其软件实现一、实验目的1、通过上机实践,实现常用的信源编码方案,以加深对编码理论的理解,促进对本课程所学知识的理解和把握。
2、通过信源编译码,理解香农第一定理3、通过信源编译码,掌握信源编码的方法和手段二、实验原理信源编码主要可分为无失真信源编码和限失真信源编码。
无失真信源编码主要适用于离散信源或数字信号,如文本、表格及工程图纸等信源,它们要求进行无失真地数据压缩,要求完全能够无失真地可逆恢复。
凡是能载荷一定的信息量,且码字的平均长度最短,可分离的变长码的码字集合都可称为最佳码。
为此必须将概率大的信息符号编以短的码字,概率小的符号编以长的码字,使得平均码字长度最短。
其中香农编码是能获得最佳码的编码方法之一。
香农第一定理指出,选择每个码字的长度i K 满足下式I(i x )≤i K <I(i x )+1 ,i ∀就可以得到这种码。
这种编码方法称为香农编码。
香农编码步骤:设离散无记忆信源二进制香农码的编码步骤如下:(1)将信源符号按概率从大到小的顺序排列,为方便起见,令p (x 1)≥ p (x 2)≥…≥ p (xn )(2)令p (x 0)=0,用)(j a x P ,j =i +1表示第i 个码字的累加概率,则:n j x P x P j i i j a ,...,2,1,)()(10==∑-=12112,,,,,,()1(),(),,(),,()()n i n ii i n x x x x X p x p x p x p x p x P X =⎧⎫⎡⎤==⎨⎬⎢⎥⎣⎦⎩⎭∑(3)确定满足下列不等式的整数i K ,并令i K 为第i 个码字的长度-log2 p (xn )≤i K <- log2 p (xn )+1(4)将)(j a x P 用二进制表示,并取小数点后i K 位作为符号xi 的编码。
三、实验内容1)充分掌握信源编码方案之一的香农编码算法设计;2)以教材例题为算例,将该编码方法用代码实现。
信息论与编码实验2-实验报告信息论与编码实验 2 实验报告一、实验目的本次信息论与编码实验 2 的主要目的是深入理解和应用信息论与编码的相关知识,通过实际操作和数据分析,进一步掌握信源编码和信道编码的原理及方法,提高对信息传输效率和可靠性的认识。
二、实验原理(一)信源编码信源编码的目的是减少信源输出符号序列中的冗余度,提高符号的平均信息量。
常见的信源编码方法有香农编码、哈夫曼编码等。
香农编码的基本思想是根据符号出现的概率来分配码字长度,概率越大,码字越短。
哈夫曼编码则通过构建一棵最优二叉树,为出现概率较高的符号分配较短的编码,从而实现平均码长的最小化。
(二)信道编码信道编码用于增加信息传输的可靠性,通过在发送的信息中添加冗余信息,使得在接收端能够检测和纠正传输过程中产生的错误。
常见的信道编码有线性分组码,如汉明码等。
三、实验内容与步骤(一)信源编码实验1、选取一组具有不同概率分布的信源符号,例如:A(02)、B (03)、C(01)、D(04)。
2、分别使用香农编码和哈夫曼编码对信源符号进行编码。
3、计算两种编码方法的平均码长,并与信源熵进行比较。
(二)信道编码实验1、选择一种线性分组码,如(7,4)汉明码。
2、生成一组随机的信息位。
3、对信息位进行编码,得到编码后的码字。
4、在码字中引入随机错误。
5、进行错误检测和纠正,并计算错误纠正的成功率。
四、实验结果与分析(一)信源编码结果1、香农编码的码字为:A(010)、B(001)、C(100)、D (000)。
平均码长为 22 比特,信源熵约为 184 比特,平均码长略大于信源熵。
2、哈夫曼编码的码字为:A(10)、B(01)、C(111)、D (00)。
平均码长为 19 比特,更接近信源熵,编码效率更高。
(二)信道编码结果在引入一定数量的错误后,(7,4)汉明码能够成功检测并纠正大部分错误,错误纠正成功率较高,表明其在提高信息传输可靠性方面具有较好的性能。
《信息论与编码技术》实验报告实验一:请根据公式-plogp ,说明小概率事件和大概率事件对熵的贡献。
解:先做图,然后分析。
将公式写为)(log )(2p p p f -=对它编写计算和画图程序如下:p=0:0.01:1;x=-p.*log2(p);plot(p,x);从图中曲线看出,小概率事件和大概率事件的情况下,熵值都很低,贡献很小,在概率为0.5附近时熵值最大,故此时对熵的贡献最大。
实验二:请对a 、b 、c 霍夫曼编码,它们的概率是0.6、0.3、0.1。
并以此对符号串ababaacbaa 编码和译码。
解:编码步骤分为:事件排序,符号编码,信源编码,信道编码。
MATLAB 程序:clc;a=0.3;b=0.3;c=0.4; %%%霍夫曼编码A=[a,b,c];A=fliplr(sort(A)); %%%降序排序if (a==b)&(a>c), %%实现了当a,b,c 其中两概率相同时的编码,及3值均不同时的编码 u='a';x=a;v='b';y=b;w='c';z=c;elseif (a==b)&(a<c),u='c';x=c;v='a';y=a;w='b';z=b;elseif (c==b)&(c>a),u='b';x=b;v='c';y=c;w='a';z=a;elseif (c==b)&(c<a),u='a';x=a;v='b';y=b;w='c';z=c;elseif(a==c)&(a>b),u='a',x=a;v='c',y=c;w='b',z=b;elseif(a==c)&(a<b),u='b';x=b;v='a';y=a;w='c';z=c;elseif A(1,1)==a,u='a';x=a;elseif A(1,1)==b,u='b';x=b;elseif A(1,1)==c,u='c';x=c;endif A(1,2)==a,v='a';y=a;elseif A(1,2)==b,v='b';y=b;elseif A(1,2)==c,v='c';y=c;endif A(1,3)==a,w='a';z=a;elseif A(1,3)==b,w='b';z=b;elseif A(1,3)==c,w='c';z=c;endend %%%x,y,z按从大到小顺序存放a,b,c的值,u,v,w存对应字母if x>=(y+z),U='0';V(1)='0';V(2)='1';W(1)='1';W(2)='1';else U='1';V(1)='0';V(2)='0';W(1)='1';W(2)='0';enddisp('霍夫曼编码结果:')if u=='a',a=fliplr(U),elseif u=='b',b=fliplr(U),else c=fliplr(U),end if v=='a',a=fliplr(V),elseif v=='b',b=fliplr(V),else c=fliplr(V),end if w=='a',a=fliplr(W),elseif w=='b',b=fliplr(W),else c=fliplr(W),end %%%编码步骤为:信源编码,信道编码disp('信源符号序列:')s='ababaacbaa' %%%信源编码q=[];for i=s;if i=='a',d=a;elseif i=='b';d=b;else d=c;end;q=[q,d];endm=[]; %%%符号变数字for i=q;m=[m,str2num(i)];endP=[1,1,1,0;0,1,1,1;1,1,0,1];G=[eye(3),P];%%%信道编码%%%接下来的for循环在程序中多次使用,此处作用是将已编码组m每3个1组放入mk中进行运算之后存入Ck数组中,每次mk中运算结束之后清空,再进行下一组运算,而信道编码结果数组C则由C=[C,Ck]存入每组7个码。
NANCHANG UNIVERSITY信息论与编码实验报告(2018年11月27日)学院:信息工程学院系电子信息工程系专业班级:学生姓名:学号:指导教师:目录实验一自信息量和熵源.............................................................................................. 实验二准对称信道容量.............................................................................................. 实验三费诺不等式...................................................................................................... 实验四香农编码.......................................................................................................... 实验五费诺编码.......................................................................................................... 实验六霍夫曼编码......................................................................................................实验一自信息量和熵源一、实验要求1、画出I=-的函数图;2、画出H(p)=-p-(1-p)函数图。
二、实验原理及理论分析自信息量:一个事件的自信息量就是对其不确定性的度量。
信息论与编码实验报告一、实验目的本实验主要目的是通过实验验证信息论与编码理论的基本原理,了解信息的产生、传输和编码的基本过程,深入理解信源、信道和编码的关系,以及各种编码技术的应用。
二、实验设备及原理实验设备:计算机、编码器、解码器、信道模拟器、信噪比计算器等。
实验原理:信息论是由香农提出的一种研究信息传输与数据压缩问题的数学理论。
信源产生的消息通常是具有统计规律的,信道是传送消息的媒体,编码是将消息转换成信号的过程。
根据信息论的基本原理,信息的度量单位是比特(bit),一个比特可以表示两个平等可能的事件。
信源的熵(Entropy)是用来衡量信源产生的信息量大小的物理量,熵越大,信息量就越多。
信道容量是用来衡量信道传输信息的极限容量,即信道的最高传输速率,单位是比特/秒。
编码是为了提高信道的利用率,减少传输时间,提高传输质量等目的而进行的一种信号转换过程。
常见的编码技术有霍夫曼编码、香农-费诺编码、区块编码等。
三、实验步骤1.运行编码器和解码器软件,设置信源信息,编码器将信源信息进行编码,生成信道输入信号。
2.设置信道模拟器的信道参数,模拟信道传输过程。
3.将信道输出信号输入到解码器,解码器将信道输出信号进行解码,恢复信源信息。
4.计算信道容量和实际传输速率,比较两者的差异。
5.改变信道参数和编码方式,观察对实际传输速率的影响。
四、实验结果与分析通过实验,我们可以得到不同信道及编码方式下的信息传输速率,根据信道参数和编码方式的不同,传输速率有时会接近信道容量,有时会低于信道容量。
这是因为在真实的传输过程中,存在信噪比、传输距离等因素导致的误码率,从而降低了实际传输速率。
在实验中,我们还可以观察到不同编码方式对传输速率的影响。
例如,霍夫曼编码适用于信源概率分布不均匀的情况,可以实现数据压缩,提高传输效率。
而区块编码适用于数据容量较大的情况,可以分块传输,降低传输错误率。
此外,通过实验我们还可以了解到信息论中的一些重要概念,如信源熵、信道容量等。
北京信息科技大学《信息论与编码》实验指导书李红莲编光电信息与通信工程学院二〇一〇年八月目录实验一信息熵、信道容量的计算............................ . (3)一、实验目的 (3)二、实验内容 (3)三、实验原理............................................................. (3)四、实验方法与实验步骤 (3)五、思考题 (3)六、实验报告要求 (3)实验二霍夫曼编码、率失真函数的计算 (4)一、实验目的 (4)二、实验内容 (4)三、实验原理............................................................. (4)四、实验方法与实验步骤 (4)五、思考题 (4)六、实验报告要求 (4)实验一:信息熵、信道容量的计算实验项目:信息熵、信道容量的计算实验项目性质:验证性实验课程:《信息论与编码》计划学时:4学时一、实验目的掌握使用计算机计算信息熵、信道容量的方法。
二、实验内容利用matlab语言编程实现信息熵、信道容量的计算。
三、实验原理1.参照教材(焦瑞莉等编著《信息论基础教程》)第14页式(2-16)理解信息熵的定义2.参照教材(焦瑞莉等编著《信息论基础教程》)第68页式(3-15)理解信道容量的定义四、实验方法与实验步骤(一)参照教材第215页信源熵程序建立文件entropy.m(二)建立文件exercise2_3_1.m通过调用entropy.m计算教材第59页练习2.3(1)(参考答案:0.8113比特)(三)参照教材第215页离散无记忆信道容量的迭代计算程序建立文件channelcap.m(四)建立文件exercise3_2_b.m通过调用channelcap.m计算教材第92页练习3.2(b)(参考答案:0.0817比特)五、思考题使用计算机编程进行信道容量的迭代计算是否肯定收敛,即是否一定能得出近似正确结果?六、实验报告要求(1)简述实验目的、实验原理和实验任务;(2)列出源程序代码;(3)给出计算结果(4)收获与体会。
信息论与编码实验报告实验课程名称:赫夫曼编码(二进制与三进制编码)专业信息与计算科学班级信息与计算科学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 个码元编码,在变长字编码时每个符号的平均码长为∑==ni li xi p L 1)( ;信源熵为:)(log )()(1xi p xi p X H ni ∑=-= ;唯一可译码的充要条件:11≤∑=-ni Ki m ;其中m 为码符号个数,n 为信源符号个数,Ki 为各码字长度。
(2)二元霍夫曼编码规则(1)将信源符号依出现概率递减顺序排序。
(2)给两个概率最小的信源符号各分配一个码位“0”和“1”,将两个信源符号合并成一个新符号,并用这两个最小的概率之和作为新符号的概率,结果得到一个只包含(n-1)个信源符号的新信源。
称为信源的第一次缩减信源,用s1 表示。
(3)将缩减信源 s1 的符号仍按概率从大到小顺序排列,重复步骤(2),得到只含(n-2)个符号的缩减信源s2。
中南大学信息论编码实验报告题目信息论编码学生姓名汤思远指导教师张祖平学院信息院学号 090912052专业班级电子1班完成时间 14/12/5实验一 关于信源熵的实验一、实验目的1. 掌握离散信源熵的原理和计算方法。
2. 熟悉matlab 软件的基本操作,练习使用matlab 求解信源的信息熵。
3. 自学图像熵的相关概念,并应用所学知识,使用matlab 或其他开发工具求解图像熵。
4. 掌握Excel 的绘图功能,使用Excel 绘制散点图、直方图。
二、实验原理1. 离散信源相关的基本概念、原理和计算公式产生离散信息的信源称为离散信源。
离散信源只能产生有限种符号。
随机事件的自信息量I (x i )为其对应的随机变量x i 出现概率对数的负值。
即:I (x i )= -log 2 p (x i )随机事件X 的平均不确定度(信源熵)H (X )为离散随机变量x i 出现概率的数学期望,即:∑∑-==i ii i i i x p x p x I x p X H )(log )()()()(2. 信源的信息熵设信源符号集X ={a1,a2,…,ar},每个符号发生的概率分别为p (a1)=p 1,p (a2)=p 2,…,p (ar),即信源的概率空间为,⎥⎦⎤⎢⎣⎡=⎥⎦⎤⎢⎣⎡)(...... )2(2 )1(1ar p ar a p a a p a P X 则该信源的信源熵为:H (X ) = - p (a1) log p (a1) –p (a2) log p (a2) –…–p (ar) log p (ar)3. 信道的数学模型与相关熵的计算• 单符号离散无噪声无损信道的信道容量 ()max (;)bit/i p x C I X Y =信道符号4. MATLAB 二维绘图用matlab 中的命令plot(x , y )就可以自动绘制出二维图来。
例1-2,在matlab 上绘制余弦曲线图,y = cos x ,其中0 ≤ x ≤ 2π。
《信息论与编码》实验报告《信息论与编码》实验报告实验序号:02 实验项目名称:离散信道及其信道容量结论:1、当输入和输出符号个数相同,且都等于r 时,则此信道称为强对称信道或均匀信道;2、这类信道中总的错误概率为 p ,对称地平均分配给r-1个输出符号。
实验内容二:平均互信息I (X ;Y )是凸函数的论文一、 问题:由信源的概率分布P (Y )=对x 求和P (X )*P(Y|X)和平均互信息I(X;Y)=对x,y 求和p(x)*P(y|x)*logP(y|x)/P(y)可知,平均互信息只与信源的概率分布和信道的传递概率有关,但是它们之间有种什么关系?二、 证明定理一:平均互信息I(X;Y)是输入信源的概率分布P(x)的形函数(上凸函数)解: 根据上凸函数的定义来证明,先固定信道,即信道的传递概率P(y|x)是固定的。
那么平均互信息I(X;Y)将只是P(x)的函数,简写成I[P(x)]。
现选择输入信源X 的两种已知的概率分布P1(x)和P2(x)。
其对应的联合分布概率为P1(xy)=P1(x)P(y|x)和P2(xy)=P2(x)P(y|x),因而信道输出端的平均互信息分别为I[P1(x)]和I[P2(x)]。
再选择输入变量X 的另一种概率分布P(x),令01θ<<,和1θθ+=,而P(x)= 12()()P x P x θθ+,因而得其相应的平均互信息为I[P(x)]。
根据平均互信息的定义得1212,,,12[()][()][()](|)(|)(|)()log()log ()log ()()()x yx y x y I P x I P x I P x P y x P y x P y x P xy P xy P xy P y P y P y θθθθ+-=+-∑∑∑结论:平均互信息与信源的概率分布有关,有上可知,平均互信息是输入信源的概率分布P(x)的形凸函数。
定理二:平均互信息I(X;Y)是信道传递概率P(Y|X)的形凸函数(又称下凸函数)猜想:由平均互信息是输入信源的概率分布的形凸函数知,当固定某信道时,选择不同的信源(其概率分布不同)与信道连接,在信道输出端接收到每个符号后获得的信息量是不同的。
信息论与编码实验报告一、实验目的信息论与编码是一门涉及信息的度量、传输和处理的学科,通过实验,旨在深入理解信息论的基本概念和编码原理,掌握常见的编码方法及其性能评估,提高对信息处理和通信系统的分析与设计能力。
二、实验原理(一)信息论基础信息熵是信息论中用于度量信息量的重要概念。
对于一个离散随机变量 X,其概率分布为 P(X) ={p(x1), p(x2),, p(xn)},则信息熵H(X) 的定义为:H(X) =∑p(xi)log2(p(xi))。
(二)编码原理1、无失真信源编码:通过去除信源中的冗余信息,实现用尽可能少的比特数来表示信源符号,常见的方法有香农编码、哈夫曼编码等。
2、有噪信道编码:为了提高信息在有噪声信道中传输的可靠性,通过添加冗余信息进行纠错编码,如线性分组码、卷积码等。
三、实验内容及步骤(一)信息熵的计算1、生成一个离散信源,例如信源符号集为{A, B, C, D},对应的概率分布为{02, 03, 01, 04}。
2、根据信息熵的定义,使用编程语言计算该信源的信息熵。
(二)香农编码1、按照香农编码的步骤,首先计算信源符号的概率,并根据概率计算每个符号的编码长度。
2、确定编码值,生成香农编码表。
(三)哈夫曼编码1、构建哈夫曼树,根据信源符号的概率确定树的结构。
2、为每个信源符号分配编码,生成哈夫曼编码表。
(四)线性分组码1、选择一种线性分组码,如(7, 4)汉明码。
2、生成编码矩阵,对输入信息进行编码。
3、在接收端进行纠错译码。
四、实验结果与分析(一)信息熵计算结果对于上述生成的离散信源,计算得到的信息熵约为 184 比特/符号。
这表明该信源存在一定的不确定性,需要一定的信息量来准确描述。
(二)香农编码结果香农编码表如下:|信源符号|概率|编码长度|编码值|||||||A|02|232|00||B|03|174|10||C|01|332|110||D|04|132|111|香农编码的平均码长较长,编码效率相对较低。
中南大学信息论编码实验报告题目信息论编码学生姓名汤思远指导教师张祖平学院信息院学号 090912052专业班级电子1班完成时间 14/12/5实验一 关于信源熵的实验一、实验目的1. 掌握离散信源熵的原理和计算方法。
2. 熟悉matlab 软件的基本操作,练习使用matlab 求解信源的信息熵。
3. 自学图像熵的相关概念,并应用所学知识,使用matlab 或其他开发工具求解图像熵。
4. 掌握Excel 的绘图功能,使用Excel 绘制散点图、直方图。
二、实验原理1. 离散信源相关的基本概念、原理和计算公式产生离散信息的信源称为离散信源。
离散信源只能产生有限种符号。
随机事件的自信息量I (x i )为其对应的随机变量x i 出现概率对数的负值。
即:I (x i )= -log 2 p (x i )随机事件X 的平均不确定度(信源熵)H (X )为离散随机变量x i 出现概率的数学期望,即:∑∑-==i ii i i i x p x p x I x p X H )(log )()()()(2. 信源的信息熵设信源符号集X ={a1,a2,…,ar},每个符号发生的概率分别为p (a1)=p 1,p (a2)=p 2,…,p (ar),即信源的概率空间为,⎥⎦⎤⎢⎣⎡=⎥⎦⎤⎢⎣⎡)(...... )2(2 )1(1ar p ar a p a a p a P X 则该信源的信源熵为:H (X ) = - p (a1) log p (a1) –p (a2) log p (a2) –…–p (ar) log p (ar)3. 信道的数学模型与相关熵的计算• 单符号离散无噪声无损信道的信道容量 ()max (;)bit/i p x C I X Y =信道符号4. MATLAB 二维绘图用matlab 中的命令plot(x , y )就可以自动绘制出二维图来。
例1-2,在matlab 上绘制余弦曲线图,y = cos x ,其中0 ≤ x ≤ 2π。
没实验一 绘制二进熵函数曲线(2个学时)一、实验目的:1. 掌握Excel 的数据填充、公式运算和图表制作2. 掌握Matlab 绘图函数3. 掌握、理解熵函数表达式及其性质 二、实验要求:1. 提前预习实验,认真阅读实验原理以及相应的参考书。
2. 在实验报告中给出二进制熵函数曲线图 三、实验原理:1. Excel 的图表功能2. 信源熵的概念及性质()()[]()[]())(1)(1 .log )( .)( 1log 1log )(log )()(10 , 110)(21Q H P H Q P H b nX H a p H p p p p x p x p X H p p p x x X P X ii i λλλλ-+≥-+≤=--+-=-=≤≤⎩⎨⎧⎭⎬⎫-===⎥⎦⎤⎢⎣⎡∑四、实验内容:用Excel 或Matlab 软件制作二进熵函数曲线。
具体步骤如下:1、启动Excel 应用程序。
2、准备一组数据p 。
在Excel 的一个工作表的A 列(或其它列)输入一组p ,取步长为0.01,从0至100产生101个p (利用Excel 填充功能)。
3、取定对数底c ,在B 列计算H(x) ,注意对p=0与p=1两处,在B 列对应位置直接输入0。
Excel 中提供了三种对数函数LN(x),LOG10(x)和LOG(x,c),其中LN(x)是求自然对数,LOG10(x)是求以10为底的对数,LOG(x,c)表示求对数。
选用c=2,则应用函数LOG(x,2)。
在单元格B2中输入公式:=-A2*LOG(A2,2)-(1-A2)*LOG(1-A2,2) 双击B2的填充柄,即可完成H(p)的计算。
4、使用Excel 的图表向导,图表类型选“XY 散点图”,子图表类型选“无数据点平滑散点图”,数据区域用计算出的H(p)数据所在列范围,即$B$1:$B$101。
在“系列”中输入X值(即p值)范围,即$A$1:$A$101。
信息论与编码实验报告实验⼀关于硬币称重问题的探讨⼀、问题描述:假设有N 个硬币,这N 个硬币中或许存在⼀个特殊的硬币,这个硬币或轻或重,⽽且在外观上和其他的硬币没什么区别。
现在有⼀个标准天平,但是⽆刻度。
现在要找出这个硬币,并且知道它到底是⽐真的硬币重还是轻,或者所有硬币都是真的。
请问:1)⾄少要称多少次才能达到⽬的;2)如果N=12,是否能在3 次之内将特殊的硬币找到;如果可以,要怎么称?⼆、问题分析:对于这个命题,有⼏处需要注意的地⽅:1)特殊的硬币可能存在,但也可能不存在,即使存在,其或轻或重未知;2)在⽬的上,不光要找到这只硬币,还要确定它是重还是轻;3)天平没有刻度,不能记录每次的读数,只能判断是左边重还是右边重,亦或者是两边平衡;4)最多只能称3 次。
三、解决⽅案:1.关于可⾏性的分析在这⾥,我们把称量的过程看成⼀种信息的获取过程。
对于N 个硬币,他们可能的情况为2N+1 种,即重(N 种),轻(N 种)或者⽆假币(1 种)。
由于这2N+1 种情况是等概率的,这个事件的不确定度为:Y=Log(2N+1)对于称量的过程,其实也是信息的获取过程,⼀是不确定度逐步消除的过程。
每⼀次称量只有3 种情况:左边重,右边重,平衡。
这3 种情况也是等概率的,所以他所提供的信息量为:y=Log3在K 次测量中,要将事件的不确定度完全消除,所以K= Log(2N+1)/ Log3根据上式,当N=12 时,K= 2.92< 3 所以13 只硬币是可以在3 次称量中达到⽬的的。
通过此式,我们还可以计算得到:通过3 次测量⽽找出异常硬币,N 的最⼤值为13.2.⽅案的提出为了描述⽅便,我们给这12枚硬币分别编号(1)-(12)。
⾸先,任选8个⽐较,如选:⑴⑵⑶⑷⽐⑸⑹⑺⑻1.若⼀样重,则假币在⑼~⑿中,第⼆步:⑼⑽⽐⑾⑴(1)若⼀样重,则可能的假币为⑿。
则第三步:⑴⽐⑿a.若⼀样重,则没有假币;b.不⼀样重,则假币为⑿:如果(1)>(12),则假币轻,反之,假币重;(2)若⑼⑽重,则第三步:⑼⽐⑽a.若⼀样重,则假币为⑾(较轻)b.不⼀样重,则假币为⑼、⑽中较重者(3)若⑼⑽轻,则第三步:⑼⽐⑽a.若⼀样重,则假币为⑾(较重)b.不⼀样重,则假币为⑼、⑽中较轻者2.若⑴⑵⑶⑷重,则第⼆步:⑴⑵⑸⽐⑶⑷⑹(1)若⼀样重,则假币在⑺⑻中,第三步:⑺⽐⑻假币为⑺、⑻中较轻者(2)若⑴⑵⑸端较重,则假币在⑴⑵⑹中,第三步:⑴⽐⑵a.若⼀样重,则假币为⑹(较轻)b.不⼀样重,则假币为⑴⑵中较重者(3)若⑶⑷⑹端较重,则假币在⑶⑷⑸中,第三步:⑶⽐⑷a.若⼀样重,则假币为⑸(较轻)b.不⼀样重,则假币为⑶、⑷中较重者3.若⑴⑵⑶⑷轻,则与上⾯类似,第⼆步:⑴⑵⑸⽐⑶⑷⑹(1)若⼀样重,则假币在⑺⑻中,第三步:⑺⽐⑻假币为⑺、⑻中较重者(2)若⑴⑵⑸端较轻,则假币在⑴⑵⑹中,第三步:⑴⽐⑵a.若⼀样重,则假币为⑹(较重)b.不⼀样重,则假币为⑴⑵中较轻者(3)若⑶⑷⑹端较轻,则假币在⑶⑷⑸中,第三步:⑶⽐⑷a.若⼀样重,则假币为⑸(较重)b.不⼀样重,则假币为⑶、⑷中较轻者3.⽤C语⾔编程实现上述⽅案为:#includevoid main(){int i;float a[12];for(i=0;i<12;i++)scanf("%f",&a[i]);if(a[0]+a[1]+a[2]+a[3]==a[4]+a[5]+a[6]+a[7]){if(a[0]+a[1]+a[2]==a[8]+a[9]+a[10]){if(a[8]==a[11])printf("There is no special coin!\n");else if(a[8]>a[11])printf("There is a special coin:%f(12) and it's lighter than others.\n",a[ 11]); elseprintf("There is a special coin:%f(12) and it's heavier than others.\n",a[ 11]); }else if(a[0]+a[1]+a[2]>a[8]+a[9]+a[10]){if(a[8]==a[9])printf("There is a special coin:%f(11) and it's lighter than others.\n",a[ 10]); else if(a[8]>a[9])printf("There is a special coin:%f(10) and it's lighter than others.\n",a[ 9]); elseprintf("There is a special coin:%f(9) and it's lighter than others.\n",a[8 ]);}else{if(a[8]==a[9])printf("There is a special coin:%f(11) and it's heavier than others.\n",a[ 10]); else if(a[8]>a[9])printf("There is a special coin:%f(9) and it's heavier than others.\n",a[8 ]); elseprintf("There is a special coin:%f(10) and it's heavier than others.\n",a[ 9]); }}else if(a[0]+a[1]+a[2]+a[3]>a[4]+a[5]+a[6]+a[7]){if(a[0]+a[2]+a[5]==a[1]+a[4]+a[8]){if(a[6]==a[7])printf("There is a special coin:%f(4) and it's heavier than others.\n",a[3 ]); else if(a[6]>a[7])printf("There is a special coin:%f(8) and it's lighter than others.\n",a[7 ]); elseprintf("There is a special coin:%f(7) and it's lighter than others.\n",a[6 ]);}else if(a[0]+a[2]+a[5]>a[1]+a[4]+a[8]){if(a[0]==a[2])printf("There is a special coin:%f(5) and it's lighter than others.\n",a[4 ]); else if(a[0]>a[2])printf("There is a special coin:%f(1) and it's heavier than others.\n",a[0 ]);elseprintf("There is a special coin:%f(3) and it's heavier than others.\n",a[2 ]); }else{if(a[1]>a[8])printf("There is a special coin:%f(2) and it's heavier than others.\n",a[1 ]); if(a[5]printf("There is a special coin:%f(6) and it's lighter than others.\n",a[5 ]); }}else{if(a[0]+a[2]+a[5]==a[1]+a[4]+a[8]){if(a[6]==a[7])printf("There is a special coin:%f(4) and it's lighter than others.\n",a[3 ]); else if(a[6]>a[7])printf("There is a special coin:%f(7) and it's heavier than others.\n",a[6 ]); elseprintf("There is a special coin:%f(8) and it's heavier than others.\n",a[7]); }else if(a[0]+a[2]+a[5]{if(a[0]==a[2])printf("There is a special coin:%f(5) and it's heavier than others.\n",a[4 ]); else if(a[0]>a[2])printf("There is a special coin:%f(3) and it's lighter than others.\n",a[2 ]);printf("There is a special coin:%f(1) and it's lighter than others.\n",a[0 ]);}else{if(a[1]printf("There is a special coin:%f(2) and it's lighter than others.\n",a[1 ]);if(a[5]>a[8])printf("There is a special coin:%f(6) and it's heavier than others.\n",a[5 ]);}}}运⾏结果如图:即输⼊12个数表⽰这12枚硬币的重量,最后输出哪⼀枚为假币,并判断其轻重。
计算机与信息学院信息论与编码实验报告专业班级学生姓名及学号周伟康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设计模式:控制包下为文件读写线程执行包下是执行主类模式包分编码译码两部分Item:封装每个码元符号信息和操作AnlysisModel:信源序列统计分析模型其他如右图顾名思义视图包也分编码译码两部分MainFrame:主框架界面编码下:算数编码面板分组码编码面板译码下:算数译码面板分组码译码面板五. 算法及部分源码a) N 元Huffman 编码:算法:1) 将每个信源符号加入优先队列Heap 。
《信息论与编码》实验指导书邹东尧等编计算机与通信工程学院信息与通信工程系2010年10月绪论随着信息产业的飞速发展,对从事信息、通信、电子工程类等专业的人员的要求也越来越高,而《信息论与编码》是这类专业的专业必修课,这门课主要介绍了有关信息论的基本原理以及信源编码、信道编码的内容。
通过理论与实践的结合,才能更好的领会知识的真谛。
《信息论与编码》结合实验的实践,让学生更能深刻的理解和掌握这门课的基本概念、基本理论,并培养学生的动手实践能力。
本实验指导书正是配合教学计划的实验教学而编写,主要是基于matlab 仿真软件对信源编解码和信道容量进行仿真。
本书共有三个实验:绘制信源熵函数曲线、哈夫曼编解码和离散信道容量,为实验大纲要求的必做实验。
本书主要由邹东尧编写,主要参考了李祖贺等编写的《信息论与编码》实验指导书,并得到了李祖贺等老师的大力支持,特此对他们表示衷心的感谢!由于时间仓促,错误难免,恳请读者谅解和指正!郑州轻工业学院计算机与通信工程学院信息与通信工程系2010年10月目录实验一绘制信源熵函数曲线 (5)实验二哈夫曼编解码 (9)实验三离散信道容量 (14)1实验一绘制信源熵函数曲线一、实验目的1.掌握离散信源熵的原理和计算方法。
2.熟悉matlab软件的基本操作,练习应用matlab软件进行信源熵函数曲线的绘制。
3.理解信源熵的物理意义,并能从信源熵函数曲线图上进行解释其物理意义。
二、实验原理1.离散信源相关的基本概念、原理和计算公式产生离散信息的信源称为离散信源。
离散信源只能产生有限种符号。
假定X是一个离散随机变量,即它的取值范围R={x1,x2,x3,…}是有限或可数的。
设第i个变量x i发生的概率为p i=P{X=x i}。
则:定义一个随机事件的自信息量I(x i)为其对应的随机变量x i出现概率对数的负值。
即:I(x i)= -log2p(x i)定义随机事件X的平均不确定度H(X)为离散随机变量x i出现概率的数学期望,即:∑∑-==i ii i i i x p x p x I xp X H )(log )()()()( 单位为 比特/符号 或 比特/符号序列。
《信息论与编码技术》实验教案一、实验目的与要求1. 实验目的(1)理解信息论的基本概念和原理;(2)掌握信息编码的基本方法和技术;(3)培养动手实践能力和团队协作精神。
2. 实验要求(1)熟悉信息论与编码技术的基本理论;(2)具备一定的编程能力;(3)遵守实验纪律,按时完成实验任务。
二、实验内容与步骤1. 实验内容(1)信息熵的计算;(2)信源编码;(3)信道编码;(4)误码率分析;(5)编码技术的应用。
2. 实验步骤(1)实验讲解:了解实验目的、原理和实验设备;(2)信源熵的计算:根据给定的信源符号概率计算信源熵;(3)信源编码:采用香农编码和哈夫曼编码对信源进行编码;(4)信道编码:选择一种信道编码方案(如卷积编码或汉明编码),对编码后的数据进行信道编码;(5)误码率分析:通过模拟传输过程,分析不同编码方案下的误码率性能;(6)编码技术的应用:探讨编码技术在实际通信系统中的应用。
三、实验原理与方法1. 信息熵的计算信息熵是衡量信源不确定性的一种度量,采用香农熵公式计算。
2. 信源编码香农编码和哈夫曼编码是无损压缩编码方法,通过为符号分配唯一的编码,减少传输过程中的冗余信息。
3. 信道编码卷积编码和汉明编码是有损压缩编码方法,通过增加冗余信息,提高传输过程中的可靠性。
4. 误码率分析通过模拟传输过程,比较不同编码方案下的误码率性能。
5. 编码技术的应用探讨编码技术在实际通信系统中的应用,如数字通信、无线通信等。
四、实验器材与软件1. 实验器材(1)计算机;(2)实验箱;(3)调试器;(4)示波器。
2. 实验软件(1)编程语言软件(如C/C++、Python等);(2)仿真软件(如MATLAB、Multisim等)。
五、实验结果与评价1. 实验结果(1)完成信源熵的计算;(2)得到信源编码和信道编码的代码;(3)通过模拟传输过程,得到不同编码方案下的误码率性能;(4)分析编码技术在实际通信系统中的应用。