实验四 信息编码

合集下载

信息论编码实验报告 费诺编码附源代码

信息论编码实验报告 费诺编码附源代码

中南大学信息论与编码实验报告选题:费诺编码学生姓名:学号:专业班级:通信工程指导老师:学院:信息科学与工程学院时间: 2015目录一、实验目的二、实验原理2.1 费诺编码思想2.2 费诺编码流程图三、实验内容四、实验要求五、代码调试结果六、心得体会七、程序源代码一实验目的1. 掌握费诺编码的原理和过程。

2. 熟悉 C/C++语言,练习使用C/C++实现香农码和Huffman 编码。

二、实验原理2.1 费诺编码思想设有离散无记忆信源∑==⎥⎦⎤⎢⎣⎡ni i n n x p x p x p x p x x x 121211)(,)(.....)()(.....1.按信源符号的概率从大到小的顺序排队 不妨设)(......)()(21n x p x p x p ≥≥≥2.将依次排列的信源符号按概率值分为两大组,使两个组的概率之和近似相同,并对各组赋予一个二进制码元“0”和“1”。

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

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

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

例:有一单符号离散无记忆信源⎭⎬⎫⎩⎨⎧=⎥⎦⎤⎢⎣⎡04.008.016.018.022.032.0)(654321x x x x x x X P X对该信源编二进制费诺码)i /(35.2)(gn s bit X H = m L KR 2log =%92.97)(==R x H η∑===61)/(4.2)(i i i k x p K 符号比特2.2 费诺编码流程图三、实验内容使用C\C++实现费诺编码,并自己设计测试案例。

四、实验要求1.提前预习实验,认真阅读实验原理以及相应的参考书。

2.认真高效的完成实验,实验中服从实验室管理人员以及实验指导老师的管理。

3.认真撰写实验报告,内容可以自己编排,可以考虑包括以下一些方面:原理概述、程序设计与算法描述、源程序及注释(程序太长可以只选取重要部分)、运行输出结果实例、调试和运行程序过程中产生的问题及采取的措施、对实验的讨论分析、总结。

实验四_香农编码

实验四_香农编码

实验名称:实验四香农编码一、实验目的:加深对香农公式的理解及其具体的实现过程。

二、实验内容与原理:内容:计算二进制香农编码三、实验步骤1.分析香农公式的算法2.将香农公式的流程转换为具体的代码四、实验数据及结果分析(可附程序运行截图)编码的结果:平均码长和编码效率:五、代码附录clear;% c = strcat(a,b)字符串连接p=[0.25 0.25 0.2 0.15 0.1 0.05];P=fliplr(sort(p));%按大到小排序Pa=[0;0];%累加和的定义----第一行为累加和,第二行为Ki %求累加和for x=1for y=1:1:5%Pa(x,y)=1;Pa(x,y+1)=P(x,y)+ Pa(x,y);endend%ceil 是取向离它最近的大整数圆整for i=2for j=1:1:6Pa(i,j)=ceil( -log2(P(1,j)) );endend%信源熵H=0;L=0;for i=1:1:6H=H-P(i)*log2(P(i));L=L+P(i)*Pa(2,i);endu=H/L;disp('平均码长:;');disp(L);disp('编码效率:');disp(u);%求各符号的编码temp=[];%临时的编码值:1:6for m=1:1:6fprintf('a(%d):',m);for n=1:1:abs(Pa(2,m))temp(m,n)=Pa(1,m)*2;if temp(m,n)>=1O(m,n)=1;Pa(1,m)=temp(m,n)-1;elseO(m,n)=0;Pa(1,m)=temp(m,n);endfprintf('%d',O(m,n));endfprintf('\n');end六、其他:实验总结、心得体会及对本实验方法、手段及过程的改进建议等。

实验起初是想把累加和及Ki和编码放在一个二维矩阵中,但具体的实现较为复杂,所以最后改为逐行存放并成功完成了实验。

信息论 实验四 香农编码

信息论 实验四 香农编码

实验四 香农编码一、实验目的:掌握香农编码的方法二、实验内容:对信源123456,,,,,()0.250.250.020.150.10.05a a a a a a X P X ⎧⎫⎛⎫=⎨⎬ ⎪⎝⎭⎩⎭进行二进制香农编码。

并计算其平均码长,信源熵,和编码效率。

三、实验步骤(1)将信源符号按概率从大到小的顺序排列。

(2)用Pa (i )表示第i 个码字的累加概率(3)确定满足下列不等式的整数K (i ),并令K (i )为第i 个码字的长度22log ()()1log ()Pa i K i Pa i -≤<-(4)将Pa (i )用二进制表示,并取小数点后K (i )位最为a (i )的编码四、实验数据及结果分析(1)将信源符号按概率从大到小的顺序排列。

P=(0.25 0.25 0.2 0.15 0.1 0.05);(2)用Pa (i )表示第i 个码字的累加概率。

Pa=(0 0.2500 0.5000 0.7000 0.8500 0.9500)(3)确定满足下列不等式的整数K (i )。

K=(2 2 3 3 4 5)(4)将Pa (i )用二进制表示,并取小数点后K (i )位最为a (i )的编码0001100101110111110(5)计算其平均码长,信源熵,和编码效率平均码长 L=2.7信源熵H=2.4232编码效率xiaolv=0.89749五、代码附录N=input('N='); %输入信源符号的个数s=0;L=0;H=0;Pa=zeros(1,6);for i=1:NP(i)=input('P=');%输入信源符号概率分布s=s+P(i);endif s~=1error('不符合概率分布');endP=sort(P,'descend');Pa(1)=0;for i=2:NPa(i)=Pa(i-1)+P(i-1);enddisp(Pa);for i=1:Na=-log2(P(i));if mod(a,1)==0 %计算第i个码字的长度K(i)=a;elseK(i)=fix(a+1);endL=L+P(i)*K(i); %计算平均码长H=H-P(i)*log2(P(i));%计算信源熵Endxiaolv=H/L; %计算编码效率for i=1:Nfor j=1:K(i)W(i,j)=fix(Pa(i)*2);Pa(i)=Pa(i)*2-fix(Pa(i)*2);fprintf('%d',W(i,j));endfprintf('\n');end六,实验总结:通过该实验,掌握了香农编码。

信息论与编码实验报告

信息论与编码实验报告

信息论与编码实验报告一、实验目的本实验主要目的是通过实验验证信息论与编码理论的基本原理,了解信息的产生、传输和编码的基本过程,深入理解信源、信道和编码的关系,以及各种编码技术的应用。

二、实验设备及原理实验设备:计算机、编码器、解码器、信道模拟器、信噪比计算器等。

实验原理:信息论是由香农提出的一种研究信息传输与数据压缩问题的数学理论。

信源产生的消息通常是具有统计规律的,信道是传送消息的媒体,编码是将消息转换成信号的过程。

根据信息论的基本原理,信息的度量单位是比特(bit),一个比特可以表示两个平等可能的事件。

信源的熵(Entropy)是用来衡量信源产生的信息量大小的物理量,熵越大,信息量就越多。

信道容量是用来衡量信道传输信息的极限容量,即信道的最高传输速率,单位是比特/秒。

编码是为了提高信道的利用率,减少传输时间,提高传输质量等目的而进行的一种信号转换过程。

常见的编码技术有霍夫曼编码、香农-费诺编码、区块编码等。

三、实验步骤1.运行编码器和解码器软件,设置信源信息,编码器将信源信息进行编码,生成信道输入信号。

2.设置信道模拟器的信道参数,模拟信道传输过程。

3.将信道输出信号输入到解码器,解码器将信道输出信号进行解码,恢复信源信息。

4.计算信道容量和实际传输速率,比较两者的差异。

5.改变信道参数和编码方式,观察对实际传输速率的影响。

四、实验结果与分析通过实验,我们可以得到不同信道及编码方式下的信息传输速率,根据信道参数和编码方式的不同,传输速率有时会接近信道容量,有时会低于信道容量。

这是因为在真实的传输过程中,存在信噪比、传输距离等因素导致的误码率,从而降低了实际传输速率。

在实验中,我们还可以观察到不同编码方式对传输速率的影响。

例如,霍夫曼编码适用于信源概率分布不均匀的情况,可以实现数据压缩,提高传输效率。

而区块编码适用于数据容量较大的情况,可以分块传输,降低传输错误率。

此外,通过实验我们还可以了解到信息论中的一些重要概念,如信源熵、信道容量等。

信息与编码实验教案剖析

信息与编码实验教案剖析

信息与编码实验教案数学与计算科学学院信息教研室2009年10月10日信息编码理论是信息计算科学专业的一门重要的专业基础课,对于提高学生的信息科学基础知识具有重要的作用。

信息编码实验,是为了提高学生的应用技能,融汇计算机编程能力培养与信息编码基础理论的一个重要环节。

实验包括四个:。

● 信源熵的计算 ● 香农编码 ● 循环码● 有限域上插值多项式的构造 信息编码实验要求用C 语言完成。

实验一、信源熵的计算实验背景:根据信源熵的性质,英语的信源熵的最大值为76.427log 20==H (比特/符号),但事实上,由于在英语中的字母并非等概出现(表1),实际的离散信源熵大概为03.41=H (比特/符号),有些字母之间还有较强的依赖关系,为了进一步逼近实际情况,可对英语信源进行2维、三维等形式的统计,求得实际的熵,其中32.32=H (比特/符号),1.33=H (比特/符号)。

容易推知,有依赖关系的字母数越多,输出的序列越接近于实际情况,当依赖关系延伸到无穷远时,信源输出的就是真正的英语。

此时可求出马尔可夫信源的极限熵4.1=H (比特/符号)。

表1 27个英语符号出现的概率实验内容:1. 将一大段英文文章作为要统计的样本文件2. 对样本文件进行一维概率统计,并计算出信源熵及冗余度3. 对样本文件进行二维概率统计,并计算出信源熵及冗余度在进行统计时,首先要在程序中打开文件,然后对文件中的字符读入程序中,进行统计。

而在二维统计时,尤其要求对文件的指针操作要熟悉。

如读入“newspaper”时,应该依次读入“ne ew ws sp pa ap pe er”,而如果使用fgetc()等命令读文件时,读入的是“ne ws pa pe”为了依次读入“ne ew ws sp pa ap pe er”,就要求在每次调入fgetc()等命令后,再将文件指针往后退一步,即要求学生能熟练使用fseek()命令进行指针定位操作。

实验四码型变换实验

实验四码型变换实验

④BRZ码 BRZ码的全称是双极性归零码,与BNRZ码不同的是,发送“1”和“0”时, 在整个码元期间高电平或低电平只持续一段时间,在码元的其余时间内则返回 到零电平。例如: 1 0 1 0 0 1 1 0
+E 0 -E
ห้องสมุดไป่ตู้ 4.3、AMI编码规则
⑤ AMI码 AMI码的全称是传号交替反转码,其编码规则如下:信息码中的“0”仍变换 为传输码的“0”;信息码中的“1”交替变换为传输码的“+1、-1、+1、- 1、…”。例如:
⑧ CMI码 CMI码的全称是传号反转码,其编码规则如下:信息码中的“1”码交替用 “11”和“00”表示,“0”码用“01”表示。例如:
代码:
1
1
0
1
0
0
1
0
CMI码: 11 00 01 11 01 01 00 01
这种码型有较多的电平跃变,因此,含有丰富的定时信息。该码已被ITUT推荐为PCM四次群的接口码型。在光纤传输系统中有时也用CMI码作线路传 输码型。
代码:
1
1
0
0
1
0
1
双相码: 10 10 01 01 10 01 10
BPH码可以用单极性非归零码(NRZ)与位同步信号的模二和来产生。 双相码的特点是只使用两个电平,而不像前面二种码具有三个电平。这种码 既能提取足够的定时分量,又无直流漂移,编码过程简单。但这种码的带宽 要宽些。
4.6、CMI编码规则
4.4、HDB3编码规则
⑥ HDB3码 HDB3码的全称是三阶高密度双极性码,其编码规则如下:将 4 个连“0 ”信息 码用取代节“000V”或“B00V”代替,当两个相邻“V”码中间有奇数个信息“1” 码 时 取 代 节 为 “ 0 0 0 V”; 有 偶 数 个 信 息 “ 1 ” 码 ( 包 括 0 个 ) 时 取 代 节 为 “ B00V”,其它的信息“ 0”码仍为“ 0 ”码,这样,信息码的“ 1 ”码变为带 有符号的“1”码即“+1”或“-1”。例如:

数据的编码实验报告

数据的编码实验报告

一、实验目的1. 了解数据编码的基本概念和方法。

2. 掌握常用数据编码技术,如ASCII码、Unicode码等。

3. 熟悉数据编码在信息处理中的应用。

二、实验原理数据编码是将数据转换成计算机可识别的二进制形式的过程。

数据编码的主要目的是为了便于计算机存储、处理和传输信息。

常用的数据编码技术有ASCII码、Unicode码、ISO码等。

三、实验内容1. ASCII码编码实验2. Unicode码编码实验3. 数据编码应用实验四、实验步骤1. ASCII码编码实验(1)打开记事本,输入一段文本信息,如:“Hello, World!”。

(2)将记事本保存为文本文件(.txt)。

(3)使用文本编辑器打开该文件,查看其内容。

(4)使用ASCII码表,将每个字符对应的ASCII值找出来,如:H对应65,e对应101,l对应108,如此类推。

(5)将ASCII值转换为二进制形式,如:65的二进制为01000001,101的二进制为11001001,108的二进制为11011000,如此类推。

(6)将所有字符的二进制编码拼接起来,得到该文本的ASCII码编码。

2. Unicode码编码实验(1)打开记事本,输入一段包含中文字符的文本信息,如:“你好,世界!”。

(2)将记事本保存为文本文件(.txt)。

(3)使用文本编辑器打开该文件,查看其内容。

(4)将文本文件转换为UTF-8编码,并保存。

(5)使用文本编辑器打开UTF-8编码的文件,查看其内容。

(6)使用Unicode码表,将每个字符对应的Unicode值找出来,如:“你”的Unicode值为20320,“好”的Unicode值为22909,如此类推。

(7)将Unicode值转换为二进制形式,如:20320的二进制为11100100 00000000,22909的二进制为10010001 10011001,如此类推。

(8)将所有字符的二进制编码拼接起来,得到该文本的Unicode码编码。

PCM编码实验报告

PCM编码实验报告

实验四脉冲编码调制(pcm)实验一、实验目的通过本实验,学生应达到以下要求: 1,了解语音信号pcm编译码的工作原理及实现过程. 2,验证pcm编译码原理. 3,初步了解pcm专用大规模集成电路的工作原理和应用. 4,了解语音信号数字化技术的主要指标,学习并掌握相应的测试方法.二、实验内容本实验可完成以下实验内容:? 观察测量pcm调制解调的各种时隙信号 ? 观察编译码波形? 测试动态范围、信噪比和系统频率特性 ? 对系统性能指标进行测试和分析? 系统输出信噪比特性测量? 编码动态范围和系统动态范围测量 ? 系统幅频特性测量 ? 空载噪声测量三、基本原理脉冲编码(pcm)技术已经在数字通信系统中得到了广泛的应用.十多年来,由于超大规模集成技术的发展,pcm通信设备在缩小体积,减轻重量,降低功耗,简化调试以及方便维护等方面都有了显著的改进.目前,数字电话终端机的关键部件,如编译码器(codec)和话路滤波器等都实现了集成化.本实验是以这些产品编排的 pcm 编译码系统实验,以期让实验者了解通信专用大规模集成电路在通信系统中应用的新技术. pcm 数字电话终端机的构成原理如图 4.1 所示.实验只包括虚线框内的部分,故名 pcm编译码实验.发滤波器voice编码器合路发混合装置收滤波器译码器分路收图4.1 pcm数字电话终端机的结构示意图1、实验原理和电路说明pcm编译码系统由定时部分和pcm编译码器构成,电路原理图附于本章后. ? pcm编译码原理为适应语音信号的动态范围,实用的pcm编译码必须是非线性的.目前,国际上采用的均是折线近似的对数压扩特性.itu-t 的建议规定以 13 段折线近似的 a 律(a=87.56)和 15段折线近似的μ律(μ=255)作为国际标准.a 律和μ律的量化特性初始段如图 4.2 和图 4.3所示.a律和μ律的编译码表分别列于表1和表2.(附本章后) 这种折线近似压扩特性的特点是:各段落间量阶关系都是 2 的幂次,在段落内为均匀分层量化,即等间隔16个分层,这些对于用数字电路实现非线性编码与译码是极为方便的. ? pcm编译码器简介鉴于我国国内采用的是a律量化特性,因此本实验采用tp3067专用大规模集成电路,它是cmos工艺制造的单片pcma律编译器,并且片内带输入输出话路滤波器. tp3067的管脚如图4.4所示,内部组成框图如图4.5所示. tp3067的管脚定义简述如下:(1)vpo+ 收端功率放大器的同相输出端.(2)gnda 模拟地.所有信号都以此管脚为参考. (3)vpo- 收端功放的反相输出端.(4)vpi 收端功放的反相输入端.(5)vfro 接收部分滤波器模拟输出端. (6)vcc +5v电压输入.(7)fsr接收部分帧同步时隙信号,是一个8khz脉冲序列. (8)dr接收部分pcm码流解码输入端.(9)bclkr/clksel位时钟(bitclock),它使pcm码流随着fsr上升沿逐位移入dr端,位时钟可以为从 64khz 到 2048mhz 的任意频率.或者作为一个逻辑输入选择 1536mhz,1544mhz或2048mhz,用作同步模式的主时钟.(10)mclkr/pdn接收部分主时钟,它的频率必须为1536mhz,1544mhz或2048mhz.可以和mcklx异步,但是同步工作时可达到最佳状态.当 mclkx 接低电平,mclkr被选择为内部时钟,当 mclkx接高电平,该芯片进入低功耗状态.(11)mclkx发送部分主时钟,必须为1536mhz,1544mhz或2048mhz.可以和mclkr异步,但是同步工作时可达到最佳状态.(12)bclkx发送部分时钟,使pcm码流逐位移入dr端.可以为从64khz到2048mhz的任意频率,但必须和mclkx同步.(13)dx发送部分pcm码流编码输出端.(14)fsx发送部分帧同步时隙信号,为一个8khz的脉冲序列. (15)tsx漏极开路输出端,它在编码时隙输出低电平.(16)anlb 模拟反馈输入端.在正常工作状态下必须置成逻辑0.当置成逻辑1时,发送部分滤波器的输入端并不与发送部分的前置滤波器相连,而是和接收部分功放的vpo+相连.(17)gsx发送部分输入放大器的模拟基础,用于在外部同轴增益. (18)vfxi发送部分输入放大器的反相输入端。

实践信息编码教案,促进班级教学管理

实践信息编码教案,促进班级教学管理

实践信息编码教案,促进班级教学管理一、教案简介本教案旨在通过实践信息编码的方法,帮助学生理解和掌握信息编码的基本概念和技巧,提高他们在日常生活和学习中的信息处理能力,促进班级教学管理的有序进行。

二、教学目标1. 了解信息编码的基本概念和作用。

2. 掌握常见的信息编码方法和技术。

3. 能够运用信息编码技巧,提高信息处理效率。

4. 培养学生的团队合作意识和沟通能力。

三、教学内容1. 信息编码的基本概念:信息编码的定义、作用和分类。

2. 常见的信息编码方法:数字编码、字母编码、颜色编码等。

3. 信息编码的实际应用:学习资料的整理、班级管理、时间管理等。

4. 团队合作与沟通:分组活动、讨论、分享等。

四、教学方法1. 讲授法:讲解信息编码的基本概念和作用。

2. 演示法:展示信息编码的实际应用案例。

3. 实践法:学生亲自动手进行信息编码实践。

4. 小组讨论法:学生分组讨论,分享信息编码的经验和心得。

五、教学评估1. 课堂参与度:观察学生在课堂上的发言和参与情况。

2. 实践作品:评估学生信息编码实践作品的质量和创意。

3. 小组讨论:评估学生在小组讨论中的表现和团队合作能力。

4. 课后反馈:收集学生的课后反馈,了解他们对信息编码的理解和应用情况。

六、教学准备1. 教材或教学资源:准备关于信息编码的基础知识和案例分析的教材或教学资源。

2. 实践材料:准备学生进行信息编码实践所需的材料,如卡片、标签、颜色笔等。

3. 小组讨论工具:准备可供学生分组讨论和分享的的工具,如白板、投影仪等。

七、教学步骤1. 引入主题:通过一个实际案例或问题,引起学生对信息编码的兴趣和关注。

2. 讲解基本概念:向学生介绍信息编码的定义、作用和分类。

3. 演示实际应用:通过展示一些信息编码的案例,让学生了解信息编码在日常生活和学习中的应用。

4. 分组实践活动:将学生分成小组,让他们根据给定的任务进行信息编码实践。

5. 小组讨论和分享:让学生分享他们的实践经验,讨论信息编码的优点和挑战。

实验四--Δm及CVSD编译码实验

实验四--Δm及CVSD编译码实验

实验四--Δm及CVSD编译码实验实验四Δm及CVSD编译码实验一、实验目的1、掌握简单增量调制的工作原理。

2、理解量化噪声及过载量化噪声的定义,掌握其测试方法。

3、了解简单增量调制与CVSD工作原理不同之处及性能上的差别。

二、实验器材1、主控&信号源模块、21号、3号模块各一块2、双踪示波器一台3、连接线若干三、实验原理1、Δm编译码(1)实验原理框图信号源music/A-outCLK抗混叠滤波器LPFLPF-IN LPF-OUTΔm 编码编码输入门限判决时钟Δm译码时钟译码输入译码输出3# 信源编译码模块比较量化延时极性变换量阶编码输出延时本地译码音频输入图一Δm编译码框图(2)实验框图说明编码输入信号与本地译码的信号相比较,如果大于本地译码信号则输出正的量阶信号,如果小于本地译码则输出负的量阶。

然后,量阶会对本地译码的信号进行调整,也就是编码部分“+”运算。

编码输出是将正量阶变为1,负量阶变为0。

Δm译码的过程实际上就是编码的本地译码的过程。

2、CVSD编译码(1)实验原理框图信号源music/A-outCLK抗混叠滤波器LPFLPF-IN LPF-OUTΔm 编码编码输入门限判决时钟Δm译码时钟译码输入译码输出比较延时极性变换量阶调整编码输出延时本地译码量阶调整一致脉冲量阶3# 信源编译码模块音频输入图二 CVSD编译码框图(2)实验框图说明与Δm相比,CVSD多了量阶调整的过程。

而量阶是根据一致脉冲进行调整的。

一致性脉冲是指比较结果连续三个相同就会给出一个脉冲信号,这个脉冲信号就是一致脉冲。

其他的编译码过程均与Δm一样。

四、实验步骤项目一:△M编码规则实验项目二:量化噪声观测项目三:不同量阶△M编译码的性能项目四:△M编译码语音传输系统项目五:CVSD量阶观测项目六:CVSD一致脉冲观测项目七;CVSD量化噪声观测项目八:CVSD码语音传输系统五、实验记录TP4(信源延时)和TH14(编码输出)TP4(信源延时)和TP3(本地译码)项目二CH1信源延时,CH2 本地译码项目三量阶3000,Vpp=3V项目三量阶6000,Vpp=3V 项目三量阶3000,Vpp=1V项目五量阶6000,Vpp=1V 项目五 Vout=1V项目五 Vout=2V项目五 Vout=4V项目七 Vpp=1V 项目七 Vpp=3VCVSD量化噪声观测(2KHz)Vpp=3V的噪声CVSD量化噪声观测(2KHz)Vpp=1V的噪声六、思考题回答1.增量调制的速率可以是32kbps、16kbps相比PCM 64kbps产生的原因怎样?(请查找资料)今天VoIP采用什么样的信源编码?视频的MPEG2编码又是什么?答:PCM的速率是增量调制的整数倍,利用此特点,可进行信道的复用,扩大信息量的传输。

信息论编码实验四香农编码(可打印修改)

信息论编码实验四香农编码(可打印修改)
2、实验小结: 本次实验顺利完成。 这次的实验主要是针对香农编码,通过这次的实验我进一步理解了香农编码的概念同
事也掌握香农编码的一般算法和香农编码算法中的二进制编码算法。 一开始做实验的时候,如果任意给定一个信源模型,要求编程实现其二进制香农编码,
输出编码结果对我而言有很大的难度,但是通过这次的实验,这些操作对我而言驾轻就熟 不在话下了。这次实验让我学到了很多,很有意义。
Hale Waihona Puke D(:,1)=y';%把 y 赋给零矩阵的第一列 for i=2:n
D(1,2)=0;%令第一行第二列的元素为 0 D(i,2)=D(i-1,1)+D(i-1,2);%第二列其余的元素用此式求得,即为累加概率 end for i=1:n D(i,3)=-log2(D(i,1));%求第三列的元素 D(i,4)=ceil(D(i,3));%求第四列的元素,对 D(i,3)向无穷方向取最小正整数 end D A=D(:,2)';%取出 D 中第二列元素 B=D(:,4)';%取出 D 中第四列元素 for j=1:n C=deczbin(A(j),B(j))%生成码字 function [C]=deczbin(A,B)%对累加概率求二进制的函数 C=zeros(1,B);%生成零矩阵用于存储生成的二进制数,对二进制的每一位进行操作 temp=A;%temp 赋初值 for i=1:B%累加概率转化为二进制,循环求二进制的每一位,A 控制生成二进制的位数 temp=temp*2; if temp>=1 temp=temp-1; C(1,i)=1; else C(1,i)=0; end end
实验四 香农编码
一、实验目的
1、理解香农编码的概念。 2、掌握香农编码的一般算法 3、掌握香农编码算法中的二进制编码算法。 4、任意给定一个信源模型,编程实现其二进制香农编码,输出编码结果。

信息论与编码实验指导书

信息论与编码实验指导书

没实验一 绘制二进熵函数曲线(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。

信息论与编码实验报告

信息论与编码实验报告

实验报告课程名称:信息论与编码姓名:系:专业:年级:学号:指导教师:职称:年月日目录实验一信源熵值的计算 (1)实验二 Huffman信源编码 (5)实验三 Shannon编码 (9)实验四信道容量的迭代算法 (12)实验五率失真函数 (15)实验六差错控制方法 (20)实验七汉明编码 (22)实验一 信源熵值的计算一、 实验目的1 进一步熟悉信源熵值的计算 2熟悉 Matlab 编程二、实验原理熵(平均自信息)的计算公式∑∑=--==qi i i qi i i p p p p x H 1212log 1log )(MATLAB 实现:))(log *.(2x x sum HX -=;或者))((log *)(2i x i x h h -= 流程:第一步:打开一个名为“nan311”的TXT 文档,读入一篇英文文章存入一个数组temp ,为了程序准确性将所读内容转存到另一个数组S ,计算该数组中每个字母与空格的出现次数(遇到小写字母都将其转化为大写字母进行计数),每出现一次该字符的计数器+1;第二步:计算信源总大小计算出每个字母和空格出现的概率;最后,通过统计数据和信息熵公式计算出所求信源熵值(本程序中单位为奈特nat )。

程序流程图:三、实验内容1、写出计算自信息量的Matlab 程序2、已知:信源符号为英文字母(不区分大小写)和空格。

输入:一篇英文的信源文档。

输出:给出该信源文档的中各个字母与空格的概率分布,以及该信源的熵。

四、实验环境Microsoft Windows 7Matlab 6.5五、编码程序#include"stdio.h"#include <math.h>#include <string.h>#define N 1000int main(void){char s[N];int i,n=0;float num[27]={0};double result=0,p[27]={0};FILE *f;char *temp=new char[485];f=fopen("nan311.txt","r");while (!feof(f)) {fread(temp,1, 486, f);}fclose(f);s[0]=*temp;for(i=0;i<strlen(temp);i++){s[i]=temp[i];}for(i=0;i<strlen(s);i++){if(s[i]==' ')num[26]++;else if(s[i]>='a'&&s[i]<='z')num[s[i]-97]++;else if(s[i]>='A'&&s[i]<='Z')num[s[i]-65]++;}printf("文档中各个字母出现的频率:\n");for(i=0;i<26;i++){p[i]=num[i]/strlen(s);printf("%3c:%f\t",i+65,p[i]);n++;if(n==3){printf("\n");n=0;}}p[26]=num[26]/strlen(s);printf("空格:%f\t",p[26]);printf("\n");for(i=0;i<27;i++){if (p[i]!=0)result=result+p[i]*log(p[i]);}result=-result;printf("信息熵为:%f",result);printf("\n");return 0;}六、求解结果其中nan311.txt中的文档如下:There is no hate without fear. Hate is crystallized fear, fear’s dividend, fear objectivized. We hate what we fear and so where hate is, fear is lurking. Thus we hate what threatens our person, our vanity andour dreams and plans for ourselves. If we can isolate this element in what we hate we may be able to cease from hating.七、实验总结通过这次实验,我们懂得了不必运行程序时重新输入文档就可以对文档进行统计,既节省了时间而且也规避了一些输入错误。

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

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

《信息论与编码技术》实验教案一、实验目的1. 理解信息论基本概念,如信息量、信道容量等。

2. 掌握编码技术的基本原理,如Hamming 编码、卷积编码等。

3. 学会使用仿真工具进行信息论与编码技术的实验。

二、实验原理1. 信息论基本概念:信息量、信道容量、误码率等。

2. 编码技术原理:Hamming 编码、卷积编码、解码算法等。

3. 仿真工具的使用:调用相关函数,设置参数,观察实验结果。

三、实验内容1. 实验一:信息量计算与信道容量分析利用仿真工具随机比特序列,计算信息量。

改变信道参数,分析信道容量变化。

2. 实验二:Hamming 编码与解码编写Hamming 编码器和解码器,进行编码和解码操作。

分析误码率与编码位数的关系。

3. 实验三:卷积编码与解码编写卷积编码器和解码器,进行编码和解码操作。

分析误码率与卷积编码器参数的关系。

4. 实验四:不同编码方案性能比较分别使用Hamming 编码和卷积编码对相同长度比特序列进行编码。

比较两种编码方案的误码率和信息传输效率。

5. 实验五:信息论与编码技术在实际应用中的案例分析分析数字通信系统中信息论与编码技术的应用。

了解信息论与编码技术在无线通信、图像传输等领域的应用。

四、实验步骤1. 实验一:信息量计算与信道容量分析随机比特序列,计算信息量。

设置信道参数,观察信道容量变化。

2. 实验二:Hamming 编码与解码编写Hamming 编码器和解码器,进行编码和解码操作。

改变编码位数,分析误码率变化。

3. 实验三:卷积编码与解码编写卷积编码器和解码器,进行编码和解码操作。

改变卷积编码器参数,分析误码率变化。

4. 实验四:不同编码方案性能比较使用Hamming 编码和卷积编码对相同长度比特序列进行编码。

比较两种编码方案的误码率和信息传输效率。

5. 实验五:信息论与编码技术在实际应用中的案例分析分析数字通信系统中信息论与编码技术的应用案例。

了解信息论与编码技术在无线通信、图像传输等领域的应用。

信息编码实验报告4-线性码

信息编码实验报告4-线性码

《信息与编码》课内实验报告学生姓名:及学号:学院:班级:课程名称:信息与编码实验题目:线性码的编码与译码指导教师姓名及职称:2015年4月29日目录一、实验目的 (1)二、实验内容 (1)三、实验要点及说明 (1)四、实现方法 (1)五、实验结果 (2)六、源程序清单 (3)七、思考及总结 (4)一、实验目的1. 掌握线性码的编码方法;2.掌握线性码的标准阵和伴随式译码方法;3. 深入理解线性码的生成矩阵、校验矩阵、码的最小距离、纠错、检错等。

二、实验内容对任意给定的向量进行线性码编码;对任意收到的字进行线性码译码。

实验具体要求如下:1.给定一个q元[n, k]线性码,要求q>=2,n>=4,k>=2;2.输出线性码的生成矩阵、校验矩阵;3.至少输出对两个向量线性码的编码结果;至少输出对两个码字进行线性码的译码结果;三、实验要点及说明准确理解线性码编码译码方法,并能通过matlab编程对已知发送信息或接收字进行译码;通过实验验证纠错能力。

四、实现方法用matlab软件编程实验以上要求。

(1)对给定编码方法,如生成矩阵,计算所有码字;(2)对给定接受码,进行译码,并得到相关信息。

五、实验结果>> xxm([1 0 1])此码生成矩阵:G =1 0 0 1 10 1 1 0 1此校验矩阵:H =0 1 1 0 01 0 0 1 01 1 0 0 1Error using xxm (line 31)输入向量长为2或5!>> xxm([1 0 1 0 1])此码生成矩阵:G =1 0 0 1 10 1 1 0 1此校验矩阵:H =0 1 1 0 01 0 0 1 01 1 0 0 1>> xxm([1 0])此码生成矩阵:G =1 0 0 1 10 1 1 0 1此校验矩阵:H =0 1 1 0 01 0 0 1 01 1 0 0 1信息[1 0]编码:1 0 0 1 1ans =1 0 0 1 1>> xxm([1 0 0 1 1])此码生成矩阵:G =1 0 0 1 10 1 1 0 1此校验矩阵:H =0 1 1 0 01 0 0 1 01 1 0 0 1无错误,译码为:1 0 0 1 1wc =0 1 11 0 11 0 0Error using xxm (line 24)错误位数超过1位,无法纠错!六、源程序清单function y=xxm(x)% 对给定的二元[5,2]线性码进行编码G=[1 0 0 1 1 ;0 1 1 0 1];H=[G(:,3:5)' eye(3)];disp('此码生成矩阵')Gdisp(' 此码校验矩阵')H%生成码元if length(x)==2y=mod(x*G,2);disp(strcat('信息',mat2str(x),'编码'))disp(y)elseif length(x)==5 %译码Sx=mod(x*H',2);if sum(Sx)==0disp('无错误,译码为:');disp(x)wc=mod(eye(3,5)*H',2)Sx1=Sx(1)*100+Sx(2)*10+Sx(3);wc1=wc(:,1)*100+wc(:,2)*10+wc(:,3);w=find(wc1==Sx1);if length(w)==0error('错误位数超过1位,无法纠错!') endwcc=eye(5);y=x-wcc(w,:);disp(strcat('该码第',num2str(w),'位错,译码为:'));yendelse error('输入向量长为2或5!')end七、思考及总结通过这次课内实验对线性码的编码方法、线性码的标准阵和伴随式译码方法、深入理解线性码的生成矩阵、校验矩阵、码的最小距离、纠错、检错等都有所了解和实践。

实验四循环码编、译码实验

实验四循环码编、译码实验

课程名称:通信原理实验题目:实验四循环码编、译码实验学生姓名:专业:电子信息工程班级:电信10-2班学号:指导教师:**日期: 2012 年 12 月 5 日实验四 循环码编、译码实验一、 实验目的了解生成多项式g (x )与编、译码器之间的关系,码距与纠、检错能力之间的关系。

二、 实验内容1.根据编码规则验证循环码的生成多项式1)(4569+++++=x x x x x x g 。

2.通过实验了解循环码的工作原理。

(1) 了解生成多项式g (x )与编码及译码的关系。

(2) 了解生成多项式g (x )与码距d 的关系。

(3) 了解码距d 与纠、检错能力之间的关系。

(4) 观察该码能纠几个错误码元。

(5) 观察循环码的循环性以及封闭性。

3.通过实验了解编、译码器的组成方框图及其主要波形图。

4.了解信道中的噪声对该系统的影响。

三、 基本原理1.总原理方框图(图1)。

图1循环码的编、译码系统由下列五部分组成:定时单元、信码发生器及显示部分、编码器、模拟信道部分(包括错码发生器及显示部分)和译码器。

(1) 定时单元本单元提供编码器及译码器所需的时序信号。

其时钟重复频率(CP )为2MHZ 。

(2)信码发生器本单元给编码器提供一个信号源,手控开关(板上CDIN )置于+5V 时,发光二极管亮,代表输出“1”码元。

若开关置于“0”,代表输出“0”码元。

根据二极管亮与否可在面板上直接读出所需信码。

信码从“000000”…“111111”共有26=64种状态,代表64个码字。

每一个码字均由手控开关组成,在帧脉冲信号的作用下,与门开启,手控信号并行输入移位寄存器(D 触发器)的S 端。

当脉冲消失后,随着时钟脉冲CP 的作用,CDIN 串行输出所需的码元。

(3)循环码编码器原理编码器是本实验的主要部分。

根据生成多项式1)(4569+++++=x x x x x x g ,采用5个异或门和D 触发器组成编码器。

在K1信号的控制下,输入6位信息码元CDIN ,一方面串行输入信道(即至收端译码器中的6位移存器),另一方面通过与门送入除法电路进行计算。

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

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

《信息论与编码技术》实验教案第一章:绪论1.1 课程背景介绍信息论与编码技术的起源、发展及应用领域,强调其在现代通信技术中的重要性。

1.2 实验目的使学生了解信息论与编码技术的基本概念,掌握信息论的基本计算方法,培养学生对信息编码的实际操作能力。

1.3 实验要求学生需预习相关理论课程,了解信息论的基本原理,掌握编码技术的基本概念。

第二章:信息论基本概念与计算2.1 信息量计算利用公式计算信息的熵、条件熵、联合熵等,通过实例使学生了解信息量的计算方法。

2.2 信道编码介绍常用的信道编码技术,如Hamming 码、奇偶校验码等,通过实际例子使学生了解编码的原理及应用。

2.3 误码率计算介绍误码率的定义及计算方法,使学生能够评估编码技术的性能。

第三章:数字基带传输3.1 数字基带信号介绍数字基带信号的分类、特点,使学生了解不同基带信号的传输特性。

3.2 基带传输系统分析基带传输系统的组成,了解系统中的主要噪声及影响因素。

3.3 基带传输仿真利用软件对数字基带传输系统进行仿真,使学生了解实际传输过程中的信号波形及误码情况。

第四章:信号检测与解码4.1 信号检测原理介绍信号检测的基本原理,如最大后验概率检测、最小距离检测等。

4.2 解码方法介绍解码的基本方法,如硬判决解码、软判决解码等,使学生了解不同解码方法的优缺点。

4.3 解码仿真利用软件对信号进行解码,分析不同解码方法对系统性能的影响。

第五章:实验总结与分析5.1 实验报告5.2 课程讨论组织学生进行课程讨论,分享实验心得,提高学生对信息论与编码技术的理解和应用能力。

5.3 课后作业布置课后作业,巩固实验内容,提高学生的实际操作能力。

第六章:实验一:信息熵的计算6.1 实验目的理解信息熵的概念,学习如何计算信息熵。

6.2 实验原理介绍信息熵的数学表达式和计算方法。

6.3 实验步骤1. 设置一组数据。

2. 计算信息熵。

3. 分析结果。

6.4 实验注意事项确保数据的准确性和计算的正确性。

信息论与编码实验四

信息论与编码实验四

实验4 Huffman编码对英文文本的压缩和解压缩
一、实验内容
根据信源压缩编码——Huffman编码的原理,制作对英文文本进行压缩和解压缩的软件。

要求软件有简单的用户界面,软件能够对运行的状态生成报告,分别是:字符频率统计报告、编码报告、压缩程度信息报告、码表存储空间报告。

二、实验环境
1.计算机
2.Windows 2000 或以上
3.Microsoft Office 2000 或以上
4.VC++ 6.0
三、实验目的
1.掌握Huffman编码的原理
2.掌握VC开发环境的使用(尤其是程序调试技巧)
3.掌握C语言编程(尤其是位运算和文件的操作)
4.掌握数据结构的内容:链表、顺序表、堆栈、最优二叉树
5.掌握结构化程序分析和开发的软件工程原理
四、实验要求
1.提前预习实验,认真阅读实验原理。

2.认真高效的完成实验,实验过程中服从实验室管理人员以及实验指导老
师的管理。

3.认真填写实验报告。

五、实验原理
压缩/解压缩流程
压缩流程:
解压缩流程:
六、参考书
1.《信息论——基础理论及应用》傅祖芸,电子工业出版社
2.《数据结构》,清华大学出版社。

信息论与编码技术实验指导书

信息论与编码技术实验指导书

2、写出程序代码, 3、写出在调试过程中出现的问题 , 4、对实验的结果进行分析。
实验六 模p信道编码实验 一 实验目的:掌握通过计算机实现模p信道编码 二实验要求: 对于给定的消息序列,按照模p信道编码的方法进行 计算机实现. 三实验原理 在实际生活中,有时侯“1”和“I”很相似。 p=37(符号的个数) 数字“0”-“9”和字母“A”-“Z”和空格 共37种符号。 “0” 0 “1” 1 ¨ “A” 10 “B” 11 设有某消息的符号序列为X=X1X2X3X4, 用下表的方式来求它们的和及累加和,然后加上 适当的监督元,使累加和是模37的倍数。 消息符号
型如下图:
在给定信源概率分布条件下, 各种熵的求解方法如下: 1) 信源熵 2) 条件熵
3) 联合熵
4) 交互熵 5) 信道容量 ◼一般离散信道容量对计算步骤总结如下:
4、 实验设备:计算机 c++ 五、实验报告要求 1、 画出程序设计的流程图, 2、 写出程序代码, 3、 写出在调试过程中出现的问题 , 4、 对实验的结果进行分析。
和 累加和 X1 X1 X1 X2 X1+X2 2*X1+X2 X3 X1+X2+X3 3*X1+2*X2+X3 X4 X1+X2+X3+X4 4*X1+3*X2+2*X3+X4
ψ X1+X2+X3+X4+ψ 5*X1+4*X2+3*X3+2*X4+ψ 四实验设备 计算机 c++ 五实验报告 1、画出程序设计的流程图, 2、写出程序代码, 3、写出在调试过程中出现的问题 , 实验目的:通过该实验,掌握通过计算机实验信息量 和信道容量的计算方法 2、 实验要求:对一个离散的无记忆信源,给定信源的输 入概率分布,给定一个信道特性,计算各种信息量和 熵,并计算信道容量。 3、 实验原理:

实验四Δm及CVSD编译码实验

实验四Δm及CVSD编译码实验

实验四Δm及CVSD编译码实验实验四Δm及CVSD编译码实验⼀、实验⽬的1、掌握简单增量调制的⼯作原理。

2、理解量化噪声及过载量化噪声的定义,掌握其测试⽅法。

3、了解简单增量调制与CVSD⼯作原理不同之处及性能上的差别。

⼆、实验器材1、主控&信号源模块、21号、3号模块各⼀块2、双踪⽰波器⼀台3、连接线若⼲三、实验原理1、Δm编译码(1)实验原理框图信号源music/A-outCLK抗混叠滤波器LPFLPF-IN LPF-OUTΔm 编码编码输⼊门限判决时钟Δm译码时钟译码输⼊译码输出3# 信源编译码模块⽐较量化延时极性变换量阶编码输出延时本地译码⾳频输⼊图⼀Δm编译码框图(2)实验框图说明编码输⼊信号与本地译码的信号相⽐较,如果⼤于本地译码信号则输出正的量阶信号,如果⼩于本地译码则输出负的量阶。

然后,量阶会对本地译码的信号进⾏调整,也就是编码部分“+”运算。

编码输出是将正量阶变为1,负量阶变为0。

Δm译码的过程实际上就是编码的本地译码的过程。

2、CVSD编译码(1)实验原理框图信号源music/A-outCLK抗混叠滤波器LPFLPF-INLPF-OUTΔm 编码编码输⼊门限判决时钟Δm 译码时钟译码输⼊译码输出⽐较延时极性变换量阶调整编码输出延时本地译码量阶调整⼀致脉冲量阶3# 信源编译码模块⾳频输⼊图⼆ CVSD 编译码框图(2)实验框图说明与Δm 相⽐,CVSD 多了量阶调整的过程。

⽽量阶是根据⼀致脉冲进⾏调整的。

⼀致性脉冲是指⽐较结果连续三个相同就会给出⼀个脉冲信号,这个脉冲信号就是⼀致脉冲。

其他的编译码过程均与Δm ⼀样。

四、实验步骤项⽬⼀:△M 编码规则实验项⽬⼆:量化噪声观测项⽬三:不同量阶△M 编译码的性能项⽬四:△M 编译码语⾳传输系统项⽬五:CVSD 量阶观测项⽬六:CVSD ⼀致脉冲观测项⽬七;CVSD 量化噪声观测项⽬⼋:CVSD 码语⾳传输系统五、实验记录TP4(信源延时)和TH14(编码输出) TP4(信源延时)和TP3(本地译码)项⽬⼆CH1信源延时,CH2 本地译码项⽬三量阶3000,Vpp=3V项⽬三量阶6000,Vpp=3V 项⽬三量阶3000,Vpp=1V项⽬五量阶6000,Vpp=1V 项⽬五 Vout=1V项⽬五 Vout=2V 项⽬五 Vout=4V项⽬七 Vpp=1V 项⽬七 Vpp=3VCVSD量化噪声观测(2KHz)Vpp=3V的噪声CVSD量化噪声观测(2KHz)Vpp=1V的噪声六、思考题回答1.增量调制的速率可以是32kbps、16kbps相⽐PCM 64kbps产⽣的原因怎样?(请查找资料)今天VoIP采⽤什么样的信源编码?视频的MPEG2编码⼜是什么?答:PCM的速率是增量调制的整数倍,利⽤此特点,可进⾏信道的复⽤,扩⼤信息量的传输。

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

实验四:Huffman编码的实现
实验学时:3
实验类型:(演示、验证、综合、√设计、研究)
实验要求:(√必修、选修)
一、实验目的
理解和掌握huffman编码的基本原理和方法,实现对信源符号的huffman编码。

二、实验内容
1.理解和掌握huffman编码的基本原理和方法
2.通过MATLAB或(c语言)编程实现对单信源符号的huffma编码
3.计算信源的信息熵、平均码长以及编码效率
三、实验原理
1.Huffman编码按信源符号出现的概率而编码,其平均码长最短,所以是最优码。

2.无失真信源编码定理:
对于熵为H(X)的离散无记忆的平稳信源,必存在一种无失真编码,使每
符号的平均码长满足不等式:
()()
1 log log
H S H S
L
r r
≤<+
3.二元Huffman编码:若将编码设计为长度不等的二进制编码,即让待传字符串中出现概率大的字符采用尽可能短的码字,而把长的码字分配给概率小的信源符号。

构造方法如下:
(a)将信源概率分布按大小以递减次序排列;合并两概率最小者,得到新信源;并分配0/1符号。

(b)新信源若包含两个以上符号返回(a),否则到(c)。

(c)从最后一级向前按顺序写出每信源符号所对应的码字。

4.Huffman编码算法
Procedure HUFFMAN({si },{pi })
if q==2then
return s0 →0, s1 →1
else
降序排序{pi }
缩减信源:创建一个符号s ′以取代s q-2 ,s q -1 ,其概率为p ′=p q -2+ p q -1
递归调用Huffman 算法以得到s 0 ,…,s q -3 ,s ′的编码:w 0 ,…,w q-3 ,w ′,相
应的概率分布为p 0 ,…,p q -3 ,p ′
Returns 0 →w0,…,s q-3 →w q-3 ,s q-2 →w ′0,s q-1 →w ′1
end if
end procedure
四、 实验数据源
1.12345[]:0.40.20.20.10.1s s s s s X P ⎧⋅⎨⎩
:{0,1}X 2.123456[]:0.240.200.180.160.140.08
s s s s s s X P ⎧⋅⎨⎩ :{0,1}X 五、实验组织运行要求
以学生自主训练为主的开放模式组织教学
六、实验条件
1. 计算机
2. Windows XP
3. VC++ 6.0 (或MATLAB 6.0)
七、实验内容
1.实验源程序
2.流程框图
3.数据测试
(1)12345[]:0.40.20.20.10.1s s s s s X P ⎧⋅⎨⎩
:{0,1}X (2)123456[]:0.240.200.180.160.140.08s s s s s s X P ⎧⋅⎨⎩
:{0,1}X
八.实验心得
1.更深入了解了哈夫曼编码的构造原理
2.同本次试验学会了利用构造哈弗曼树实现哈夫曼编码
3.掌握用C 编程(或MATLAB )实现哈夫曼编码
实验源代码:
p=input('please input a number:')
n=length(p);
for i=1:n
if p(i)<0
fprintf('\n The probabilities in huffman can not less than 0!\n');
p=input('please input a number:')
end
end
if abs(sum(p)-1)>0
fprintf('\n The sum of the probabilities in huffman can more than 1!\n');
p=input('please input a number:')
end
q=p;
a=zeros(n-1,n);
for i=1:n-1
[q,l]=sort(q)
a(i,:)=[l(1:n-i+1),zeros(1,i-1)]
q=[q(1)+q(2),q(3:n),1];
end
for i=1:n-1
c(i,1:n*n)=blanks(n*n);
end
c(n-1,n)='0';
c(n-1,2*n)='1';
for i=2:n-1
c(n-i,1:n-1)=c(n-i+1,n*(find(a(n-i+1,:)==1))-(n-2):n*(find(a(n-i+1,:)==1)))
c(n-i,n)='0'
c(n-i,n+1:2*n-1)=c(n-i,1:n-1)
c(n-i,2*n)='1'
for j=1:i-1
c(n-i,(j+1)*n+1:(j+2)*n)=c(n-i+1,n*(find(a(n-i+1,:)==j+1)-1)+1:n*find(a(n-i+1,:)==j
+1)) end
end
for i=1:n
h(i,1:n)=c(1,n*(find(a(1,:)==i)-1)+1:find(a(1,:)==i)*n)
ll(i)=length(find(abs(h(i,:))~=32))
end
l=sum(p.*ll);
fprintf('\n huffman code:\n');
h
hh=sum(p.*(-log2(p)));
fprintf('\n the huffman effciency:\n');
t=hh/l
1.12345[]:0.40.20.20.10.1
s s s s s X P ⎧⋅⎨
⎩ :{0,1}X ll =
1 3
2 4 4
huffman code:
h =
111
10
1100
1101
the huffman effciency:
t = //编码效率
0.9645
hh = //信源的熵
2.1219
2.123456[]:0.240.200.180.160.140.08
s s s s s s X P ⎧⋅⎨⎩ :{0,1}X ll =
2 2
3 3 3 3 huffman code:
h =
10
00
111
110
011
010
the huffman effciency:
t = // 编码效率
0.9826
hh = //信源的熵
2.5155。

相关文档
最新文档