文档库 最新最全的文档下载
当前位置:文档库 › 信息论实验报告

信息论实验报告

信息论实验报告
信息论实验报告

信息论实验

实验一

哈夫曼编码(Huffman Coding)是一种编码方式,哈夫曼编码是可变字长编码(VLC)的一种。Huffman于1952年提出一种编码方法,该方法完全依据字符出现概率来构造异字头的平均长度最短的码字,有时称之为最佳编码,一般叫作Huffman编码。

实验目的:

利用程序实现哈夫曼编码,以加深对哈夫曼编码的理解,并锻炼编程能力。实验分析:

哈夫曼编码步骤:

一、对给定的n个权值{W1,W2,W3,...,Wi,...,Wn}构成n棵二叉树的初始集合F= {T1,T2,T3,...,Ti,...,Tn},其中每棵二叉树Ti中只有一个权值为Wi的根结点,它的左右子树均为空。(为方便在计算机上实现算法,一般还要求以Ti的权值Wi 的升序排列。)

二、在F中选取两棵根结点权值最小的树作为新构造的二叉树的左右子树,新二叉树的根结点的权值为其左右子树的根结点的权值之和。

三、从F中删除这两棵树,并把这棵新的二叉树同样以升序排列加入到集合F 中。

四、重复二和三两步,直到集合F中只有一棵二叉树为止。

简易的理解就是,假如我有A,B,C,D,E五个字符,出现的频率(即权值)分别为5,4,3,2,1,那么我们第一步先取两个最小权值作为左右子树构造一个新树,即取1,2构成新树,其结点为1+2=3,如图:

虚线为新生成的结点,第二步再把新生成的权值为3的结点放到剩下的集合中,所以集合变成{5,4,3,3},再根据第二步,取最小的两个权值构成新树,如图:

再依次建立哈夫曼树,如下图:

其中各个权值替换对应的字符即为下图:

所以各字符对应的编码为:A->11,B->10,C->00,D->011,E->010

霍夫曼编码是一种无前缀编码。解码时不会混淆。其主要应用在数据压缩,加密解密等场合。

实验代码:

#include

#include

#include

#include

#define MAXBIT 100

#define MAXVALUE 10000

#define MAXLEAF 30

#define MAXNODE MAXLEAF*2 -1

typedef struct

{

int bit[MAXBIT];

int start;

} HCodeType; /* 编码结构体*/ typedef struct

{

int weight;

int parent;

int lchild;

int rchild;

int value;

} HNodeType; /* 结点结构体*/

/* 构造一颗哈夫曼树*/

void HuffmanTree (HNodeType HuffNode[MAXNODE], int n)

{

/* i、j:循环变量,m1、m2:构造哈夫曼树不同过程中两个最小权值结点的权值,

x1、x2:构造哈夫曼树不同过程中两个最小权值结点在数组中的序号。*/

int i, j, m1, m2, x1, x2;

/* 初始化存放哈夫曼树数组HuffNode[] 中的结点*/

for (i=0; i<2*n-1; i++)

{

HuffNode[i].weight = 0;//权值

HuffNode[i].parent =-1;

HuffNode[i].lchild =-1;

HuffNode[i].rchild =-1;

HuffNode[i].value=i; //实际值,可根据情况替换为字母

} /* end for */

/* 输入n 个叶子结点的权值*/

for (i=0; i

{

printf ("Please input weight of leaf node %d: \n", i);

scanf ("%d", &HuffNode[i].weight);

} /* end for */

/* 循环构造Huffman 树*/

for (i=0; i

{

m1=m2=MAXVALUE; /* m1、m2中存放两个无父结点且结点权值最小的两个结点*/

x1=x2=0;

/* 找出所有结点中权值最小、无父结点的两个结点,并合并之为一颗二叉树*/

for (j=0; j

{

if (HuffNode[j].weight < m1 && HuffNode[j].parent==-1)

{

m2=m1;

x2=x1;

m1=HuffNode[j].weight;

x1=j;

}

else if (HuffNode[j].weight < m2 && HuffNode[j].parent==-1) {

m2=HuffNode[j].weight;

x2=j;

}

} /* end for */

/* 设置找到的两个子结点x1、x2 的父结点信息*/ HuffNode[x1].parent = n+i;

HuffNode[x2].parent = n+i;

HuffNode[n+i].weight = HuffNode[x1].weight + HuffNode[x2].weight;

HuffNode[n+i].lchild = x1;

HuffNode[n+i].rchild = x2;

printf ("x1.weight and x2.weight in round %d: %d, %d\n", i+1, HuffNode[x1].weight, HuffNode[x2].weight); /* 用于测试*/

printf ("\n");

} /* end for */

} /* end HuffmanTree */

//解码

void decodeing(char string[],HNodeType Buf[],int Num)

{

int i,tmp=0,code[1024];

int m=2*Num-1;

char *nump;

char num[1024];

for(i=0;i

{

if(string[i]=='0')

num[i]=0;

else

num[i]=1;

}

i=0;

nump=&num[0];

while(nump<(&num[strlen(string)]))

{tmp=m-1;

while((Buf[tmp].lchild!=-1)&&(Buf[tmp].rchild!=-1)) {

if(*nump==0)

{

tmp=Buf[tmp].lchild ;

}

else tmp=Buf[tmp].rchild;

nump++;

}

printf("%d",Buf[tmp].value);

}

}

int main(void)

{

HNodeType HuffNode[MAXNODE]; /* 定义一个结点结构体数组*/

HCodeType HuffCode[MAXLEAF], cd; /* 定义一个编码结构体数组,同时定义一个临时变量来存放求解编码时的信息*/

int i, j, c, p, n;

char pp[100];

printf ("Please input n:\n");

scanf ("%d", &n);

HuffmanTree (HuffNode, n);

for (i=0; i < n; i++)

{

cd.start = n-1;

c = i;

p = HuffNode[c].parent;

while (p != -1) /* 父结点存在*/

{

if (HuffNode[p].lchild == c)

cd.bit[cd.start] = 0;

else

cd.bit[cd.start] = 1;

cd.start--; /* 求编码的低一位*/

c=p;

p=HuffNode[c].parent; /* 设置下一循环条件*/ } /* end while */

/* 保存求出的每个叶结点的哈夫曼编码和编码的起始位*/ for (j=cd.start+1; j

{ HuffCode[i].bit[j] = cd.bit[j];}

HuffCode[i].start = cd.start;

} /* end for */

/* 输出已保存好的所有存在编码的哈夫曼编码*/

for (i=0; i

{

printf ("%d 's Huffman code is: ", i);

for (j=HuffCode[i].start+1; j < n; j++)

{

printf ("%d", HuffCode[i].bit[j]);

}

printf(" start:%d",HuffCode[i].start);

printf ("\n");

}

printf("Decoding?Please Enter code:\n");

scanf("%s",&pp);

decodeing(pp,HuffNode,n);

getch();

return 0;

}

实验结果:

实验二

*1950年,汉明描述了构造最小距离为3的编码的一般方法,现在称为汉明码。对于任意i值,其方法能产生(2i-1)位的编码,其中包含i个校验位和2i-1-i 个信息位。

实验目的:

*理解信道编码的原理,理解汉明码的基本原理与编码过程,利用程序实现汉明码编码,理解信道编码对可靠性的追求。

实验分析:

①汉明校验的基本思想

将有效信息按某种规律分成若干组,每组安排一个校验位,做奇偶测试,就能提供多位检错信息,以指出最大可能是哪位出错,从而将其纠正。实质上,汉明校验是一种多重校验。

②汉明校验的特点

它不仅具有检测错误的能力,同时还具有给出错误所在准确位置的能力。

一、校验位的位数校验位的位数与有效信息的长度有关

设:N--为校验码的位数K--是有效信息位r--校验位(分成r组作奇偶校验,能产生r位检错信息)汉明码应满足N=K+r≤2r-1 若r=3 则N=K+r≤7 所以K ≤4

二.分组原则

在汉明码中,位号数(1、2、3、……、n)为2的权值的那些位,即:

1(20)、2(21)、4(22)、8(23)、…2r-1位,作为奇偶校验位

并记作: P1、P2、P3 、P4、…Pr,余下各位则为有效信息位。

例如:N=11 K=7 r=4 相应汉明码可示意为

位号 1 2 3 4 5 6 7 8 9 10 11

P占位P1 P2 ×P3 ×××P4 ×××

其中×均为有效信息,汉明码中的每一位分别被P1P2P3P4…Pr 中的一至若干位所校验,其规律是:

第i位由校验位位号之和等于i的那些校验位所校验

如:汉明码的位号为3,它被P1P2(位号分别为1,2)所校验

汉明码的位号为5,它被P1P3(位号分别为1,4)所校验

归并起来: 形成了4个小组,每个小组一个校验位,校验位的取值,仍采用奇偶校验方式确定。如表2〃6 、表2〃7所示:

三.编码、查错、纠错原理

以4位有效信息(b1、b2、b3、b4)和3位校验位(P1、P2、P3)为例: K=4 r=3 汉明序号 1 2 3 4 5 6 7

汉明码P1 P2 b1 P3 b2 b3 b4

根据表2-8可以看到

(1)每个小组只有一位校验位,第一组是P1、第二组是P2、第三组是P3。(2)每个校验位校验着它本身和它后面的一些确定位。

1.编码原理(采用偶校验)

1)若有效信息b1b2b3b4=1011 先将它们分别填入第3、5、6、7位

2)再分组进行奇偶统计,分别填入校验位P1、P2、P3的值

如:第一组有:P1b1b2b4 因b1b2b4含偶数个1,故P1应取值为0 第二组有:P2b1b3b4 因b1b3b4含奇数个1,故P2应取值为1

第三组有:P3b2b3b4 因b2b3b4含偶数个1,故P3应取值为0

汉明编码为:P1P2b1P3b2b3b4=0110011

2.查错与纠错

因为分三组校验,每组产生一位检错信息、3组共3位检错信息,便构成一个指误字,上例指误字由G1G2G3组成。

其中:

G3=P3⊕b2⊕b3⊕b4 P3b2b3b4=0011

G2=P2⊕b1⊕b3⊕b4 P2b1b3b4=1111

G1=P1⊕b1⊕b2⊕b4 P1b1b2b4=0101

采用偶校验,在没有出错情况下G1G2G3=000。由于在分组时,就确定了每一位参加校验的组别,所以指误字能准确地指出错误所在位。

如:若第3位b1出错,由于b1参加了第一组和第二组的校验,必然破坏了第一组和第二组的偶性,从而使G1和G2为1。因为b1未参加第三组校验,故G3=0,所以构成的指误字G3G2G1=011它指出第3位出错。

反之:若G3G2G1=111 则说明汉明码第7位b4出错。因为只有第7位b4参加了3个小组的校验,破坏了三个小组的偶性。

假定:

源部件发送汉明码为:0110011 接收端接收汉明码为:0110011

则: 三个小组都满足偶校验要求,这时G3G2G1=000,表明收到信息正确,可以从中提出有效信息1011参与运算处理。

纠错:若接收端收到的汉明码为0110111,分组检测后指误字G3G2G1=101,它指出第5位出错,则只须将第5位变反,就可还原成正确的数码0110011。

实验代码:

//code by zxf 2010.4.10

#include

#include

#include

#include

//N代表待编码数据的上限位数

#define N 100

int HmLength(int k);//计算汉明码校验位位数

void InCode(char *data,char *c,int k,int r);//计算汉明码每个校验位的数值

int main()

{

int k=0,r=0,dnum=0,cnum=0;

char data[N];

char c[N];

system("cls");

printf("Now please input the data you want to Incode:");

for(k=0;k

{

data[k]=getche();

if(data[k]!='0'&&data[k]!='1')

{

break;

}

}

printf("\n__________________________________________________________\n" );

r=HmLength(k);//求取校验位数

printf("k=%d r=%d The length of Hamming code=%d\n",k,r,r+k);//输出汉明码相关位数信息

InCode(data,c,k,r);//计算汉明码

printf("The Hamming code is:");

for(int j=1;j

{

if(j==(int)pow(2,cnum))

{

printf("%c",c[cnum]);

cnum++;

}

else

{

printf("%c",data[dnum]);

dnum++;

}

}

getch();

}

/*

*@func:计算校验码

*@param:data 待编码数据,c 校验码,k 数据长度,r 校验码位数

数据挖掘试验指导书

《商务数据分析》实验指导书(适用于国际经济与贸易专业) 江西财经大学国际经贸学院 编写人:戴爱明

目录 前言 (1) 实验一、SPSS Clementine 软件功能演练 (5) 实验二、SPSS Clementine 数据可视化 (9) 实验三、决策树C5.0 建模 (17) 实验四、关联规则挖掘 (30) 实验五、聚类分析(异常值检测) (38)

前言 一、课程简介 商务数据分析充分利用数据挖掘技术从大量商务数据中获取有效的、新颖的、潜在有用的、最终可理解的模式的非平凡过程。数据挖掘的广义观点:数据挖掘就是从存放在数据库,数据仓库或其他信息库中的大量的数据中“挖掘”有趣知识的过程。数据挖掘,又称为数据库中知识发现(Knowledge Discovery in Database, KDD),因此,数据挖掘和数据仓库的协同工作,一方面,可以迎合和简化数据挖掘过程中的重要步骤,提高数据挖掘的效率和能力,确保数据挖掘中数据来源的广泛性和完整性。另一方面,数据挖掘技术已经成为数据仓库应用中极为重要和相对独立的方面和工具。 数据挖掘有机结合了来自多学科技术,其中包括:数据库、数理统计、机器学习、高性能计算、模式识别、神经网络、数据可视化、信息检索、图像与信号处理、空间数据分析等,这里我们强调商务数据分析所处理的是大规模数据,且其算法应是高效的和可扩展的。通过数据分析,可从数据库中挖掘出有意义的知识、规律,或更高层次的信息,并可以从多个角度对其进行浏览察看。所挖掘出的知识可以帮助进行商务决策支持。当前商务数据分析应用主要集中在电信、零售、农业、网络日志、银行等方面。

信息论实验报告2

实验课程:信息论与编码理论专业:信息与计算科学班级:09070241 学号:0907024101 姓名:孙秋月 中北大学理学院

实验二 哈夫曼编码 一、实验目的 1. 掌握哈夫曼编码的原理及编码步骤 2. 练习matlab 中哈夫曼编码函数的调用及通信工具箱的使用 二、实验原理 哈夫曼编码的具体步骤归纳如下: 1. 统计n 个信源消息符号,得到n 个不同概率的信息符号。 2. 将这n 个信源信息符号按其概率大小依次排序: p (x 1) ≥ p (x 2)≥ …≥ p (x n ) 3. 取两个概率最小的信息符号分别配以0和1两个码元,并将这两个概率相加作为一个新的信息符号的概率,和未分配的信息符号构成新的信息符号序列。 4. 将剩余的信息符号,按概率大小重新进行排序。 5. 重复步骤3,将排序后的最后两个小概论相加,相加和与其他概率再排序。 6. 如此反复重复n-2次,最后只剩下两个概率。 7. 从最后一级开始,向前返回得到各个信源符号所对应的码元序列,即相应的码字,构成霍夫曼编码字。编码结束。 三、实验内容 为某一信源进行哈夫曼编码。该信源的字符集为X={x 1, x 2, … x 6 },相应的概率矢量为:P =(0.30,0.25,0.21,0.10,0.09,0.05),即X ,P 的概率空间为: 123456 0.300.250.210.100.090.05X x x x x x x P ????=???????? 根据哈夫曼编码算法对该信源进行哈夫曼编码。并计算其平均码长和编码效率。 调用matlab 哈夫曼编码函数进行哈夫曼编码,与人工编码结果做比较。 1. huffmandict 函数: 为已知概率分布的信源模型生成哈夫曼编解码索引表。

信息论与编码实验指导书

《信息论与编码》实验指导书 信息与通信工程学院信息工程系 2014年6月

目录 实验一绘制信源熵函数曲线 (3) 实验二哈夫曼编解码 (6) 实验三离散信道容量 (10)

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 i i i i i x p x p x I x p X H) ( log ) ( ) ( ) ( ) ( 2 单位为比特/符号或比特/符号序列。 平均不确定度H(X)的定义公式与热力学中熵的表示形式相同,所以又把平均不确定度H(X)称为信源X的信源熵。 必须注意一下几点: a)某一信源,不管它是否输出符号,只有这些符号具有某些概率特性, 必有信源的熵值;这熵值是在总体平均上才有意义,因而是个确定 值,一般写成H(X),X是指随机变量的整体(包括概率分布)。 b)信息量则只有当信源输出符号而被接收者收到后,才有意义,这就 是给与信息者的信息度量,这值本身也可以是随机量,也可以与接

西安交通大学概率论上机实验报告总结计划.docx

西安交通大学一、试验目的

概率论部分 1.了解 matlab 软件的基本命令与操作; 2.熟悉 matlab 用于描述性统计的基本菜单操作及命令; 3.会用 matlab 求密度函数值、分布函数值、随机变量分布的上 下侧分位数。 数理统计部分 1.熟悉 matlab 进行参数估计、假设检验的基本命令与操作. 2.掌握用 matlab 生成点估计量值的模拟方法 3.会用 matlab 进行总体数学期望和方差的区间估计。 4.会用 matlab 进行单个、两个正态总体均值的假设检验。 5.会用 matlab 进行单个、两个正态总体方差的假设检验。 二、试验问题 实验五、随机变量综合试验 实验内容 1.产生 ?(6),?(10), F(6,10) 和 t (6)四种随机数,并画出相应的频 率直方图; 2.在同一张图中画出了 N(0,1)和 t (6)随机数频率直方图,比较它 们的异同; 3.写出计算上述四种分布的分布函数值和相应上侧分位点命 令.

实验七、对统计中参数估计进行计算机模拟验 证实验内容: 1.产生服从给定分布的随机数,模拟密度函数或概率分布; 2.对分布包含的参数进行点估计,比较估计值与真值的误差; 3.对分布包含的参数进行区间估计,行区间估计,可信度。 三、实验源程序及结果 实验 5 源程序: %清空内存,清空输出屏幕 clc;clear; %首先是指数分布 n = normpdf(-2::14,6); %绘制频率直方图 plot(-2::14,n,'color','r','linewidth',2); ylabel(' 概率密度 '); title('正态分布概率密度'); %t 分布 h1 = figure; t = tpdf(-3::3,6); plot(-3::3,t,'color','g','linewidth',2); ylabel(' 对应频率 '); title('t分布频率密度'); %F 分布 h2 = figure; f = fpdf(0::10,6,10); plot(0::10,f,'color','k','linewidth',2); ylabel(' 对应频率 '); title('F分布频率直方图'); %卡方分布 h3 = figure; ka = chi2pdf(0::15,6); plot(0::15,ka,'color','y','linewidth',2); ylabel(' 对应频率 '); title('卡方分布频率直方图'); %再来绘图 h4 = subplot(2,1,1); y1=normpdf(-10::10,0,1);

信息论与编码实验报告.

本科生实验报告 实验课程信息论与编码 学院名称信息科学与技术学院 专业名称通信工程 学生姓名 学生学号 指导教师谢振东 实验地点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

《信息论与编码》教学大纲

《信息论与编码》教学大纲 一课程简介 课程编号:04254002 课程名称:信息论与编码Informatics & Coding 课程类型:基础课必修课 学时:32 学分:2 开课学期:第六学期 开课对象:通信、电子专业 先修课程:概率论与数理统计、信号与系统、随机信号原理。 参考教材:信息论与编码,陈运,周亮,陈新,电子工业出版社,2002年8月 二课程性质、目的与任务 信息论在理论上指出了建立最佳编码、最佳调制和最佳接收方法的最佳系统的理论原则,它对通信体制和通信系统的研究具有指导意义。提高信息传输的可靠性和有效性始终是通信工作所追求的目标。因此,信息论与编码是从事通信、电子系统工程的有关工程技术人员都必须掌握的基本理论知识。 内容提要:本课程包括狭义相对论和提高通信可靠性的差错控制编码理论。信息论所研究的主要问题是在通信系统设计中如何实现有效性和可靠性。 三教学基本内容与基本要求 本课程总学时为32。其中理论教学为28,实验学时为4。 主要的理论教学内容包括:离散信源和连续信源的熵、条件熵、联合熵和平均互信息量的概念及性质;峰值功率受限和平均功率受限下的最大熵定理和连续信源熵的变换;变长码的霍夫曼编码方法,熟悉编码效率和平均码长的计算;最大后验概率准则和最大似然译码准则等。 实验内容主要包括:离散无记忆信道容量的迭代算法,循环码的编译码。 四教学内容与学时分配 第3章离散信源无失真编码

第6章网络信息论 (教学要求:A—熟练掌握;B—掌握;C—了解) 五实习、实验项目及学时分配 1.离散无记忆信道容量的迭代算法2学时 要求用Matlab编写计算离散信道容量的实用程序并调试成功,加深对信道容量的理解。 2.循环码的编译码2学时 要求用Matlab编写程序,用软件完成循环码的编译码算法。 六教学方法与手段 常规教学与多媒体教学相结合。

西安交大概率论上机实验报告材料

概率论上机实验报告 实验目的 1. 学习使用MATLAB 中常见分布相关的命令; 2. 学习绘制概率分布律与分布函数图形; 3. 利用随机数对随机事件进行模拟; 4. 体会随机事件发生频率与概率的关系,加深对概率论的理解。 实验内容 1. 列出常见分布的概率密度及分布函数的命令,并操作。 2. 掷硬币150次,其中正面出现的概率为0.5,这150次中正面出现的次数记为X , (1) 试计算45=X 的概率和45≤X 的概率; (2)绘制分布函数图形和概率分布律图形。 3. 用Matlab 软件生成服从二项分布的随机数,并验证泊松定理。 4. 设22221),(y x e y x f +-=π是一个二维随机变量的联合概率密度函数,画出这一函数的联合概率密度图像。 5. 来自某个总体的样本观察值如下,计算样本的样本均值、样本方差、画出频率直方图。 A=[16 25 19 20 25 33 24 23 20 24 25 17 15 21 22 26 15 23 22 20 14 16 11 14 28 18 13 27 31 25 24 16 19 23 26 17 14 30 21 18 16 18 19 20 22 19 22 18 26 26 13 21 13 11 19 23 18 24 28 13 11 25 15 17 18 22 16 13 12 13 11 09 15 18 21 15 12 17 13 14 12 16 10 08 23 18 11 16 28 13 21 22 12 08 15 21 18 16 16 19 28 19 12 14 19 28 28 28 13 21 28 19 11 15 18 24 18 16 28 19 15 13 22 14 16 24 20 28 18 18 28 14 13 28 29 24 28 14 18 18 18 08 21 16 24 32 16 28 19 15 18 18 10 12 16 26 18 19 33

信息论实验报告-

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

实验一香农编码一、程序设计的流程图 二、程序清单 #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

信息论与编码实验报告材料

实验报告 课程名称:信息论与编码姓名: 系:专 业:年 级:学 号:指导教 师:职 称:

年月日 目录 实验一信源熵值的计算 (1) 实验二Huffman 信源编码. (5) 实验三Shannon 编码 (9) 实验四信道容量的迭代算法 (12) 实验五率失真函数 (15) 实验六差错控制方法 (20) 实验七汉明编码 (22)

实验一信源熵值的计算 、实验目的 1 进一步熟悉信源熵值的计算 2 熟悉Matlab 编程 、实验原理 熵(平均自信息)的计算公式 q q 1 H(x) p i log2 p i log2 p i i 1 p i i 1 MATLAB实现:HX sum( x.* log2( x));或者h h x(i)* log 2 (x(i )) 流程:第一步:打开一个名为“ nan311”的TXT文档,读入一篇英文文章存入一个数组temp,为了程序准确性将所读内容转存到另一个数组S,计算该数组中每个字母与空格的出现次数( 遇到小写字母都将其转化为大写字母进行计数) ,每出现一次该字符的计数器+1;第二步:计算信源总大小计算出每个字母和空格出现的概率;最后,通过统计数据和信息熵公式计算出所求信源熵值(本程序中单位为奈特nat )。 程序流程图: 三、实验内容 1、写出计算自信息量的Matlab 程序 2、已知:信源符号为英文字母(不区分大小写)和空格输入:一篇英文的信源文档。输出:给出该信源文档的中各个字母与空格的概率分布,以及该信源的熵。 四、实验环境 Microsoft Windows 7

五、编码程序 #include"stdio.h" #include #include #define N 1000 int 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='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]);

西安交大概率论上机实验报告 西安交通大学概率论实验报告

概率论与数理统计上机实验报告

一、实验内容 使用MATLAB 软件进行验证性实验,掌握用MATLAB 实现概率统计中的常见计算。本次实验包括了对二维随机变量,各种分布函数及其图像以及频率直方图的考察。 1、列出常见分布的概率密度及分布函数的命令,并操作。 2、掷硬币150次,其中正面出现的概率为0.5,这150次中正面出现的次数记为X , (1) 试计算45=X 的概率和45≤X 的概率; (2) 绘制分布函数图形和概率分布律图形。 3、用Matlab 软件生成服从二项分布的随机数,并验证泊松定理。 4、设2 2221),(y x e y x f +-=π是一个二维随机变量的联合概率密度函数,画出这 一函数的联合概率密度图像。 5、来自某个总体的样本观察值如下,计算样本的样本均值、样本方差、画出频率直方图。 A=[16 25 19 20 25 33 24 23 20 24 25 17 15 21 22 26 15 23 22 20 14 16 11 14 28 18 13 27 31 25 24 16 19 23 26 17 14 30 21 18 16 18 19 20 22 19 22 18 26 26 13 21 13 11 19 23 18 24 28 13 11 25 15 17 18 22 16 13 12 13 11 09 15 18 21 15 12 17 13 14 12 16 10 08 23 18 11 16 28 13 21 22 12 08 15 21 18 16 16 19 28 19 12 14 19 28 28 28 13 21 28 19 11 15 18 24 18 16 28 19 15 13 22 14 16 24 20 28 18 18 28 14 13 28 29 24 28 14 18 18 18 08 21 16 24 32 16 28 19 15 18 18 10 12 16 26 18 19 33 08 11 18 27 23 11 22 22 13 28 14 22 18 26 18 16 32 27 25 24 17 17 28 33 16 20 28 32 19 23 18 28 15 24 28 29 16 17 19 18] 6. 利用Matlab 软件模拟高尔顿板钉试验。 7. 自己选择一个与以上问题不同类型的概率有关的建模题目,并解决。 二、实验目的 1.要求能够利用MATLAB 进行统计量的运算。 2.要求能够使用常见分布函数及其概率密度的命令语句。 3.要求能够利用MATLAB 计算某随机变量的概率。 4.要求能够利用MATLAB 绘制频率直方分布图。

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

《信息论与信源编码》实验报告 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:

香农编码实验报告

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

目录 一、香农编码 (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 -=∑

概率论上机实验报告资料

西安交通大学 概率论实验报告 计算机36班 南夷非 2130505135 2014年12月13日

一、实验目的 1.熟练掌握MATLAB 软件关于概率分布作图的基本操作,会进行常用的概率密度函数和分布函数的作图,绘出分布律图形。 2.利用MATLAB 软件解决一些概率论问题在实际生活中的应用。 二、实验内容 1.二项分布的泊松分布与正态分布的逼近 设 X ~ B(n ,p) ,其中np=2 1) 对n=101,…,105,讨论用泊松分布逼近二项分布的误差。 画处逼近的图形 2) 对n=101,…,105, 计算 )505(≤

纸的需求量X的分布律为 试确定报纸的最佳购进量n。(要求使用计算机模拟) 4.蒲丰投针实验 取一张白纸,在上面画出多条间距为d的平行直线,取一长度为r(r

信息论与编码实验报告

实验一 绘制二进熵函数曲线(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 n X H a p H p p p p x p x p X H p p p x x X P X i i i λλλλ-+≥-+≤=--+-=-=≤≤? ?????-===??????∑ 单位为 比特/符号 或 比特/符号序列。 当某一符号xi 的概率p(xi)为零时,p(xi)log p(xi) 在熵公式中无意义,为此规定这时的 p(xi)log p(xi) 也为零。当信源X 中只含有一个符号x 时,必有p(x)=1,此时信源熵H (X )为零。 四、实验内容: 用Excel 和Matlab 软件制作二进熵函数曲线。根据曲线说明信源熵的物理意义。 (一) Excel 具体步骤如下: 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。在X轴输入标题概率,在Y轴输入标题信源熵。 (二)用matlab软件绘制二源信源熵函数曲线 p = 0.0001:0.0001:0.9999; h = -p.*log2(p)-(1-p).*log2(1-p); plot(p,h) 五、实验结果

实验1_信息论相关实验实验报告

信息论与编码实验一实验报告 学生姓名周群创 指导教师张祖平 学号0909110814 专业班级电子信息1101

实验一关于信源熵的实验 一、实验目的 1. 掌握离散信源熵的原理和计算方法。 2. 熟悉matlab 软件的基本操作,练习使用matlab 求解信源的信息熵。 3. 自学图像熵的相关概念,并应用所学知识,使用matlab 或其他开发工具求解图像熵。 4. 掌握Excel 的绘图功能,使用Excel 绘制散点图、直方图。 二、实验原理 1. 离散信源相关的基本概念、原理和计算公式 产生离散信息的信源称为离散信源。离散信源只能产生有限种符号。 随机事件的自信息量I(x i)为其对应的随机变量x i 出现概率对数的负值。即: I(x i)= -log2 p(x i) 随机事件X 的平均不确定度(信源熵)H(X)为离散随机变量x i 出现概 率的数学期望,即:

H(X )=-∑p(x )I (x ) =-∑p(x ) log p(x ) 2. 二元信源的信息熵 设信源符号集X={0,1},每个符号发生的概率分别为p(0)=p,p(1)=q, p+ q=1,即信源的概率空间为 则该二元信源的信源熵为: H(X) = - p log p –q log q = - p log p – (1- p) log (1- p) 即:H (p) = - p log p – (1- p) log (1- p) 其中0 ≤p ≤1 3. MATLAB 二维绘图 用matlab 中的命令plot(x, y)就可以自动绘制出二维图来。 例1-2,在matlab 上绘制余弦曲线图,y = cos x,其中0 ≤x ≤2。>>x=0:0.1:2*pi;%生成横坐标向量,使其为0,0.1,0.2,…,6.2 >>y=cos(x);%计算余弦向量 >>plot(x,y) %绘制图形 4. MATLAB 求解离散信源熵 求解信息熵过程: 1) 输入一个离散信源,并检查该信源是否是完备集。 2) 去除信源中符号分布概率为零的元素。 3) 根据平均信息量公式,求出离散信源的熵。 5. 图像熵的相关知识 图像熵是一种特征的统计形式,它反映了图像中平均信息量的多少。图像的

信息论实验报告

实验报告 学院:专业:班级: 姓名:学号:实验日期: 实验名称: 实验一:唯一可译码判别准则的代码实现 实验二:霍夫曼编码的代码实现 实验目的: 实验一: 1.进一步熟悉唯一可译码判别准则; 2.掌握C 语言字符串处理程序的设计和调试技术。 实验二: 1.进一步熟悉Huffman 编码过程; 2.掌握C 语言递归程序的设计和调试技术。 实验仪器: 装有visual studio 2010 的电脑一台 实验原理: 实验一: 根据唯一可译码的判别方法,利用数据结构所学的知识,定义字符串数据类型并利用指针进行编程来实现算法。 算法:1、考察 C 中所有的码字,若Wi 是Wj 的前缀,则将对应的后缀作为一个尾随后缀码放入集合Fi+1 中; 2、考察C 和Fi 俩个集合,若Wi ∈C 是Wj∈F 的前缀或Wi ∈F 是Wj∈C 的前缀,则将相应的后缀作为尾随后缀码放入集合Fi+1 中; 3、F=∪Fi 即为码C 的尾随后缀集合; 4、若F 中出现了C 中的元素,算法终止,返回假(C 不是唯一可译码);否

则若F 中没有出现新的元素,则返回真。 实验二: 1.将q 个信源符合按概率大小递减排列; 2.用“0,1”码符号分别代表概率最小的两个信源符号,并将这两个概率最小的信源符号合并成一个,从而得到只包含q-1 个符号的新信源,称为缩减信源s 1; 3.把缩减信源s1的符号仍按概率大小递减次序排列,再将其最后两个概率最小的信源符号分别用“0”和“1”码符号表示,并且合并成一个符号,这样又形成了q-2 个信源符号的缩减信源s 2; 4.依次继续下去,直至信源符号最后只剩下两个信源符号为止,将这最后两个信源符号分别用二元码符号“0”和“1”表示; 5.然后从最后一级缩减信源开始,进行回溯,就得到各信源符号所对应的码符号序列,即对应的码字。 实验内容与步骤: 实验一: 1.已知:信源符号数和码字集合C; 2.输入:任意的一个码,码字的个数和每个具体的码字在运行时从键盘输入; 3.输出:判决(是唯一可译码/不是唯一可译码);循环(若继续判决则输入1 循环判决,否则输入0 结束运行)。 实验二: 1. 输入:信源符号个数r、信源的概率分布P; 2. 输出:每个信源符号对应的Huffman 编码的码字。 实验数据: 实验一源代码: #include #include char c[100][50]; char f[300][50]; int N,sum=0; int flag; void patterson(char c[],char d[]) { int i,j,k; for(i=0;;i++)

信息论与编码实验报告

信息论与编码实验报告-标准化文件发布号:(9456-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII

实验一关于硬币称重问题的探讨 一、问题描述: 假设有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 次称量中达到

《非参数统计》实验教学大纲

《非参数统计》课程实验教学大纲 大纲制定(修订)时间: 2017 年 6 月 课程名称:《非参数统计》课程编码:090531007 课程类别:专业基础课课程性质:必修 适用专业:应用统计学 课程总学时:40 实验(上机)计划学时:8 开课单位:理学院 一、大纲编写依据 1.应用统计学专业2017版教学计划; 2.应用统计学专业《非参数统计》理论教学大纲对实验环节的要求; 3.近年来《非参数统计》实验教学经验。 二、实验课程地位及相关课程的联系 1. 非参数统计是应用统计学专业学生的一门专业基础必修课。 2.本实验以《概率论与数理统计》为先修课; 3.与《数理统计》课程相辅相成。 三、实验目的、任务和要求 1.开设本课程的目的是为了满足日后学生参加统计调查实践工作的需要。 2.掌握单样本模型、两样本位置模型、多样本分类数据模型中的各种非参数统计检验方法,以及检验尺度参数是否相等的各种非参数方法,掌握各种回归的方法,掌握分布检验的各种方法,通过利用各种统计软件(包括SPSS、R软件)实现对样本调查数据的处理与分析,能在真实案例中应用相应的方法。 四、教学方法、教学形式、教学手段的特色 1.每个实验由教师指定实验内容及要求,由学生独立完成上机操作,得出正确的结果。 2.学生要书写实验报告,记录式样结果。 五、实验内容和学时分配

实验一位置参数的检验在统计软件中的实现 1、实验目的:掌握单样本、两样本和多样本位置参数的检验在统计软件中的实现过程。 2、实验要求:将操作过程及结果书写出来,并且将结果截图后贴在实验报告上。 3、实验内容:根据实际问题,个人设计检验总体,获取数据,进行检验。 4、主要仪器设备及试剂:(据实选填)计算机·50台·SPSS/EXCEL软件 实验二尺度参数的检验在统计软件中的实现 1、实验目的:掌握两样本和多样本尺度参数的检验在统计软件中的实现过程。 2、实验要求:把操作过程及结果书写出来,并且上交实验报告。 3、实验内容:根据实际问题,个人设计检验总体,获取数据,进行检验。 4、主要仪器设备及试剂:(据实选填)计算机·50台·SPSS/EXCEL软件 实验三相关与回归分析在统计软件中的实现 1、实验目的:掌握Spearman秩相关检验、Kendall协同检验与Theil回归在统计软件中的实现过程,并与Pearson相关系数与一元线性回归分析比较。 2、实验要求:将各种结果相对照,最后把操作过程及结果书写出来,并且上交实验报告。 3、实验内容:根据实际问题,个人设计检验总体,获取数据,进行检验。 4、主要仪器设备及试剂:(据实选填)计算机·50台·SPSS/EXCEL软件 实验四Kolmogorov-Smirnov检验在统计软件中的实现 1、实验目的:掌握Kolmogorov-Smirnov检验在统计软件中的实现过程,并与卡方检验结果对照。 2、实验要求:将结果相对照,最后把操作过程及结果书写出来,上交实验报告。 3、实验内容:根据实际问题,个人设计检验总体,获取数据,进行检验。 4、主要仪器设备及试剂:(据实选填)计算机·50台·SPSS/EXCEL软件 六、教材(讲义、指导书) 《非参数统计》,吴喜之,赵博娟,中国统计出版社,2013. 七、考核方法和评分标准 1.按照大纲要求,根据每个学生实验前的预习准备,实验过程的考查,实验操作情况及实验报告的质量,综合给出实验成绩。 2.评分等级 评分成绩分优、良、中、及格和不及格五个等级。 优:90分以上 良:80-89分 中:70-79分 及格:60-69分 不及格:59分及以下 具体评定标准如下: 优:实验纪律、预习、操作技能很好,实验报告书写工整无原则错误; 良:实验纪律、预习、操作技能较好,实验报告中原则错误不超过一个; 中:实验纪律、预习、操作技能一般,实验报告中原则错误不超过两个; 及格:实验纪律、预习、操作技能较差,实验报告中原则错误不超过三个; 不及格:实验中严重违章违纪,预习、实验技能均较差,实验报告中数据严重错误。 八、使用说明 1.本实验教学大纲一般随课程进度进行安排,也可集中安排;

相关文档
相关文档 最新文档