信源编码实验报告

合集下载

实验三 信源编码实验

实验三 信源编码实验

实验三信源编码实验一、实验目的:1、掌握哈夫曼编码的Matlab实现方法。

2、掌握VC++读取信源数据的方法。

3、运行编译好的霍夫曼编码、算术编码、游程编码编码程序,比较霍夫曼编码、算术编码、游程编码编码的编码效果二、实验内容与步骤1、Huffman编码实验1)编写计算信息熵的M文件参考程序:function h=entropy(p)%H=ENTROPY(P)返回概率矢% 量P的熵函数if length (find(p<0))~=0error('Not a prob.vector,negative component(s)')endif abs (sum(p)-1)>10e-10error ('Not a prob.vector,components do not add up to 1') endh=sum(-p.*log2(p));求信源X=[x1,x2,…,x9],其相应的概率为p=[0.2,0.15,0.13,0.12,0.1,0.09,0.08,0.07,0.06];利用编写的程序计算信息熵,并记录数值。

2)编写程序实现Huffman编码编写实现Huffman编码的M文件,编译后运行,验证程序的正确性并记录编码结果。

参考程序:function [h,l]=huffman(p);%HUFFMAN 哈夫曼编码生成器% [h,l]=huffman(p),返回哈夫曼编码矩阵H及码字长度if length (find (p<0))~=0,erro('Not a prob.vector,negative component(s)')endif abs(sum(p)-1)>10e-10,error('Not a prob.vector,components do not add up to 1') endn=length(p);q=p;m=zeros(n-1,n);for i=1:n-1[q,l]=sort(q);m(i,:)=[l(1:n-i+1),zeros(1,i-1)];q=[q(1)+q(2),q(3:n),1];endfor i=1:n-1c(i,:)=blanks(n*n);endc(n-1,n)='0';c(n-1,2*n)='1';for i=2:n-1c(n-i,1:n-1)=c(n-i+1,n*(find(m(n-i+1,:)==1))-(n-2):n*(fi nd(m(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-1c(n-i,(j+1)*n+1:(j+2)*n)=c(n-i+1,n*(find(m(n-i+1,:)==j+1 )-1)+1:n*find(m(n-i+1,:)==j+1));endendfor i=1:nh(i,1:n)=c(1,n*(find(m(1,:)==i)-1)+1:find(m(1,:)==i)*n); ll(i)=length(find(abs(h(i,:))~=32));endl=sum(p.*ll);在命令行后输入》p=[0.1 0.3 0.05 0.09 0.21 0.25];》[H,l]=huffman(p)记录运行结果,并说明编码结果是否正确,计算编码效率。

通信原理编码实验报告

通信原理编码实验报告

大连理工大学语音信号A律编码解码报告课程名称:通信原理学院(系):电信专业:通信工程班级:1101学号:201181227 201181145学生姓名:殷青张非凡2014年 4 月17 日一.实验原理1.1总体框图1.2 低通滤波器信道中所用的音频信号频率范围为300~3400hz,因此,我们需要对获得的音频信号滤波,使用低通滤波器。

1.3 8k重采样信道中的带宽为8khz,因此,我们需要对获得的音频信号进行重采样,以获得8khz的信号。

1.4抽样信号的非均匀量化编码(13折线)为了改善小信号时的信号量噪比,采用非均匀量化,量化间隔随信号采样值的不同而变化,信号抽样值小时,量化间隔也小;信号抽样值大时,量化间隔也大,实际用13折线法近似逼近A律压缩来进行非均匀量化。

如下图所示:语音信号中通常采用8位的PCM编码就能保证满意的通信质量。

8bits的安排:极性码:第一位;段落码:第二至四位,代表13折线中的8个段落;段内码:第五至八位,代表每一段落内的16个均匀划分的量化间隔。

段落码和段内码的编码规则如下表所示:二.实验内容2.1语音信号的获取。

我们用电脑上的录音机录了一段“早上好,我是***”的录音。

并用软件“格式工厂”将其转成wav格式。

原始信号波形图如下。

代码:figure;[x0,fs0,bits0]=wavread('DSP2.wav');plot(x0);xlabel('t'),ylabel('幅值');title('原始信号波形');2.2信号处理——低通滤波器&8k重采样2.2.1低通滤波:设计思想:利用窗函数FIR函数,将语音信号的高频成分滤除,即达到低通滤波的目的。

低通滤波器的频响特性曲线如下图:2.2.2重采样:设计思想:wav文件的抽样频率已经是44khz,要用8khz重采样,而从44k到8k,由于44不能被8整点采样,造成可能的语音信号的缺失,因此,我们先用插0法将44khz的信号扩展成88khz的信号,再对88khz信号每11点抽一个值,这样,8k重采样基本完成。

信源编码的实验报告

信源编码的实验报告

一、实验目的1. 理解信源编码的基本原理和过程。

2. 掌握几种常见的信源编码方法,如哈夫曼编码、算术编码等。

3. 分析不同信源编码方法的编码效率。

4. 培养动手实践能力和分析问题、解决问题的能力。

二、实验环境1. 操作系统:Windows 102. 编程语言:Python3.73. 实验工具:PyCharm IDE三、实验内容1. 哈夫曼编码2. 算术编码四、实验步骤1. 实验一:哈夫曼编码(1)读取信源数据,统计每个字符出现的频率。

(2)根据字符频率构建哈夫曼树,生成哈夫曼编码表。

(3)根据哈夫曼编码表对信源数据进行编码。

(4)计算编码后的数据长度,并与原始数据长度进行比较,分析编码效率。

2. 实验二:算术编码(1)读取信源数据,统计每个字符出现的频率。

(2)根据字符频率构建概率分布表。

(3)根据概率分布表对信源数据进行算术编码。

(4)计算编码后的数据长度,并与原始数据长度进行比较,分析编码效率。

五、实验结果与分析1. 实验一:哈夫曼编码(1)信源数据:{a, b, c, d, e},频率分别为{4, 2, 2, 1, 1}。

(2)哈夫曼编码表:a: 0b: 10c: 110d: 1110e: 1111(3)编码后的数据长度:4a + 2b + 2c + 1d + 1e = 4 + 2 + 2 + 1 + 1 = 10(4)编码效率:编码后的数据长度为10,原始数据长度为8,编码效率为10/8 = 1.25。

2. 实验二:算术编码(1)信源数据:{a, b, c, d, e},频率分别为{4, 2, 2, 1, 1}。

(2)概率分布表:a: 0.4b: 0.2c: 0.2d: 0.1e: 0.1(3)编码后的数据长度:2a + 2b + 2c + 1d + 1e = 2 + 2 + 2 + 1 + 1 = 8(4)编码效率:编码后的数据长度为8,原始数据长度为8,编码效率为8/8 = 1。

六、实验总结1. 哈夫曼编码和算术编码是两种常见的信源编码方法,具有较好的编码效率。

信息论与编码实验2-实验报告

信息论与编码实验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)汉明码能够成功检测并纠正大部分错误,错误纠正成功率较高,表明其在提高信息传输可靠性方面具有较好的性能。

信源编码硬件实验报告

信源编码硬件实验报告

1. 了解信源编码的基本原理和重要性;2. 掌握霍夫曼编码和算术编码的硬件实现方法;3. 分析信源编码在实际应用中的性能和优势;4. 通过实验,提高动手能力和理论联系实际的能力。

二、实验原理信源编码是一种将信源信息进行压缩的过程,其目的是减小数据传输和存储过程中的数据量,提高传输效率。

信源编码主要有两种方法:霍夫曼编码和算术编码。

1. 霍夫曼编码:根据信源中各个符号出现的概率,构建一棵霍夫曼树,将出现概率高的符号赋予较短的码字,出现概率低的符号赋予较长的码字。

霍夫曼编码具有无失真编码的特点,编码效率较高。

2. 算术编码:将信源中的符号按照一定的概率进行编码,码字长度不固定。

算术编码具有无失真编码的特点,编码效率较高,但实现较为复杂。

三、实验环境1. 硬件环境:FPGA开发板、信号发生器、示波器、数字存储示波器等;2. 软件环境:Quartus II、MATLAB、Simulink等。

四、实验内容1. 霍夫曼编码硬件实现(1)设计霍夫曼编码器:根据信源概率分布构建霍夫曼树,生成码字映射表;(2)输入信源数据,通过霍夫曼编码器进行编码;(3)输出编码后的码字,并验证码字长度是否符合霍夫曼编码规则。

2. 算术编码硬件实现(1)设计算术编码器:根据信源概率分布,生成码字映射表;(2)输入信源数据,通过算术编码器进行编码;(3)输出编码后的码字,并验证码字长度是否符合算术编码规则。

1. 根据信源概率分布,设计霍夫曼编码器和算术编码器;2. 在FPGA开发板上进行硬件编程,实现信源编码算法;3. 使用信号发生器产生信源数据,通过示波器观察编码后的码字;4. 使用数字存储示波器记录编码后的码字,分析编码效率;5. 对比霍夫曼编码和算术编码的编码效率,分析两种编码方法的优缺点。

六、实验结果与分析1. 霍夫曼编码:通过实验,验证了霍夫曼编码器能够根据信源概率分布生成码字映射表,编码后的码字长度符合霍夫曼编码规则。

编码理论实验报告实验二信源编码——霍夫曼编码

编码理论实验报告实验二信源编码——霍夫曼编码

实验名称 实验二 信源编码--------霍夫曼编码一、 实验目的1. 掌握信息熵的定义、性质和计算;2. 掌握平均码字长度和编码效率的计算;3. 掌握霍夫曼编码的原理;4. 熟练掌握二进制霍夫曼码的编码步骤;5. 正确使用C 语言实现霍夫曼编码。

二、实验内容1. 熟练画出霍夫曼编码图, 正确求出字符串的二进制霍夫曼编码;2. 用C 语言正确编程,实现霍夫曼编码、解码,并在Visua.C++环境中验证。

三、 实验原理1. 霍夫曼编码的基本原理按照概率大小顺序排列信源符号, 并设法按逆顺序分配码字字长, 使编码的码字为可辨识的。

2. 平均码长: L=∑p(si)*l. (单位为: 码符号/信源符号)其中, p(si)为信源si 在q 个信源中出现的概率, li 为信源si 的二进制霍夫曼编码。

3. 信息熵: H(S)=.∑p(si.*log.p(si. (单位为: 比特/信源符号) 其中, p(si)为信源si 在q 个信源中出现的概率。

4. 编码效率: η.H(S).L其中, H(S)为信息熵, L 为平均码长。

四、 实验步骤:1. 将q 个信源符号按概率分布的大小,以递减次序排列起来,设 )()()(21q x p x p x p ≥≥≥2. 用“0”和“1”码符号分别代表概率最小的两个信源符号, 并将这两个概率最小的符号合并成一个符号, 合并的符号概率为两个符号概率之和, 从而得到只包含q-1个符号的新信源, 称为缩减信源.3. 把缩减信源的符号仍旧按概率大小以递减次序排列, 再将其概率最小的两个信源符号分别用“0”和“1”表示, 并将其合并成一个符号, 概率为两符号概率之和, 这样又形成....个符号的缩减信源。

4. 依此继续下去,直至信源只剩下两个符号为止。

将这最后两个信源符号分别用“0”和“1”表示。

5. 然后从最后一级缩减信源开始,向前返回,就得出各信源符号所对应的码符号序列,即对应的码字。

信源编码实验

信源编码实验

实验一信源与信宿基本通信实验一、实验目的1、学会实际中的信源与信宿的常用形式。

2、了解ARM以及ARMST2410模块的原理,以及基于ARM的Windows CE 操作系统的使用方法,并学会在该系统上进行简单的通信实验。

3、了解键盘模块的原理与使用方法。

二、实验设备1、“现代通信技术综合实验实训系统” 实验箱一台。

2、20MHZ示波器一台。

3、实验模块:ARM模块与基于ARM的液晶显示模块,或者键盘模块与基于键盘的液晶显示模块(用户可以根据不同的配置模块做不同的实验,以后情况类似不再赘述)。

三、实验原理在本实验箱的设计中,不管是ARM模块与基于ARM的液晶显示模块,还是键盘与基于键盘的液晶显示模块均采用异步串口通信模式。

RS232串口是标准的异步通信,其发送接口数据由起始位、数据位、校验位和停止位构成一帧,起始位为低电平(1BIT),用来通知接收端新帧的开始。

在不传送数据时,起始位保持高电平。

而接收接口不断检测线路的状态,若连续为高电平后又检测到一个低电平,就准备接收新的帧。

要正确实现RS232串口的通信,必须设置正确的传输速率,收发双方的波特率一定要相同,标准的波特率如表1-1所示。

表1-1 RS232串口标准的波特率序号波特率1 1102 3003 12004 24005 48006 96007 192008 384009 5760010 11520011 23040012 46080013 921600此外,RS232的标准接口9针和25针两种,其控制信号的定义见表1-2所示。

表1-2 RS232控制信号定义DB9 DB25针号功能缩写针号功能缩写1 数据载波检测RXD8 数据载波检测RXD2 接收数据TXD3 接收数据TXD3 发送数据DTR 2 发送数据DTR4 数据终端准备RXD20 数据终端准备GND5 信号地GND7 信号地DSR6 数据设备准备好DSR 6 数据准备好RTS7 请求发送RTS 4 请求发送CTS8 清除发送CTS 5 清除发送DELL9 振铃指示DELL22 振铃指示RXD在本实验箱中键盘模块采用57600bit/s的异步串口通信速率,ARM模块则可以根据具体实验要求而选择不同的信息传输速率。

信源编译码实验报告

信源编译码实验报告

一、实验目的1. 理解信源编译码的基本概念和原理。

2. 掌握信源编译码的基本方法和技术。

3. 通过实验加深对信源编译码理论的理解和应用。

二、实验原理信源编译码是信息论中的一个重要分支,其主要目的是提高通信系统的效率和可靠性。

信源编译码的基本原理是将原始信源符号序列转换为具有更好统计特性的编码序列,从而降低编码后的序列长度,提高传输效率;同时,通过引入冗余信息,提高编码序列的纠错能力,提高通信系统的可靠性。

三、实验设备与软件1. 实验设备:计算机、编译码软件2. 实验软件:Matlab、C++等四、实验步骤1. 信源符号生成根据实验要求,生成信源符号序列。

例如,生成一个长度为1000的随机二进制序列。

2. 信源符号统计对生成的信源符号序列进行统计,计算每个符号的概率。

3. 信源编译码根据信源符号的概率分布,选择合适的编译码方法。

本实验采用霍夫曼编译码和香农-费诺编译码两种方法。

a. 霍夫曼编译码根据信源符号的概率分布,构建霍夫曼树,生成霍夫曼编码表。

将信源符号序列转换为霍夫曼编码序列。

b. 香农-费诺编译码根据信源符号的概率分布,构建香农-费诺树,生成香农-费诺编码表。

将信源符号序列转换为香农-费诺编码序列。

4. 编译码性能分析对编译码后的序列进行性能分析,包括编码效率、纠错能力等。

5. 结果对比对比霍夫曼编译码和香农-费诺编译码的性能,分析其优缺点。

五、实验结果与分析1. 信源符号统计假设生成的信源符号序列中,0和1的出现概率分别为0.6和0.4。

2. 编译码结果a. 霍夫曼编译码编码效率:0.6 1 + 0.4 2 = 1.2纠错能力:1位b. 香农-费诺编译码编码效率:0.6 1 + 0.4 2 = 1.2纠错能力:2位3. 结果对比霍夫曼编译码和香农-费诺编译码在编码效率上相同,但在纠错能力上有所不同。

香农-费诺编译码的纠错能力更强。

六、实验结论1. 信源编译码可以提高通信系统的效率和可靠性。

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

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

福建农林大学计算机与信息学院信息工程类信息论与编码课程实验报告实验项目列表实验名称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)。

图像信源的最主要客观统计特性是信源的幅度概率分布、自相关函数或功率谱。

关于图像信源的幅度概率分布,虽然人们已经作了大量的统计和分析,但尚未得出比较一致的结论。

至于图像的自相关函数,实验证明它大体上遵从负指数型分布。

其指数的衰减速度完全取决于图像类型与图像的细节结构。

实际上,由于信源的信号处理往往是在频域上进行,这时可以通过傅里叶变换将信源的自相关函数转换为功率谱密度。

功率谱密度也可以直接测试。

语声信号一般也可以用一个随机过程X(t)来表示。

语声信源的统计特性主要有语声的幅度概率分布、自相关函数、语声平均功率谱以及语声共振峰频率分布等。

实验结果表明语声的幅度概率分布可用伽玛(γ)分布或拉普拉斯分布来近似。

信息论与编码实验报告

信息论与编码实验报告

信息论与编码实验报告一、实验目的信息论与编码是一门涉及信息的度量、传输和处理的学科,通过实验,旨在深入理解信息论的基本概念和编码原理,掌握常见的编码方法及其性能评估,提高对信息处理和通信系统的分析与设计能力。

二、实验原理(一)信息论基础信息熵是信息论中用于度量信息量的重要概念。

对于一个离散随机变量 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|香农编码的平均码长较长,编码效率相对较低。

信源编码译码实验报告

信源编码译码实验报告

一、实验目的1. 理解信源编码与译码的基本原理和过程;2. 掌握哈夫曼编码和LZ编码的原理和方法;3. 通过实验验证信源编码和译码的效果,分析编码效率;4. 培养动手实践能力和分析问题的能力。

二、实验原理信源编码是将信源中的信息进行压缩的过程,目的是减小传输或存储信息所需的比特数。

信源编码分为熵编码和无损编码两大类。

熵编码基于信源符号的概率分布,无损编码则基于符号的统计特性。

1. 哈夫曼编码:根据信源符号的概率分布,构建哈夫曼树,为每个符号分配一个唯一的码字,实现信源的无损压缩。

2. LZ编码:基于符号的统计特性,将信源中的重复序列进行压缩,实现信源的无损压缩。

三、实验设备与软件1. 实验设备:计算机、编程软件(如MATLAB、Python等)2. 实验软件:MATLAB(或其他编程语言)四、实验内容与步骤1. 哈夫曼编码实验(1)选择实验文本,计算文本中每个字符的概率;(2)根据字符概率构建哈夫曼树;(3)根据哈夫曼树为每个字符分配码字;(4)对文本进行哈夫曼编码,得到编码后的文本;(5)对编码后的文本进行译码,验证译码效果。

2. LZ编码实验(1)选择实验文本,分析文本中的重复序列;(2)根据重复序列的长度和位置,构建LZ编码字典;(3)对文本进行LZ编码,得到编码后的文本;(4)对编码后的文本进行译码,验证译码效果。

五、实验结果与分析1. 哈夫曼编码实验结果(1)实验文本:某篇新闻文章,字符总数为10000;(2)字符概率分布:大部分字符出现概率较低,少数字符出现概率较高;(3)编码效率:编码后的文本长度为原始文本长度的60%;(4)译码效果:译码后的文本与原始文本完全一致。

2. LZ编码实验结果(1)实验文本:某篇新闻文章,字符总数为10000;(2)重复序列分析:文本中存在大量重复序列,可压缩性较高;(3)编码效率:编码后的文本长度为原始文本长度的50%;(4)译码效果:译码后的文本与原始文本完全一致。

信息论与编码实验报告

信息论与编码实验报告

信息论与编码实验报告一、实验目的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.压缩效果:计算了不同编码方法的码率,比较了压缩效果。

3.传输结果:模拟信道传输后的数据,对数据进行解码,还原原始信源。

4.传输质量:计算了误码率和信噪比,分析了不同编码方法的传输质量。

六、实验总结通过本次实验,我深刻理解了信息论与编码的基本概念和原理,并掌握了信息论与编码实验的实验方法和实验技能。

在实验过程中,我遇到了一些困难,比如对编码方法的理解和实验数据的处理。

霍夫曼信源编码实验报告

霍夫曼信源编码实验报告

实验1:霍夫曼信源编码综合设计【实验目的】通过本专题设计,掌握霍夫曼编码的原理和实现方法,并熟悉利用C语言进行程序设计,对典型的文本数据和图像数据进行霍夫曼编解码。

【预备知识】1、熵的概念,霍夫曼编码原则2、数据结构和算法设计3、C(或C++)编程语言【实验环境】1、设备:计算机一台2、软件:C程序编译器【设计要求】根据霍夫曼编码原则,利用C语言设计并实现霍夫曼编码和解码程序,要求能够对给出的典型文本数据和图像数据进行霍夫曼编解码,并计算相应的熵和压缩比。

【实验原理】Huffman编码属于熵编码的方法之一,是根据信源符号出现概率的分布特性而进行的压缩编码。

Huffman编码的主要思想是:出现概率大的符号用长的码字表示;反之,出现概率小的符号用短的码字表示。

Huffman编码过程描述:1. 初始化:将信源符号按出现频率进行递增顺序排列,输入集合L;2. 重复如下操作直至L中只有1个节点:(a) 从L中取得两个具有最低频率的节点,为它们创建一个父节点;(b) 将它们的频率和赋给父结点,并将其插入L;3. 进行编码:从根节点开始,左子节点赋予1,右节点赋予0,直到叶子节点。

【基本定义】1. 熵和平均编码符号长度熵是信息量的度量方法,它表示某一事件出现的概率越小,则该事件包含的信息就越多。

根据Shannon 理论,信源S 的熵定义为2()log (1/)i i i H s p p =∑,其中i p 是符号i S 在S 中出现的概率;2log (1/)i p 表示包含在i S 中的信息量,也就是编码i S 所需要的位数假设符号i S 编码后长度为l i (i=1,…,n),则平均编码符号长度L 为:i i i L p l =∑ 2. 压缩比设原始字符串的总长度为L orig 位,编码后的总长度为L coded 位,则压缩比R 为 R = (L orig - L coded )/ L orig【例子】有一幅40个象素组成的灰度图像,灰度共有5级,分别用符号A 、B 、C 、D 和E 表示,40个象素中出现灰度A 的象素数有15个,出现灰度B 的象素数有7个,出现灰度C 的象素数有7个等等,如表1所示。

信源编码实验报告

信源编码实验报告

一、实验目的1. 理解信源编码的意义;2. 掌握信源编码的基本原理和方法;3. 熟悉MATLAB编程环境,实现信源编码算法;4. 分析信源编码的效果,比较不同编码方法的优劣。

二、实验原理信源编码是将信源的信息转换成适合传输或存储的信号的过程。

信源编码的目的是提高信息传输的效率,降低传输成本,减少存储空间。

信源编码分为无损编码和有损编码两大类。

1. 无损编码:在编码过程中不丢失任何信息,解码后能够完全恢复原始数据。

常见的无损编码方法有哈夫曼编码、算术编码等。

2. 有损编码:在编码过程中会丢失部分信息,但解码后能够恢复原始数据的近似值。

常见的有损编码方法有LZ编码、JPEG编码等。

三、实验环境1. 计算机:CPU2.0GHz以上,内存2GB以上;2. 编程软件:MATLAB 7.0以上版本;3. 实验数据:一组文本数据。

四、实验内容1. 哈夫曼编码实验(1)编写MATLAB程序,实现哈夫曼编码算法;(2)对实验数据进行分析,计算信源熵、编码效率等指标;(3)比较哈夫曼编码与其他编码方法的优劣。

2. 算术编码实验(1)编写MATLAB程序,实现算术编码算法;(2)对实验数据进行分析,计算信源熵、编码效率等指标;(3)比较算术编码与其他编码方法的优劣。

3. LZ编码实验(1)编写MATLAB程序,实现LZ编码算法;(2)对实验数据进行分析,计算信源熵、编码效率等指标;(3)比较LZ编码与其他编码方法的优劣。

五、实验步骤1. 哈夫曼编码实验(1)读取实验数据,统计每个字符出现的频率;(2)根据字符频率,构建哈夫曼树,生成哈夫曼编码表;(3)对实验数据进行哈夫曼编码,计算编码后的数据长度;(4)对编码后的数据进行解码,验证解码结果是否正确。

2. 算术编码实验(1)读取实验数据,统计每个字符出现的频率;(2)根据字符频率,构建概率分布表;(3)编写算术编码程序,对实验数据进行编码;(4)编写算术解码程序,对编码后的数据进行解码;(5)比较编码前后的数据长度,计算编码效率。

信源编码-PCM非均匀量化与编码实验报告(完成版)

信源编码-PCM非均匀量化与编码实验报告(完成版)

PCM非均匀量化与编码实验报告一、实验目的(1). 了解模拟信号数字化的三个基本步骤:抽样、量化、编码。

(2). 抽样频率、量化级数对信号数字化的影响.(3). 加深对非均匀量化的理解。

(4). 理解信息速率与抽样量化编码的关系。

(5). 掌握MATLAB语言的函数调用,提高编程编程能力,,为之后的学习做准备。

二、实验内容:对模拟信号进行抽样、量化并进行13折线PCM编码,运用Matlab软件实现PCM编码全过程。

三、实验步骤与结果1、抽样:产生一个周期的正弦波x(t)=1024cos(2πt)mv ,分别以4HZ和32Hz的频率进行采样用plot函数在绘出原信号和抽样后的信号序列(可用stem函数)。

(4Hz保存为图1,32Hz保存为图2)function sample(f)t=0:1/f:1;y=1024*cos(2*pi*t);stem(t,y,'b','filled');hold on;T=1:0.01:1;Y=1024*cos(2*pi*T);plot(T,Y,'r');2、均匀量化:对以32Hz的抽样频率进行抽样后的信号的绝对值分别进行8级和2048级均匀量化。

在同一张图上绘出正弦波波形(用plot函数)、量化图(用stairs函数)。

(保存为图3)function y=Even(n,m)t=0:1/m:1;x=1024*cos(2*pi*t);a=-1024:2048/n:1024;for i=1:m+1for j=1:nif (x(i)>=a(j)&x(i)<=a(j+1))y(i)=(a(j)+a(j+1))/2;endendendy=y/max(y);if(n==8)stairs(t,y,'b');endif(n==2048)stairs(t,y,'k')endaxis([0 1 -1.5 1.5]);hold on;T=0:0.01:1;Y=1024*cos(2*pi*T);Y=Y/max(Y);plot(T,Y,'r');3、PCM编码对所有的抽样值对应的2048级均匀量化值进行13折线编码,输出相应的PCM编码,并对总的编码比特数进行计数。

信源编码实验

信源编码实验

实验2 信源编码实验一、实验目的● 掌握香农、霍夫曼编码的方法和手段。

● 通过信源编译码,理解香农第一定理。

二、实验原理 设离散无记忆信源12112,,,,,,()1(),(),,(),,()()=⎧⎫⎡⎤==⎨⎬⎢⎥⎣⎦⎩⎭∑ni n ii i n x x x x X p x p x p x p x p x P X二进制香农码的编码步骤如下:⏹ 将信源符号按概率从大到小的顺序排列,为方便起见,令 p (x 1)≥ p (x 2)≥…≥ p (x n )⏹ 令p (x 0)=0,用p a (x j ),j =i +1表示第i 个码字的累加概率,则:10()(),1,2,,-===∑j a j i i p x p x j n⏹ 确定满足下列不等式的整数k i ,并令k i 为第i 个码字的长度 -log 2 p (x n )≤k i <- log 2 p (x n )+1⏹ 将p a (x j ) 用二进制表示,并取小数点后k i 位作为符号x i 的编码。

霍夫曼编码步骤如下:⏹ 将信源符号按概率从大到小的顺序排列,令p (x 1)≥ p (x 2)≥…≥ p (x n )⏹ 给两个概率最小的信源符号p (x n -1)和p (x n )各分配一个码位“0”和“1”,将这两个信源符号合并成一个新符号,并用这两个最小的概率之和作为新符号的概率,结果得到一个只包含(n -1)个信源符号的新信源。

称为信源的第一次缩减信源,用S 1表示。

⏹ 将缩减信源S 1的符号仍按概率从大到小顺序排列,重复步骤2,得到只含(n -2)个符号的缩减信源S 2。

⏹ 重复上述步骤,直至缩减信源只剩两个符号为止,此时所剩两个符号的概率之和必为1。

然后从最后一级缩减信源开始,依编码路径向前返回,就得到各信源符号所对应的码字。

三、实验内容1、有一单符号离散无记忆信源123456,,,,,()0.250.250.200.150.100.05⎡⎤⎧⎫=⎨⎬⎢⎥⎣⎦⎩⎭X x x x x x x P X对该信源编二进制香农码。

《信息论与信源编码》实验报告

《信息论与信源编码》实验报告

《信息论与信源编码》实验报告1、实验目的(1) 理解信源编码的基本原理;(2) 熟练掌握Huffman编码的方法;(3) 理解无失真信源编码和限失真编码方法在实际图像信源编码应用中的差异。

2、实验设备与软件(1) PC计算机系统(2) VC++6.0语言编程环境(3) 基于VC++6.0的图像处理实验基本程序框架imageprocessing_S(4) 常用图像浏览编辑软件Acdsee和数据压缩软件winrar。

(5) 实验所需要的bmp格式图像(灰度图象若干幅)3、实验内容与步骤(1) 针对“图像1.bmp”、“图像2.bmp”和“图像3.bmp”进行灰度频率统计(即计算图像灰度直方图),在此基础上添加函数代码构造Huffman码表,针对图像数据进行Huffman编码,观察和分析不同图像信源的编码效率和压缩比。

(2) 利用图像处理软件Acdsee将“图像1.bmp”、“图像2.bmp”和“图像3.bmp”转换为质量因子为10、50、90的JPG格式图像(共生成9幅JPG图像),比较图像格式转换前后数据量的差异,比较不同品质因素对图像质量的影响;(3) 数据压缩软件winrar将“图像1.bmp”、“图像2.bmp”和“图像3.bmp”分别生成压缩包文件,观察和分析压缩前后数据量的差异;(4) 针对任意一幅图像,比较原始BMP图像数据量、Huffman编码后的数据量(不含码表)、品质因素分别为10、50、90时的JPG文件数据量和rar压缩包的数据量,分析不同编码方案下图像数据量变化的原因。

4、实验结果及分析(1)在VC环境下,添加代码构造Huffman编码表,对比试验结果如下:a.图像1.bmp:图1 图像1.bmp图像的像素点个数共640×480个,原图像大小为301KB,图像信息熵为5.92bit/符号,通过Huffman编码后,其编码后的平均码长为5.960码元/信源符号,编码效率为99.468%,编码后的图像大小为228.871KB,压缩比为1.342。

信源编码实验

信源编码实验

霍夫曼编码的matlab实现一、实验目的。

利用哈夫曼编码进行通信可以大大提高信道的利用率,缩短信息传输的时间,降低传输成本。

本实验用Matlab语言编程实现霍夫曼(Huffman)编码。

二、实验原理。

霍夫曼(Huffman)编码算法是满足前缀条件的平均二进制码长最短的编-源输出符号,而将较短的编码码字分配给较大概率的信源输出。

算法是:在信源符号集合中,首先将两个最小概率的信源输出合并为新的输出,其概率是两个相应输出符号概率之和。

这一过程重复下去,直到只剩下一个合并输出为止,这个最后的合并输出符号的概率为1。

这样就得到了一张树图,从树根开始,将编码符号1 和0 分配在同一节点的任意两分支上,这一分配过程重复直到树叶。

从树根到树叶途经支路上的编码最后就构成了一组异前置码,就是霍夫曼编码输出。

离散无记忆信源:例如U u1 u2 u3 u4 u5P(U) = 0.4 0.2 0.2 0.1 0.1通过上表的对信源缩减合并过程,从而完成了对信源的霍夫曼编码。

三、实验步骤分为两步,首先是码树形成过程:对信源概率进行合并形成编码码树。

然后是码树回溯过程:在码树上分配编码码字并最终得到霍夫曼编码。

1、码树形成过程:将信源概率按照从小到大顺序排序并建立相应的位置索引。

然后按上述规则进行信源合并,再对信源进行排序并建立新的位置索引,直到合并结束。

在这一过程中每一次都把排序后的信源概率存入矩阵G中,位置索引存入矩阵Index中。

这样,由排序之后的概率矩阵G以及索引矩阵Index就可以恢复原概率矩阵P了,从而保证了回溯过程能够进行下去。

2、码树回溯过程:在码树上分配编码码字并最终得到Huffman 编码。

从索引矩阵M 的末行开始回溯。

(1) 在Index的末行2元素位置填入0和1。

(2) 根据该行索引1 位置指示,将索引1 位置的编码(‘1’)填入上一行的第一、第二元素位置,并在它们之后分别添加‘0’和‘1’。

(3) 将索引不为‘1’的位置的编码值(‘0’)填入上一行的相应位置(第3 列)。

信息论实验报告2信源编码

信息论实验报告2信源编码
1、香农编码Matlab源码
function [W,L,q]=shannon(p)
if (length(find(p<=0)) ~=0)
error('Not a prob.vector,negative component'); end
if (abs(sum(p)-1)>10e-10)
error('Not a prob.vector,component do not add up to 1'); end
n=length(P); %计算输入元素个数
p=P; mark=zeros(n-1,n);
% mark为n-1行、n列矩阵,用来记录每行最小两概率叠加后概率排列次序
% 1)确定概率大小值的排列,得到mark矩阵。
for i=1:n-1
[p,num]=sort(p); mark(i,:)=[num(1:n-i+1),zeros(1,i-1)];
s2='Shannon编码平均码字长度L:'; s3='Shannon编码的编码效率q:';
disp(s0);disp(s1),disp(B),disp(W);disp(s2),disp(L);disp(s3),disp(q);
function H=entropy(P,r)
if (length(find(P<=0))~=0) %判断是否符合概率分布条件
[c,k]=min(temp);
if (current_index<=k)
next_index=current_index; code_num=48;
next_P=current_P(1:k);
else
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

电子科技大学
实验报告
课程名称信息论与编码
实验名称信源编码
任课教师
姓名学号
时间2018 年11月28 日
一、实验目的和要求
1.掌握对信源变长编码定理的理解;
2.掌握信源编码技术,如香农编码,费诺编码,哈夫曼编码或其他无失真信源
编码技术;
3.对英文小说“Game of Thrones”中出现的26个英文字母和空格符号(一共
27个符号)进行信源编码。

4.至少对前两章“Prologue”和“Bran”中出现的符号进行统计。

5.任意选择一种编程平台,C++,Java,Python,Matlab等等。

6.运行程序后,能够在屏幕上显示每一个符号对应的码字,原始信源的熵,平
均码字长度,码字长度的方差,以及编码效率。

二、 实验内容
1. 对英文小说“Game of Thrones ”中出现的26个英文字母和空格符号(一共27个符号)进行信源编码。

2. 在屏幕上显示每一个符号对应的码字,原始信源的熵,平均码字长度,码字长度的方差,以及编码效率。

三、 实验原理
1. 采用哈夫曼编码完成实验要求
2.哈夫曼(Haveman )编码算法是满足前缀条件的平均二进制码长最短的编-源输出符号,而将较短的编码码字分配给较大概率的信源输出。

算法是:在信源符号集合中,首先将两个最小概率的信源输出合并为新的输出,其概率是两个相应输出符号概率之和。

这一过程重复下去,直到只剩下一个合并输出为止,这个最后的合并输出符号的概率为1。

这样就得到了一张树图,从树根开始,将编码符号1 和0 分配在同一节点的任意两分支上,这一分配过程重复直到树叶。

从树根到树叶途经支路上的编码最后就构成了一组异前置码,就是霍夫曼编码输出。

离散无记忆信源:
例如
Uu 1u 2u 3u 4u 5
P (U ) = 0.4 0.2 0.2 0.1 0.1
通过上表的对信源缩减合并过程,从而完成了对信源的霍夫曼码。

四、实验步骤
1.主函数为sourcecoding,用fopen打开text文本,并用fread读取文本,得到
ASCII码向量seq;
2.利用自己编写statistic.m函数统计seq向量中出现的符号和概率,并通过处理
得到所需向量seq2. statistic函数采用了对seq处理的三种形式。

形式一:仅保留大写字母和空格
形式二:保留大小写字母和空格
形式三:保留所有字符进行编码
在实验结论中也会展示这三种形式的编码结果。

3.调用哈夫曼编码函数Haveman.m,将序列seq2进行编码,计算信源熵、平均码
长、编码长度方差、编码效率、编码冗余度。

(核心代码较长,不作截图,具体见Haveman.m文件)
4.调用哈夫曼编码函数Haveman_encode.m,得到编码本text文本。

五、实验结果
1.仅保留大写字母和空格
2.保留大小写字母和空格
3.保留所有字符进行编码
六、实验总结
1.在不考虑符号间相关性的情况下,用哈夫曼编码编码效率高,冗余度较小。

2.通过这个课题,我对哈夫曼编码具体实现原理有了更深的理解,同时也能更
熟练运用MATLAB编程,对完成算法有了一个整体的把握。

相关文档
最新文档