香农编码实验报告

香农编码实验报告
香农编码实验报告

湖南大学

信息科学与工程学院

实验报告

实验名称香农编码

课程名称信息论与编码1、实验目的

(1)进一步熟悉Shannon 编码算法;

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

技术。

2、实验要求

(1)输入:信源符号个数q 、信源的概率分布p ;

(2)输出:每个信源符号对应的Shannon 编码的码字。

3、Shannon 编码算法 1:procedure SHANNON(q,{P i })

2: 降序排列{P i } 3: for i=1 q do 4: F(i s ) 5:i l 2[]log 1/()i p s

6:将累加概率F(i s )(十进制小数)变换成二进制小数。

7:取小数点后i l 个二进制数字作为第i 个消息的码字。

8:end for

9:end procedure

------------------------------------------------------------------------------------------------------------------

4、调试过程

1、fatal error C1083: Cannot open include file: 'unistd.h': No such file or directory fatal error C1083: Cannot open include file: 'values.h': No such file or directory 原因:unistd.h 和values.h 是Unix 操作系统下所使用的头文件

纠错:删去即可

2、error C2144: syntax error : missing ')' before type 'int'

error C2064: term does not evaluate to a function

原因:l_i(int *)calloc(n,sizeof(int)); l_i 后缺少赋值符号使之不能通过编译

纠错:添加上赋值符号

3、error C2018: unknown character '0xa1'

原因:有不能被识别的符号

纠错:在错误处将不能识别的符号改为符合C 语言规范的符号

4、error C2021: expected exponent value, not ' '

1

1()i k

k p s -=∑

原因:if(fabs(sum-1.0)>DELTA); 这一行中DELTA宏定义不正确纠错:# define DELTA0.000001

5、error C2143: syntax error : missing ';' before '}'

原因:少写了“;”号

纠错:在对应位置添加上“;”号

5、参考代码

# include

# include

# include

# include

# define DELTA0.000001/*精度*/

void sort(float*,int);/*排序*/

int main(void)

{

register int i,j;

int n; /*符号个数*/

int temp;/*中间变量*/

float *p_i; /*符号的概率*/

float *P_i; /*累加概率*/

int *l_i; /*码长*/

char * *C; /*码集合*/

/*用sum来检验数据,用p来缓存了中间数据*/

float sum,p;

/*输入符号数*/

fscanf(stdin,"%d",&n);

/*分配内存地址*/

p_i=(float *)calloc(n,sizeof(float));

P_i=(float *)calloc(n,sizeof(float));

l_i=(int *)calloc(n,sizeof(int));

/* 存储信道传输的概率*/

for(i=0;i

fscanf(stdin,"%f",&p_i[i]);

/*确认输入的数据*/

sum=0.0;

for(i=0;i

sum+=p_i[i];

if(fabs(sum-(1.0))>DELTA)

fprintf(stderr,"Invalid input data \n");

fprintf(stdout,"Starting…\n\n");

/*以降序排列概率*/

sort (p_i,n);

/*计算每个符号的码长*/

for(i=0;i

{

p=(float)(-(log(p_i[i])))/log(2.0);

l_i[i]=(int)ceil(p);

}

/*为码字分配内存地址*/

C=(char **)calloc(n,sizeof(char *));

for(i=0;i

{

C[i]=(char *)calloc(l_i[i]+1,sizeof(char));

C[i][0]='\0';

}

/*计算概率累加和*/

P_i[0]=0.0;

for(i=1;i

P_i[i]=P_i[i-1]+p_i[i-1];

/*将概率和转变为二进制编码*/

for(i=0;i

{

for(j=0;j

{

/*乘2后的整数部分即为这一位的二进制码元*/

P_i[i]=P_i[i]*2;

temp=(int)(P_i[i]);

P_i[i]=P_i[i]-temp;

/*整数部分大于0为1,等于0为0*/

if(temp==0)

C[i]=strcat(C[i],"0");

else

C[i]=strcat(C[i],"1");

}

}

/*显示编码结果*/

fprintf(stdout,"The output coding is :\n"); for(i=0;i

fprintf(stdout,"%s",C[i]);

fprintf(stdout,"\n\n");

/*释放内存空间*/

for(i=n-1;i>=0;i--)

free(C[i]);

free(C);

free(p_i);

free(P_i);

free(l_i);

exit(0);

}

/*冒泡排序法*/

void sort(float *k,int m)

{

int i=1;/*外层循环变量*/

int j=1;/*内层循环变量*/

int finish=0;/*结束标志*/

float temp;/*中间变量*/

while(i

{

finish=1;

for(j=0;j

{

/*将小的数后移*/

if(k[j]

{

temp=k[j];

k[j]=k[j+1];

k[j+1]=k[j];

finish=0;

}

i++;

}

}

}

6、调试验证:

程序结果:

7、实验总结

1949年香农在《有噪声时的通信》一文中提出了信道容量的概念和信道编码定理,为信道编码奠定了理论基础。无噪信道编码定理(又称香农第一定理)指出,码字的平均长度只能大于或等于信源的熵。有噪信道编码定理(又称香农第二定理)则是编码存在定理。它指出只要信息传输速率小于信道容量,就存在一类编码,使信息传输的错误概率可以任意小。随着计算技术和数字通信的发展,纠错编码和密码学得到迅速的发展。香农编码定理虽然指出了理想编码器的存在性,但是并没有给出实用码的结构及构造方法,编码理论正是为了解决这一问题而发展起来的科学理论。编码的目的是为了优化通信系统。

香农编码是码符号概率大的用短码表示,概率小的是用长码表示,程序中对概率排序,最后求得的码字就依次与排序后的符号概率对应。

数据结构 哈夫曼编码实验报告

实验报告 实验课名称:数据结构实验 实验名称:文件压缩问题 班级:20132012 学号:姓名:时间:2015-6-9 一、问题描述 哈夫曼编码是一种常用的数据压缩技术,对数据文件进行哈夫曼编码可大大缩短文件的传输长度,提高信道利用率及传输效率。要求采用哈夫曼编码原理,统计文本文件中字符出现的词频,以词频作为权值,对文件进行哈夫曼编码以达到压缩文件的目的,再用哈夫曼编码进行译码解压缩。 二、数据结构设计 首先定义一个结构体: struct head { unsigned char b; //记录字符 long count; //权重 int parent,lch,rch; //定义双亲,左孩子,右孩子 char bits[256]; //存放哈夫曼编码的数组 } header[512],tmp; //头部一要定设置至少512个,因为结 点最多可达256,所有结点数最多可 达511 三、算法设计 输入要压缩的文件读文件并计算字符频率根据字符的频率,利用Huffman 编码思想创建Huffman树由创建的Huffman树来决定字符对应的编码,进行文件的压缩解码压缩即根据Huffman树进行译码 设计流程图如图1.1所示。

图1.1 设计流程图 (1)压缩文件 输入一个待压缩的文本文件名称(可带路径)如:D:\lu\lu.txt 统计文本文件中各字符的个数作为权值,生成哈夫曼树;将文本文件利用哈夫曼树进行编码,生成压缩文件。压缩文件名称=文本文件名.COD 如:D:\lu\lu.COD 压缩文件内容=哈夫曼树的核心内容+编码序列 for(int i=0;i<256;i++) { header[i].count=0; //初始化权重 header[i].b=(unsigned char)i; //初始化字符 } ifstream infile(infilename,ios::in|ios::binary); while(infile.peek()!=EOF) { infile.read((char *)&temp,sizeof(unsigned char)); //读入一个字符 header[temp].count++; //统计对应结点字符权重 flength++; //统计文件长度 } infile.close(); //关闭文件 for(i=0;i<256-1;i++) //对结点进行冒泡排序,权重大的放在上面,编码时效率高 for(int j=0;j<256-1-i;j++) if(header[j].count

信息论实验报告-

信息论实验报告 学生: 班级: 学号:

实验一香农编码一、程序设计的流程图 二、程序清单 #include

#include #include using namespace std; void swap(double *x,double *y); int main() { int N; cout<<"输入信源个数"<>N; double S[N]; //注意变量在数组中的影响cout<<"输入信源概率"<>S[i]; for(int i=0;i1) { MM[i]+='1';

aa=tem-1; } else { MM[i]+='0'; aa=tem; } } } string BB[N]; for(int i=0;i

短时记忆视觉编码实验报告

姓名关瀚文学号222012306022011专业应用心理学年级2012级课程实验心理学实验时间2013.11.6同组人姓名洪万里单宏宇成绩 短时记忆视觉编码实验 关瀚文 (西南大学心理学部,重庆,400715) 摘要本实验以西南大学心理学部2012级应用班的44名同学作为被试,每名被试运用PsyKey 心理教学系统 3.1,“短时记忆视觉编码”实验程序,进行以减数法探究短时记忆的视觉编码试验108次,本实验旨在重复posner等人的字母实验,验证短时记忆的视觉编码,并学习减法反应时方法。最后的结果显示,短时记忆的视觉编码确实存在,posner关于短时记忆的视觉编码理论得到验证。 关键词短时记忆减法反应时视觉编码 1引言减数法是一种用减法方法将反应时分解成各个成分,然后来分析信息加工过程的方法。减数法的反应时实验逻辑是如果一种作业包含另一种作业所没有的某个特定的心理过程,且除此过程之外二者在其他方面均相同,那么这两种反应时的差即为此心理过程所需的时间。 储存在短时记忆中的信息,传统的观点认为主要是语音听觉编码。这是根据短时记忆中产生的错误与正确信息之间存在着语音听觉上的联系而推测出来的。康拉德在记忆广度实验中观察到,回忆错误与正确反应之间有着语音上的联系。但是这个结论因为以拼音文字的英文字母做实验材料,因而其普遍性受到了质疑。但70年代波斯纳等人利用减法反应时基本范式,在其实验中清楚地表明,某些短时记忆信息可以有视觉编码和听觉编码两个连续的阶段,这是认知心理学史上的一个重大发现。莫雷的实验也表明,汉字的短时记忆以形状编码为主。对于绘画、脸和身体动作以及视觉观察事件所属范畴的短时记忆,倾向于用视觉编码的短时记忆,倾向于视觉编码和语义编码。现在一般认为,短时记忆信息存在感觉代码与语义代码,其中前者包括听觉代码与视觉编码;对于感觉编码的过程而言,视觉编码率先出现并保持一个短暂的瞬间,然后出现听觉编码。

游程编码实验报告

实验二游程编码 一、实验目的 1、掌握游程编码原理; 2、理解数据编码压缩和译码输出编码的实现。 二、实验要求 实现游程编码和译码的生成算法。 三、实验内容 输入一幅二值图像,先统计要压缩编码的文件中的字符字母出现的次数,按字符字母和空格出现的概率对其进行哈夫曼编码,然后读入要编码的文件,编码后存入另一个文件;接着再调出编码后的文件,并对其进行译码输出,最后存入另一个文件中。 四、实验原理 1、xx 树的定义: 假设有n 个权值,试构造一颗有n 个叶子节点的二叉树,每个叶子带权值为wi ,其中树带权路径最小的二叉树成为哈夫曼树或者最优二叉树; 2、xx 树的构造: weight为输入的频率数组,把其中的值赋给依次建立的HT Node对象中的data属性,即每一个HT Node对应一个输入的频率。然后根据data属性按从小到大顺序排序,每次从data取出两个最小和此次小的HT Node,将他们的data 相加,构造出新的HTNode作为他们的父节点,指针pare nt,leftchild,rightchild 赋相应值。在把这个新的节点插入最小堆。 按此步骤可以构造出一棵XX树。 通过已经构造出的哈夫曼树,自底向上,由频率节点开始向上寻找parent, 直到parent 为树的顶点为止。这样,根据每次向上搜索后,原节点为父节点的

左孩子还是右孩子,来记录 1 或0,这样,每个频率都会有一个01 编码与之唯一对应,并且任何编码没有前部分是同其他完整编码一样的。 五、实验程序 #include #include #define NUM 1000 char dat,flag,str[NUM],b[NUM]; printf("( 请输入待编码的字符串)\n\n"); printf(" 原字符串为: "); gets(str);// 输入待编码的字符串 flag=str[0];// 记下第一个字符值作为flag 游程编码的起始值 /************************ 编码部分**********************************************/ printf("\n 游程编码为: "); for(i=0;i

香浓编码实验报告

香农编码实验报告 姓名:徐以刚 学号:20094034 专业班级:信计09.1 学院:理信学院 一 、实验目的 1. 了解香农编码的基本原理及其特点; 2. 熟悉掌握香农编码的方法和步骤; 3. 掌握C 语言或者Matlab 编写香农编码的程序。 二、实验要求 对于给定的信源的概率分布,按照香农编码的方法进行计算机实现. 三、实验原理 给定某个信源符号的概率分布,通过以下的步骤进行香农编码 1.信源符号按概率从大到小排列 2. 对信源符号求累加概率,表达式: G i =G i-1+p(x i ) 3. 求自信息量,确定码字长度。自信息量I(x i )=-log(p(x i ));码字长度取大于等 于自信息量的最小整数。 4. 将累加概率用二进制表示,并取小数点后码字的长度的码 。 四、实验内容 离散无记忆信源符号S 的概率分布: S 1S 2S 3S 4S 5S 6S 7S P(S) = 0.20 0.19 0.18 0.17 0.15 0.10 0.01 对离散无记忆信源分布S 进行香农编码 1.画出程序设计的流程图

2.写出程序代码, N=input('N='); %输入信源符号的个数 s=0; l=0; H=0; for i=1:N p(i)=input('p='); %输入信源符号概率分布矢量,p(i)<1 s=s+p(i) H=H+(-p(i)*log2(p(i)));I(i)=-log2(p(i)); %计算信源信息熵end if abs(s-1)>0, error('不符合概率分布') end for i=1:N-1 for j=i+1:N if p(i)

霍夫曼树实验报告

实验二二叉树的遍历及霍夫曼编码 班级:计科1101班 学号:0909101605 姓名:杜茂鹏 2013年5月22日

一、实验目的 掌握二叉树的建立及遍历操作,霍夫曼编码基本操作及存储结构表示 二、实验内容 1. 系统要求包含以下功能 1)初始化:从终端读入字符集大小n,以及n个字符和n个权值(或者读入字符集和频度数据文件),建立哈夫曼树,并将哈夫曼树存入到文件HfmTree 中。 2)编码:利用已建好的哈夫曼树(如果不在内存中,则从文件中读入),从文件ToBeTran中读入原文,对原文进行编码,将编码后的结果存入文件CodeFile 中。 3)译码:利用已建好的哈夫曼树将文件CodeFile中的代码进行译码,结果存入文件TextFile中。 4)打印:打印输出哈夫曼树,显示ToBeTran, TextFile和CodeFile文件的内容。 三、实验要求 1.在上机前写出全部源程序; 2.能在机器上正确运行程序; 3.用户界面友好。 四、概要设计 1)首先动态分配数组存储霍夫曼树及存储霍夫曼编码表,然后从终端或文件读入霍夫曼树的字符变量及其频度,初始化建立霍夫曼树并将其写入文件HfmTree.txt中。 2)从指定的文件succe.txt中读入原文,利用已经编好的霍夫曼树对其编码,将编码结果写入文件Coding.txt保存。 3)利用已建好的哈夫曼树将文件Coding.txt中的代码进行译码,结果存入文件decoding.txt中。

五、测试数据: 2.原文内容“THIS IS MY PROGRAM” 六、详细设计 实验内容(原理、操作步骤、程序代码) //建立霍夫曼树,对原文进行编码、译码 #include #include #include #include typedef struct tree { char ch; int weight;//权值 int parent,lchild,rchild; }HTNode,*HuffmanTree;//动态分配数组存储霍夫曼树typedef char **HuffmanCode;//动态分配数组存储霍夫曼编码表void Select(HuffmanTree &HT,int* s1,int* s2,int n) { int j; int min1=10000; for(j=1;j<=n;j++) { if(HT[j].parent==0&&min1>HT[j].weight)

短时记忆的信息编码 实验报告

心理实验报告 1.题目 减法反应时-短时记忆的视觉编码 2.引言 R.Conrad(1964)的一项研究给被试视觉呈现字母,随后报告字母的实验结果表明,对于视觉呈现的字母,我们使用听觉编码而非视觉。而Posner等人(1969)的实验结果显示,被试对于不同字母对(Aa和AA)判断是否同一字母的反应时不同,这否定了对于视觉呈现的字母,我们只用听觉编码的观点。对于视觉编码和听觉编码的先后问题,现在普遍的观点是视觉编码在先。 根据R.Conrad的实验,研究者们还在探讨这样一个逻辑,如果一个作业包含另一个作业所没有的某个心理过程,而其它方面相同,则两个作业的反应时之差,即是这个心理过程所用的时间,也是这个心理过程存在的证据。 本实验研究作为一个验证性研究,为存在视觉编码提供证据之外,还将探讨在不同时间间隔下反应时差的差异的内部机理。 3.方法 3.1被试:心理系大三学生 3.2仪器材料:字母对AA、BB、Aa、Bb、AB、BA、Ab、Ba 3.3实验程序: 3.3.1:实验前被试阅读指导语,清楚不同判断的按键方式,尽量正确的判断,并尽快按键反应 3.3.2:第一次实验时,每对字母对随机出现6次,前12对时间间隔是0s,中间12对间隔0.5s,最后12对间隔2s。36次完毕后,被试休息30s。继续第二次实验,但这次时间间隔按0.5s-2s-0s进行;同样休息30s进行第三次实验,这次间隔按照2s-0s-5s进行。被试看到呈现的字母后,尽快正确判断字母是否相同,并尽快按相应的键。 4.结果 表a 各水平下被试平均正确反应时(ms) 间隔(ms) 音同形 同 音同形 异 音异 形异 0 561.59 707.00 777.95 500 519.05 681.79 734.54 2000 489.62 639.46 725.00 表b 各水平下被试平均正确率(%) 间隔 (ms) 音同形 同 音同形 异 音异 形异 0 97.86 91.88 90.38 500 98.08 92.95 89.53 2000 98.08 92.74 90.60 表a显示: 音同形同比音同形异、音异形异在各个间隔时间水平下的反应时均值都要小;(多因素方差分析) 每种音形水平在时间间隔上反应时存在显著差异(多因素方差分析) 表b显示: 音同形同比音同形异、音异形异在各个间隔水平下的正确率均值都要大。而同一音形水平下的各个时间间隔水平上正确率均值相差不大。

实验二 香农编码的计算与分析

实验二 香农编码的计算与分析 一、[实验目的] 1、理解香农第一定理指出平均码长与信源之间的关系。 2、加深理解香农编码具有的重要理论意义。 3、掌握Shannon 编码的原理。 4、掌握Shannon 编码的方法和步骤。 5、熟悉shannnon 编码的各种效率 二、[实验环境] windows XP,MATLAB 7 三、[实验原理] 香农第一定理: 设离散无记忆信源为 12 (1) (2)....()S s s sq P p s p s p sq ????=???????? 熵为H(S),其N 次扩展信源为 12 (1) (2)....()N q S p p p q P αααααα????=???????? 熵为H(S N )。码符号集X=(x1,x2,…,xr )。先对信源N S 进行编码,总可以 找到一种编码方法,构成惟一可以码,使S 中每个信源符号所需的平均码长满足: 1N L H S H S N N +>≥()()logr logr 当N →∞时 lim ()N r N L H S N →∞= N L 是平均码长 1 ()N q N i i i L p αλ==∑ i λ是i α对应的码字长度

四、[实验内容] 1、根据实验原理,设计shannon 编码方法,在给定 条件下,实现香农编码并算出编码效率。 2、请自己构造两个信源空间,根据求Shannon 编码结果说明其物理意义。 五、[实验过程] 每个实验项目包括:1)设计思路2)实验中出现的问题及解决方法; 要求: 1)有标准的实验报告 (10分) 2)程序设计和基本算法合理(30分) 3)实验仿真具备合理性(30分) 4)实验分析合理(20分) 5)能清晰的对实验中出现的问题进行分析并提出解决方案(10分) S P s1 s2 s3 s4 s5 s6 s7 0.01 0.17 0.19 0.10 0.15 0.18 0.2 =

哈夫曼树的实验报告1

一、需求分析 1、本演示程序实现Haffman编/译码器的作用,目的是为信息收发站提供一个编/译系统, 从而使信息收发站利用Haffman编码进行通讯,力求达到提高信道利用率,缩短时间,降低成本等目标。系统要实现的两个基本功能就是:①对需要传送的数据预先编码; ②对从接收端接收的数据进行译码; 2、本演示程序需要在终端上读入n个字符(字符型)及其权值(整形),用于建立Huffman 树,存储在文件hfmanTree.txt中;如果用户觉得不够清晰还可以打印以凹入表形式显示的Huffman树; 3、本演示程序根据建好的Huffman树,对文件的文本进行编码,结果存入文件CodeFile 中;然后利用建好的Huffman树将文件CodeFile中的代码进行译码,结果存入文件TextFile中;最后在屏幕上显示代码(每行50个),同时显示对CodeFile中代码翻译后的结果; 4、本演示程序将综合使用C++和C语言; 5、测试数据: (1)教材例6-2中数据:8个字符,概率分别是0.05,0.29,0.07,0.08,0.14,0.23,0.03, 0.11,可将其的权值看为5,29,7,8,14,23,3,11 (2)用下表给出的字符集和频度的实际统计数据建立Haffman树,并实现以下报文的编码和 一、概要设计 1、设定哈夫曼树的抽象数据类型定义 ADT Huffmantree{ 数据对象:D={a i| a i∈Charset,i=1,2,3,……n,n≥0} 数据关系:R1={< a i-1, a i >| a i-1, a i∈D, i=2,3,……n} 基本操作: Initialization(&HT,&HC,w,n,ch) 操作结果:根据n个字符及其它们的权值w[i],建立Huffman树HT,用字符数组ch[i]作为中间存储变量,最后字符编码存到HC中; Encodeing(n) 操作结果:根据建好的Huffman树,对文件进行编码,编码结果存入到文件CodeFile 中 Decodeing(HT,n) 操作结果:根据已经编译好的包含n个字符的Huffman树HT,将文件的代码进行翻译,结果存入文件TextFile中 } ADT Huffmantree

短时记忆视觉编码实验报告

姓名关瀚文学号222012306022011 专业应用心理学年级 2012级课程实验心理学实验时间2013.11.6 同组人姓名洪万里单宏宇成绩 短时记忆视觉编码实验 关瀚文 (西南大学心理学部,重庆,400715) 摘要本实验以西南大学心理学部2012级应用班的44名同学作为被试,每名被试运用PsyKey 心理教学系统 3.1,“短时记忆视觉编码”实验程序,进行以减数法探究短时记忆的视觉编码试 验108次,本实验旨在重复posner等人的字母实验,验证短时记忆的视觉编码,并学习减法反 应时方法。最后的结果显示,短时记忆的视觉编码确实存在,posner关于短时记忆的视觉编码 理论得到验证。 关键词短时记忆减法反应时视觉编码 1引言减数法是一种用减法方法将反应时分解成各个成分,然后来分析信息加工过程的方法。减数法的反应时实验逻辑是如果一种作业包含另一种作业所没有的某个特定的心理过程,且除此过程之外二者在其他方面均相同,那么这两种反应时的差即为此心理过程所需的时间。 储存在短时记忆中的信息,传统的观点认为主要是语音听觉编码。这是根据短时记忆中产生的错误与正确信息之间存在着语音听觉上的联系而推测出来的。康拉德在记忆广度实验中观察到,回忆错误与正确反应之间有着语音上的联系。但是这个结论因为以拼音文字的英文字母做实验材料,因而其普遍性受到了质疑。但70年代波斯纳等人利用减法反应时基本范式,在其实验中清楚地表明,某些短时记忆信息可以有视觉编码和听觉编码两个连续的阶段,这是认知心理学史上的一个重大发现。莫雷的实验也表明,汉字的短时记忆以形状编码为主。对于绘画、脸和身体动作以及视觉观察事件所属范畴的短时记忆,倾向于用视觉编码的短时记忆,倾向于视觉编码和语义编码。现在一般认为,短时记忆信息存在感觉代码与语义代码,其中前者包括听觉代码与视觉编码;对于感觉编码的过程而言,视觉编码率先出现并保持一个短暂的瞬间,然后出现听觉编码。

PCM编码 实验报告

实验二十三 时分复用与解复用实验 实验项目一 256K 时分复用帧信号观测 (1)帧同步码观测:用示波器连接复用输出,观测帧头的巴克码。 (2)帧内PN 序列信号观测:用示波器接复用输出,利用储存功能观测3个周期 中的第一时隙的信号。 实验项目二 256K 时分复用及解复用 (1)帧内PCM 编码信号观测:将PCM 信号输入DIN2,观测PCM 数据。以帧同 思考题:PN15序列的数据是如何分配到复用信号中的? 分析分时复用的实质,可知,在模拟传送时,一位用户的数据根据复用划分的时隙以一帧为周期,逐次将8位数据插入每个帧相同的时隙处。对于此次实验中的PN15序列,检测到帧同步信号的帧头时,便插入第一帧数据,在第二次检测到帧头时插入第二帧数据,以此类推,将信号分配到复用信号中,以达到提高信道利用率的目的。 对比观测实验出现的码元,发现为01110010,根据所学知识可知,这串码即为帧头的观测码。

步为触发分别观测PCM编码数据和复用输出的数据。 (2)解复用帧同步信号观测:PCM对正弦波进行编译码。观测复用输出与FSOUT, 观测帧同步上跳沿与帧同步信号的时序关系。 思考题:PCM数据是如何分配到复用信号中去的? 时分多路复用以时间作为信号分割的参量,将各路输入变为变为并行数据,然后按照给端口数据所在的时隙进行帧的拼接,完成一个完整的数据帧。而在本实验中,PCM 的数据输入到DIN2,将其插入到复用信号的第2个时隙,与其它3个时隙拼接为一帧,从而实现了PCM信号分配到复用信号中。 上图分别为PCM编码输入和复用输出的波形。仔细观察可知,对比复用输入信号,复用输出有2帧的延时,且在复用输出的第0时隙为帧头的巴克码,第1时隙没有数据,第2时隙有了数据的存放,即PCM复用编码时被插在了一帧的第2时隙中,在解复用时先寻找巴克码,再按照每一帧的数据存放的相应的时隙进行解复用,之后拼接起来,便实现了PCM的数据恢复。

实验一 香农编码和Huffman编码

实验一 香农编码和Huffman 编码 一、实验目的 进一步熟悉香农编码和Huffman 编码过程,掌握matlab 语言递归程序的设计和调试技术。 二、实验要求 1.已知信源符号个数和信源的概率分布,要求写出香农和Huffman 的代码,输出每个信源符号对应的香农和Huffman 编码的码字。 2.以一组信源码字为例,给出输出码字,并求出编码效率。 三、基本原理 ● 香农编码: 编码规则如下: 1.将信源消息符号按其出现的概率大小排列 1()p x ≥2()p x ≥···≥()n p x 2.确定满足下列不等式的整数码长Ki : 2l o g ()i p x -≤i K <2log ()i p x -+1 3.为了编成唯一可译码,计算第i 个消息的累加概率 Pi=1 1 ()i k k p x -=∑ 4.将累加概率Pi 变换成二进制数。 5.取Pi 二进数的小数点后Ki 位即为该消息符号的二进制码数。 ● Huffman 编码: 1.将n 个信源消息符号按其出现的概率大小依次排列, 1()p x ≥2()p x ≥···≥()n p x 2.取两个概率最小的字母分别配以0和1两码元,并将这两个概率相加作为一个新字母的概率,与未分配的二进符号的字母重新排队。 3.对重排后的两个概率最小符号重复步骤(2)的过程。 4.不断继续上述过程,直到最后两个符号配以0和1为止。 5.从最后一级开始,向前返回得到各个信源符号所对应的码元序列,即相应的码字。 四、实验报告内容 1.描述所用算法,给出代码。 2.与其他编码方式相比,香农和Huffman 编码各有何优缺点,其压缩效率如何?

减法反应时-短时记忆的视觉编码实验报告

减法反应时-短时记忆的视觉编码 记忆的加工水平 减法反应时实验 1、目的:检验短时记忆是否存在视觉编码 2、材料:4对字母:AA Aa BB Bb,装有Psykey心理教学系统的大学版的计算机,一号反应 键盘 3、过程: 给被试并排呈现两个字母,或同时呈现,或有一定间隔,让被试判断这两个字母是否相同并按键反应,记录反应时。 本实验所用字母对是AA(6次)、BB(6次)、Aa(6次)、Bb(6次)、AB(3次)、BA(3次)、Ab(3次)、Ba(3次),共出现36次,有三种呈现间隔:0s(即同时呈现)、50ms和100ms,采用如下拉丁方设计,即:第一次36张随机呈现,前12张间隔0s,中间12张间隔50s,最后12张间隔100ms;休息30s后再做36张,间隔时间按50ms→100ms→0s的顺序;第三次的36张则采用100ms→0s→50ms的顺序。 4、设计: 自变量:字母对的类型(AA BB Aa Bb)呈现时间的长短(0s 50ms 100ms) 因变量:判断的正确率以及辨别所需的时间 5、结果: =====结果数据===== ------------------------------------------------------------ 间隔音同形同音同形异音异形异 ------------------------------------------------------------ 0ms 650(100.00%) 716(100.00%) 768( 91.67%) 50ms 489(100.00%) 621(100.00%) 760(100.00%) 100ms 476(100.00%) 708(100.00%) 696( 91.67%) ------------------------------------------------------------

信息论与编码实验报告.

本科生实验报告 实验课程信息论与编码 学院名称信息科学与技术学院 专业名称通信工程 学生姓名 学生学号 指导教师谢振东 实验地点6C601 实验成绩 二〇一五年十一月二〇一五年十一月

实验一:香农(Shannon )编码 一、实验目的 掌握通过计算机实现香农编码的方法。 二、实验要求 对于给定的信源的概率分布,按照香农编码的方法进行计算机实现。 三、实验基本原理 给定某个信源符号的概率分布,通过以下的步骤进行香农编码 1、将信源消息符号按其出现的概率大小排列 )()()(21n x p x p x p ≥≥≥ 2、确定满足下列不等式的整数码长K i ; 1)(l o g )(l o g 22+-<≤-i i i x p K x p 3、为了编成唯一可译码,计算第i 个消息的累加概率 ∑ -== 1 1 )(i k k i x p p 4、将累加概率P i 变换成二进制数。 5、取P i 二进制数的小数点后K i 位即为该消息符号的二进制码。 四、源程序: #include #include #include #include #include using namespace std; int main() { int N; cout<<"请输入信源符号个数:";cin>>N; cout<<"请输入各符号的概率:"<

int i,j; for(i=0;i

《短时记忆的视觉编码实验报告》

《短时记忆的视觉编码》实验报告 1 引言 实验逻辑 此次实验是根据短时记忆是以听觉编码为主的原理,该原理可以得出如果字母发音不同,被试的反应时会存在差异的推论。那么该实验就是要通过同时控制字母形状和发音形成的三个实验水平a1、a2、a3(其中a1:字母形状发音都相同,a2:字母形状不同但发音相同,a3:字母形状发音都不同),实验旨在通过三个不同水平下的比较,探索视觉编码是否存在短时记忆中。 实验假设 我们假设视觉编码存在短时记忆中。若实验设计合理,实验进行正常。那么可以得到,短时记忆存在听觉编码。因此在字母形状不同发音相同、字母形状发音都不同的条件下。被试的反应时会存在差异。 实验预期 被试在不同刺激条件a1、a2、a3下(a1字母形状名称均相同、a2字母形状不同但名称相同、a3字母形状和名称都不同)的反应时存在差异。 2.方法 被试:五人一组,互为主被试,共85名被试。 实验材料:JGW—B型心理实验台的速示器单元,计时计数器单元,手键1个,练习卡片3张(DD、Dd、DG),实验卡片16张(见下表),注视点卡片1张。 实验设计:单因素重复测量设计

实验程序: 统计方法 单因素重复测量的方差分析 3 结果 不同条件下反应时的描述统计结果 在字母形状和发音都相同、字母形状不同但发音相同和字母形状和发音都不同三种条件下的反应时描述统计结果见表1。 表1 三种条件下的反应时的描述统计结果(N=3) 条件M(SD)min max 形状和发音都相 同(a1) 形状不同但发音 相同(a2)

形状和发音都不 同(a3) 不同条件下反应时的差异 通过单因素重复测量方差分析,得出的结果发现,不同条件下,被试反应时有统计学意义上的显着差异(F(2)=,P=0);再通过多重比较结果分析发现:a1≠a2,a1≠a3,a2≠a3,见表2. 表2 不同条件下反应时差异检验的结果 4 讨论 通过实验结果分析、实验假设得到了验证。在a2(字母形状不同但名称相同)与(a3字母形状发音都不同)的条件下,被试反应时差异显着。这个结果表明,在字母形状条件相同的情况下,字母发音的不同会影响到被试反应时的结果,即短时记忆存在记忆的声音编码,这一分析结果表明本实验的设计是比较合理。a1(字母形状发音都相同)与a2(字母形状不同但名称相同)的条件下被试反应时差异显着,这表明,在字母发音条件相同的情况下,字母形状的不同也会影响被试反应时的结果,即短时记忆存在记忆的视觉编码。 5 结论

香农编码实验报告

中南大学 《信息论与编码》实验报告 题目信源编码实验 指导教师 学院 专业班级 姓名 学号 日期

目录 一、香农编码 (3) 实验目的 (3) 实验要求 (3) 编码算法 (3) 调试过程 (3) 参考代码 (4) 调试验证 (7) 实验总结 (7) 二、哈夫曼编码 (8) 实验目的 (8) 实验原理 (8) 数据记录 (9) 实验心得 (10)

一、香农编码 1、实验目的 (1)进一步熟悉Shannon 编码算法; (2)掌握C 语言程序设计和调试过程中数值的进制转换、数值与字符串之间 的转换等技术。 2、实验要求 (1)输入:信源符号个数q 、信源的概率分布p ; (2)输出:每个信源符号对应的Shannon 编码的码字。 3、Shannon 编码算法 1:procedure SHANNON(q,{Pi }) 2: 降序排列{Pi } 3: for i=1 q do 4: F(i s ) 5:i l 2 []log 1/()i p s 6:将累加概率F(i s )(十进制小数)变换成二进制小数。 7:取小数点后i l 个二进制数字作为第i 个消息的码字。 8:end for 9:end procedure ------------------------------------------------------------------------------------------------------------------ 4、调试过程 1、fatal error C1083: Cannot open include file: 'unistd.h': No such file or directory fatal error C1083: Cannot open include file: 'values.h': No such file or directory 原因:unistd.h 和values.h 是Unix 操作系统下所使用的头文件 纠错:删去即可 2、error C2144: syntax error : missing ')' before type 'int' error C2064: term does not evaluate to a function 原因:l_i(int *)calloc(n,sizeof(int)); l_i 后缺少赋值符号使之不能通过编译 纠错:添加上赋值符号 1 1 ()i k k p s -=∑

哈夫曼树实验报告

哈夫曼树实验报告 Company number:【0089WT-8898YT-W8CCB-BUUT-202108】

计算机科学与技术学院数据结构实验报告 班级 2014级计算机1班学号姓名张建华成绩 实验项目简单哈夫曼编/译码的设计与实现实验日期一、实验目的 本实验的目的是进一步理解哈夫曼树的逻辑结构和存储结构,进一步提高使用理论知识指导解决实际问题的能力。 二、实验问题描述 利用哈夫曼编码进行通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。但是,这要求在发送端通过一个编码系统对待传数据预先编码,在接收端将传来的数据进行译码,此实验即设计这样的一个简单编/码系统。系统应该具有如下的几个功能: 1、接收原始数据。 从终端读入字符集大小n,以及n个字符和n个权值,建立哈夫曼树,并将它存于文件中。 2、编码。 利用已建好的哈夫曼树(如不在内存,则从文件中读入),对文件中的正文进行编码,然后将结果存入文件中。 3、译码。 利用已建好的哈夫曼树将文件中的代码进行译码,结果存入文件中。 4、打印编码规则。 即字符与编码的一一对应关系。 5、打印哈夫曼树, 将已在内存中的哈夫曼树以直观的方式显示在终端上。 三、实验步骤 1、实验问题分析 1、构造哈夫曼树时使用静态链表作为哈夫曼树的存储。 在构造哈夫曼树时,设计一个结构体数组HuffNode保存哈夫曼树中各结点的信息,根据二叉树的性质可知,具有n个叶子结点的哈夫曼树共有2n-1个结点,所以数组HuffNode的大小设置为2n-1,描述结点的数据类型为: Typedef strcut { Int weight;/*结点权值*/ Int parent; Int lchild; Int rchild; }HNodeType; 2、求哈夫曼编码时使用一维结构数组HuffCode作为哈夫曼编码信息的存储。 求哈夫曼编码,实质上就是在已建立的哈夫曼树中,从叶子结点开始,沿结点的双亲链域回退到根结点,没回退一步,就走过了哈夫曼树的一个分支,从而得到一位哈夫曼码值,由于一个字符的哈夫曼编码是从根结点到相应叶子结点所经过的路

图像压缩编码实验报告

图像压缩编码实验报告 一、实验目的 1.了解有关数字图像压缩的基本概念,了解几种常用的图像压缩编码方式; 2.进一步熟悉JPEG编码与离散余弦变换(DCT)变换的原理及含义; 3.掌握编程实现离散余弦变换(DCT)变换及JPEG编码的方法; 4.对重建图像的质量进行评价。 二、实验原理 1、图像压缩基本概念及原理 图像压缩主要目的是为了节省存储空间,增加传输速度。图像压缩的理想标准是信息丢失最少,压缩比例最大。不损失图像质量的压缩称为无损压缩,无损压缩不可能达到很高的压缩比;损失图像质量的压缩称为有损压缩,高的压缩比是以牺牲图像质量为代价的。压缩的实现方法是对图像重新进行编码,希望用更少的数据表示图像。应用在多媒体中的图像压缩编码方法,从压缩编码算法原理上可以分为以下3类: (1)无损压缩编码种类 哈夫曼(Huffman)编码,算术编码,行程(RLE)编码,Lempel zev编码。(2)有损压缩编码种类 预测编码,DPCM,运动补偿; 频率域方法:正交变换编码(如DCT),子带编码; 空间域方法:统计分块编码; 模型方法:分形编码,模型基编码; 基于重要性:滤波,子采样,比特分配,向量量化; (3)混合编码 JBIG,,JPEG,MPEG等技术标准。 2、JPEG 压缩编码原理 JPEG是一个应用广泛的静态图像数据压缩标准,其中包含两种压缩算法(DCT和DPCM),并考虑了人眼的视觉特性,在量化和无损压缩编码方面综合权衡,达到较大的压缩比(25:1以上)。JPEG既适用于灰度图像也适用于彩色图像。其中最常用的是基于DCT变换的顺序式模式,又称为基本系统。JPEG 的压缩编码大致

图像编码实验报告

图 像 压 缩 编 码(实验报告)

一、实验目的 1.理解图像压缩目的及意义; 2.理解有损压缩和无损压缩的概念; 3.了解几种常用的图像压缩编码方法; 4.利用MATLAB程序进行图像压缩。 二、实验原理 图像压缩主要目的是为了节省存储空间,提高存储、处理、传输速度。虽然表示图像需要大量的数据,但数据是高度相关的,或者说存在冗余(Redundancy),去掉这些冗余信息可以有效地压缩图像,同时不会损坏图像的有效信息。信息的冗余量有许多种,如空间冗余,时间冗余,结构冗余,知识冗余,视觉冗余等,数据压缩实质上是减少这些冗余量。高效编码的主要方法是尽可能去除图像中的冗余成分,从而以最小的码元包含最大的图像信息。 图像压缩的理想标准是信息丢失最少,压缩比例最大。不损失图像质量的压缩称为无损压缩,无损压缩不可能达到很高的压缩比;损失图像质量的压缩称为有损压缩,高的压缩比是以牺牲图像质量为代价的。压缩的实现方法是对图像重新进行编码,希望用更少的数据表示图像。 编码压缩方法有许多种,从不同的角度出发有不同的分类方法,从信息论角度出发可分为两大类。 (1)冗余度压缩方法,也称无损压缩、信息保持编码或嫡编码。具体说就是解码图像和压缩编码前的图像严格相同,没有失真,从数学上讲是一种可逆运算。 (2)信息量压缩方法,也称有损压缩、失真度编码或烟压缩编码。也就是说解码图像和原始图像是有差别的,允许有一定的失真。 应用在多媒体中的图像压缩编码方法,从压缩编码算法原理上可以分为以下几类: (1)熵编码。熵编码是纯粹基于信号统计特性的编码技术,是一种无损编码。熵编码的基本原理是给出现概率较大的符号赋予一个短码字,而给出现概率较小的符号赋予一个长码字,从而使得最终的平均码长很小。

哈夫曼树及其操作-数据结构实验报告(2)

电子科技大学 实验报告 课程名称:数据结构与算法 学生姓名:陈*浩 学号:************* 点名序号: *** 指导教师:钱** 实验地点:基础实验大楼 实验时间: 2014-2015-2学期 信息与软件工程学院

实验报告(二) 学生姓名:陈**浩学号:*************指导教师:钱** 实验地点:科研教学楼A508实验时间:一、实验室名称:软件实验室 二、实验项目名称:数据结构与算法—树 三、实验学时:4 四、实验原理: 霍夫曼编码(Huffman Coding)是一种编码方式,是一种用于无损数据压缩的熵编码(权编码)算法。1952年,David A. Huffman在麻省理工攻读博士时所发明的。 在计算机数据处理中,霍夫曼编码使用变长编码表对源符号(如文件中的一个字母)进行编码,其中变长编码表是通过一种评估来源符号出现机率的方法得到的,出现机率高的字母使用较短的编码,反之出现机率低的则使用较长的编码,这便使编码之后的字符串的平均长度、期望值降低,从而达到无损压缩数据的目的。 例如,在英文中,e的出现机率最高,而z的出现概率则最低。当利用霍夫曼编码对一篇英文进行压缩时,e极有可能用一个比特来表示,而z则可能花去25个比特(不是26)。用普通的表示方法时,每个英文字母均占用一个字节(byte),即8个比特。二者相比,e使用了一般编码的1/8的长度,z则使用了3倍多。倘若我们能实现对于英文中各个字母出现概率的较准确的估算,就可以大幅度提高无损压缩的比例。 霍夫曼树又称最优二叉树,是一种带权路径长度最短的二叉树。所谓树的带权路径长度,就是树中所有的叶结点的权值乘上其到根结点的路径长度(若根结点为0层,叶结点到根结点的路径长度为叶结点的层数)。树的路径长度是从树根到每一结点的路径长度之和,记为WPL=(W1*L1+W2*L2+W3*L3+...+Wn*Ln),N个权值Wi(i=1,2,...n)构成一棵有N个叶结点的二叉树,相应的叶结点的路径长度为Li(i=1,2,...n)。 可以证明霍夫曼树的WPL是最小的。

相关文档
最新文档