欢迎来到天天文库
浏览记录
ID:1320486
大小:1.70 MB
页数:6页
时间:2017-11-10
《信息熵函数的计算》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、2014—2015学年第1学期合肥学院数理系实验报告课程名称:信息论与编码实验项目:信息熵函数的计算实验类别:综合性□设计性□验证性□专业班级:11级信息与计算科学专业姓名:学号:实验地点:数理系机房实验时间:2014.12.12指导教师:余海峰成绩:一.实验目的任选C语言,C++,或MATLAB等一种语言编写程序,计算信息熵、条件熵、联合熵,并通过2~3个运行的结果,验证程序的正确性。通过编程实现信息论的一些基本计算,熟悉和理解信息论基本概念二.实验内容程序要求:输入:信源分布,信道转移概率矩阵其中;输出:信源熵,条件熵,联合熵。三.实验方案或步骤(程序设计说明
2、)实验选用C语言编程,用一维数组存储信源分布数据,二维数组存储信道转移概率矩阵。利用循环(嵌套)语句计算以下公式并输出需要的结果:,,四.实验程序(经调试后正确的源程序)#include"stdio.h"#include"stdlib.h"#include"math.h"#defineM20//最大行数#defineN20//最大列数/*求以2为底x为顶的对数*/floatlog2(floatx){returnlog(x)/log(2);}//log2(x)/*主函数*/voidmain(){intm,n,i,j;floatH_X,H_X_Y,H_Y_X,H_XY
3、;//H(X),H(X
4、Y),H(Y
5、X),H(XY)floatP_X_Y,P_Y_X,P_XY;//P(X
6、Y),P(Y
7、X),P(XY)floatP_X[M],P_Y[N],matrix[M][N];//信源分布P(X),P(Y),信道转移概率矩阵while(1){printf("请输入信源分布的元素个数m:");scanf("%d",&m);printf("输入信源分布:");for(i=0;i8、P_X[i]);printf("请输入信道转移概率矩阵列数n:");scanf("%d",&n);printf("请按行序输入矩阵元素:");for(i=0;i9、i]);printf("信息熵H(X)=%f",H_X);//信息熵H(X)//条件熵H(X10、Y)H_X_Y=0;for(j=0;j11、Y){for(j=0;j12、og2(P_X_Y);}}printf("条件熵H(X13、Y)=%f",H_X_Y);//条件熵H(X14、Y)//条件熵H(Y15、X)H_Y_X=0;for(i=0;i16、X)=%f",H_Y_X);//条件熵H(Y17、X)//联合熵H(XY)H_XY=H_X+H_Y_X;printf("联合熵H(XY)=%f",H_XY);//联合熵H(18、XY)}}五.程序运行结果(列举2-3个)六.实验总结及心得体会本次实验我使用的是C语言编程没有清晰的数学思维和对概念的了解,大体思想是利用数组存储数据,然后将数学公式转化为程序语言运算并输出。程序难度虽然不大,但是难以理清程序中的变量和下标的。因此实验过程中我体会到了数学在编程中的重要性,同时加深了对“信息熵”概念的理解。七.教师评语教师签名:年月日
8、P_X[i]);printf("请输入信道转移概率矩阵列数n:");scanf("%d",&n);printf("请按行序输入矩阵元素:");for(i=0;i9、i]);printf("信息熵H(X)=%f",H_X);//信息熵H(X)//条件熵H(X10、Y)H_X_Y=0;for(j=0;j11、Y){for(j=0;j12、og2(P_X_Y);}}printf("条件熵H(X13、Y)=%f",H_X_Y);//条件熵H(X14、Y)//条件熵H(Y15、X)H_Y_X=0;for(i=0;i16、X)=%f",H_Y_X);//条件熵H(Y17、X)//联合熵H(XY)H_XY=H_X+H_Y_X;printf("联合熵H(XY)=%f",H_XY);//联合熵H(18、XY)}}五.程序运行结果(列举2-3个)六.实验总结及心得体会本次实验我使用的是C语言编程没有清晰的数学思维和对概念的了解,大体思想是利用数组存储数据,然后将数学公式转化为程序语言运算并输出。程序难度虽然不大,但是难以理清程序中的变量和下标的。因此实验过程中我体会到了数学在编程中的重要性,同时加深了对“信息熵”概念的理解。七.教师评语教师签名:年月日
9、i]);printf("信息熵H(X)=%f",H_X);//信息熵H(X)//条件熵H(X
10、Y)H_X_Y=0;for(j=0;j11、Y){for(j=0;j12、og2(P_X_Y);}}printf("条件熵H(X13、Y)=%f",H_X_Y);//条件熵H(X14、Y)//条件熵H(Y15、X)H_Y_X=0;for(i=0;i16、X)=%f",H_Y_X);//条件熵H(Y17、X)//联合熵H(XY)H_XY=H_X+H_Y_X;printf("联合熵H(XY)=%f",H_XY);//联合熵H(18、XY)}}五.程序运行结果(列举2-3个)六.实验总结及心得体会本次实验我使用的是C语言编程没有清晰的数学思维和对概念的了解,大体思想是利用数组存储数据,然后将数学公式转化为程序语言运算并输出。程序难度虽然不大,但是难以理清程序中的变量和下标的。因此实验过程中我体会到了数学在编程中的重要性,同时加深了对“信息熵”概念的理解。七.教师评语教师签名:年月日
11、Y){for(j=0;j12、og2(P_X_Y);}}printf("条件熵H(X13、Y)=%f",H_X_Y);//条件熵H(X14、Y)//条件熵H(Y15、X)H_Y_X=0;for(i=0;i16、X)=%f",H_Y_X);//条件熵H(Y17、X)//联合熵H(XY)H_XY=H_X+H_Y_X;printf("联合熵H(XY)=%f",H_XY);//联合熵H(18、XY)}}五.程序运行结果(列举2-3个)六.实验总结及心得体会本次实验我使用的是C语言编程没有清晰的数学思维和对概念的了解,大体思想是利用数组存储数据,然后将数学公式转化为程序语言运算并输出。程序难度虽然不大,但是难以理清程序中的变量和下标的。因此实验过程中我体会到了数学在编程中的重要性,同时加深了对“信息熵”概念的理解。七.教师评语教师签名:年月日
12、og2(P_X_Y);}}printf("条件熵H(X
13、Y)=%f",H_X_Y);//条件熵H(X
14、Y)//条件熵H(Y
15、X)H_Y_X=0;for(i=0;i16、X)=%f",H_Y_X);//条件熵H(Y17、X)//联合熵H(XY)H_XY=H_X+H_Y_X;printf("联合熵H(XY)=%f",H_XY);//联合熵H(18、XY)}}五.程序运行结果(列举2-3个)六.实验总结及心得体会本次实验我使用的是C语言编程没有清晰的数学思维和对概念的了解,大体思想是利用数组存储数据,然后将数学公式转化为程序语言运算并输出。程序难度虽然不大,但是难以理清程序中的变量和下标的。因此实验过程中我体会到了数学在编程中的重要性,同时加深了对“信息熵”概念的理解。七.教师评语教师签名:年月日
16、X)=%f",H_Y_X);//条件熵H(Y
17、X)//联合熵H(XY)H_XY=H_X+H_Y_X;printf("联合熵H(XY)=%f",H_XY);//联合熵H(
18、XY)}}五.程序运行结果(列举2-3个)六.实验总结及心得体会本次实验我使用的是C语言编程没有清晰的数学思维和对概念的了解,大体思想是利用数组存储数据,然后将数学公式转化为程序语言运算并输出。程序难度虽然不大,但是难以理清程序中的变量和下标的。因此实验过程中我体会到了数学在编程中的重要性,同时加深了对“信息熵”概念的理解。七.教师评语教师签名:年月日
此文档下载收益归作者所有