信源编码实验报告
实验三 信源编码实验

实验三信源编码实验一、实验目的: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 的主要目的是深入理解和应用信息论与编码的相关知识,通过实际操作和数据分析,进一步掌握信源编码和信道编码的原理及方法,提高对信息传输效率和可靠性的认识。
二、实验原理(一)信源编码信源编码的目的是减少信源输出符号序列中的冗余度,提高符号的平均信息量。
常见的信源编码方法有香农编码、哈夫曼编码等。
香农编码的基本思想是根据符号出现的概率来分配码字长度,概率越大,码字越短。
哈夫曼编码则通过构建一棵最优二叉树,为出现概率较高的符号分配较短的编码,从而实现平均码长的最小化。
(二)信道编码信道编码用于增加信息传输的可靠性,通过在发送的信息中添加冗余信息,使得在接收端能够检测和纠正传输过程中产生的错误。
常见的信道编码有线性分组码,如汉明码等。
三、实验内容与步骤(一)信源编码实验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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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编程,对完成算法有了一个整体的把握。