《信息论与编码》课程实验报告.doc
《《信息论与编码》课程实验报告.doc》由会员分享,可在线阅读,更多相关《《信息论与编码》课程实验报告.doc(26页珍藏版)》请在三一办公上搜索。
1、本科生实验报告实验课程信息论与编码学院名称管理科学学院专业名称信息与计算科学学生姓名学生学号指导教师实验地点6C402实验成绩 二 一四 年 十 月 二 一四 年 十一 月 实验一 离散信源信息量的计算(一)1 实验内容(1)熟悉利用srand()函数产生随机离散信源概率空间的方法;(2)计算随机离散信源的各种信息量:H(X)、H(XY)、H(Y);2 数据结构与算法描述变量/函数名类 型说 明srand()生成随机随机数bijdouble联合概率矩阵PX3double声明x的概率矩阵PY4double声明y的概率矩阵3 实验数据与实验结果(可用文字描述或贴图的方式进行说明)1)测试数据随机生
2、成数据2)实验结果 4 程序代码清单(可直接将可运行源代码粘贴在下面的方框中)#includestdlib.h#includestdio.h#includetime.h#includeint i,j,k;int sum=0; /*求和,为单位化准备*/int a34; /*单位化前的准备矩阵,由随机数生成*/double b34; /*单位化矩阵*/double c34; /*声明条件矩阵1*/double d34; /*声明条件矩阵2*/double PX3=0; /*声明x的概率矩阵*/double PY4=0; /*声明y的概率矩阵*/double HXY=0; double hx=0;
3、 double hy=0; double yx=0; double xy=0; void main()srand(unsigned)time(NULL); /*为随机数的生成准备的种子*/ for(i=0;i3;i+) for(j=0;j4;j+)aij=rand()%8+1; /*+1是因为避免概率为0,熵为无穷大*/ sum+=aij; for(i=0;i3;i+) /*联合概率矩阵*/for(j=0;j4;j+)bij=(double)aij/(double)sum; printf(联合概率矩阵:n);for(i=0;i3;i+) /*输出联合概率矩阵*/for(j=0;j4;j+)pr
4、intf(%f ,bij);for(i=0;i3;i+) /*x的概率矩阵*/for(j=0;j4;j+)PXi+=bij; printf(x的概率矩阵:n); for(i=0;i3;i+) /*输出x的概率矩阵*/ printf(PX%d=%f ,i+1,PXi); printf(n); /*y的概率矩阵*/for(j=0;j4;j+)for(i=0;i3;i+) PYj+=bij;printf(y的概率矩阵:n); for(j=0;j4;j+) /*输出y的概率矩阵*/ printf(PY%d=%f ,j+1,PYj); printf(n); for(i=0;i3;i+) /*求联合熵*/
5、for(j=0;j4;j+)HXY+=-bij*log(bij)/log(double)2); printf(联合熵H(XY):n);printf(H(XY)=%fn,HXY); for(i=0;i3;i+) /*求x的熵*/ hx+=-PXi*log(PXi)/log(double)2); printf(x的熵:n);printf(H(X)=%fn,hx); for(j=0;j4;j+) /*求y的熵*/ hy+=-PYj*log(PYj)/log(double)2); printf(y的熵:n);printf(H(Y)=%fn,hy); 实验二 离散信源信息量的计算(二)1 实验内容(1)
6、熟悉利用srand()函数产生随机离散信源概率空间的方法;(2)计算随机离散信源的各种信息量:H(X|Y)、H(Y|X)、I(X;Y);2 数据结构与算法描述1)变量及函数的定义变量/函数名类 型说 明Idoublex,y的信息量H(X|Y)double以y为条件x的熵H(Y|X)double以x为条件y的熵3 实验数据与实验结果(可用文字描述或贴图的方式进行说明)1)测试数据随机生成数据2)实验结果4 程序代码清单(可直接将可运行源代码粘贴在下面的方框中)#includestdlib.h#includestdio.h#includetime.h#includeint i,j,k;int su
7、m=0; /*求和,为单位化准备*/int a34; /*单位化前的准备矩阵,由随机数生成*/double b34; /*单位化矩阵*/double c34; /*声明条件矩阵1*/double d34; /*声明条件矩阵2*/double PX3=0; double PY4=0; double HXY=0; double hx=0; /*声明x的熵*/double hy=0; /*声明y的熵*/double yx=0; /*条件熵1*/double xy=0; /*条件熵2*/double I; /*定义自信息*/void main()srand(unsigned)time(NULL); /
8、*为随机数的生成准备的种子*/ for(i=0;i3;i+) for(j=0;j4;j+)aij=rand()%8+1; /*+1是因为避免概率为0,熵为无穷大*/ sum+=aij; for(i=0;i3;i+) /*联合概率矩阵*/for(j=0;j4;j+)bij=(double)aij/(double)sum; printf(联合概率矩阵:n);for(i=0;i3;i+) /*输出联合概率矩阵*/for(j=0;j4;j+)printf(%f ,bij);printf(n);for(i=0;i3;i+) /*x的概率矩阵*/for(j=0;j4;j+)PXi+=bij; printf
9、(x的概率矩阵:n); for(i=0;i3;i+) /*输出x的概率矩阵*/ printf(PX%d=%f ,i+1,PXi); printf(n); /*y的概率矩阵*/for(j=0;j4;j+)for(i=0;i3;i+) PYj+=bij;printf(y的概率矩阵:n); for(j=0;j4;j+) /*输出y的概率矩阵*/ printf(PY%d=%f ,j+1,PYj); printf(n); for(i=0;i3;i+) /*求联合熵*/for(j=0;j4;j+)HXY+=-bij*log(bij)/log(double)2); printf(联合熵H(XY):n);pr
10、intf(H(XY)=%fn,HXY); for(i=0;i3;i+) hx+=-PXi*log(PXi)/log(double)2); printf(x的熵:n);printf(H(X)=%fn,hx); for(j=0;j4;j+) hy+=-PYj*log(PYj)/log(double)2); printf(y的熵:n);printf(H(Y)=%fn,hy); for(i=0;i3;i+) /*条件矩阵1*/for(j=0;j4;j+)cij=bij/PXi;for(i=0;i3;i+) /*间接法1求互信息*/for(j=0;j4;j+)yx+=-bij*log(cij)/log(
11、double)2); printf(信道条件熵:n); printf(H(Y/X)=%fn,yx); for(j=0;j4;j+) /*间接法2求互信息*/for(i=0;i3;i+)dij=bij/PYj;for(i=0;i3;i+) /*条件矩阵2*/for(j=0;j4;j+)xy+=-bij*log(dij)/log(double)2); printf(条件熵2:n); printf(H(X/Y)=%fn,xy); printf(H(XY)=H(X)+H(Y)-H(XY)=%f+%f-%f=%fn,hx,hy,HXY,hx+hy-HXY); printf(x,y的信息量I(x;y):n
12、); I=hx-xy; printf(HX-H(X|Y)=%fn,I);实验三 典型信道容量的计算1 实验内容(1)熟悉利用srand()函数产生随机离散信道概率空间的方法;(2)计算随机离散信道的信道容量;2 数据结构与算法描述1)变量及函数的定义变量/函数名类 型说 明p_jiijfloat信道转移概率矩阵kint迭代次数Cfloat信道容量DELTAfloat精度限制3 实验数据与实验结果(可用文字描述或贴图的方式进行说明)1)测试数据0.6 0.2 0.20.5 0.3 0.22)实验结果4 程序代码清单(可直接将可运行源代码粘贴在下面的方框中)#include #include #i
13、nclude #define DELTA 0.0001 #define MAXFLOAT 1000; void main() register int i,j;register int k;int r,s;float *p_i=NULL;float *p_ji=NULL;float *phi_ij=NULL; float C,C_pre,validate; float * sum=NULL;float p_j;printf(请输入信源符号个数r、信宿符号个数s:n); fscanf(stdin,%d,&r); fscanf(stdin,%d,&s); p_i=(float *)calloc(r
14、,sizeof(float); p_ji=(float *)calloc(r,sizeof(float); for(i=0;ir;i+) p_jii=(float *)calloc(s,sizeof(float); phi_ij=(float *)calloc(r,sizeof(float*); for(i=0;ir;i+) phi_iji=(float *)calloc(s,sizeof(float); printf(信道转移概率矩阵P:n); for(i=0;ir;i+) for(j=0;js;j+) fscanf(stdin,%f,&p_jiij); for(i=0;ir;i+) val
15、idate=0.0; for(j=0;j=0) fprintf(stdout,invalid input data.n); exit(-1); fprintf(stdout,Starting.n); for(i=0;ir;i+) p_ii=(float)(1.0/(float)r); C=-MAXFLOAT; k=0; sum=(float *)calloc(r,sizeof(float); do k+; for(j=0;js;j+) p_j=0.0; for(i=0;i=DELTA) for(i=0;ir;i+) phi_ijij=p_ii* p_jiij/p_j; else for(i=0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 信息论与编码 信息论 编码 课程 实验 报告
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-4192790.html