《信息论与编码》课程实验报告.doc
文本预览下载声明
本科生实验报告
实验课程 信息论与编码 学院名称 管理科学学院 专业名称 信息与计算科学 学生姓名 章乾 学生学号 201207020114 指导教师 范安东 实验地点 6C402 实验成绩
二〇 一四 年 十 月 二〇 一四 年 十一 月
实验一 离散信源信息量的计算(一)
1 实验内容
(1)熟悉利用srand()函数产生随机离散信源概率空间的方法;
(2)计算随机离散信源的各种信息量:H(X)、H(XY)、H(Y);
2 数据结构与算法描述
变量/函数名 类 型 说 明 srand() 生成随机随机数 b[i][j] double 联合概率矩阵 PX[3] double 声明x的概率矩阵 PY[4] double 声明y的概率矩阵
3 实验数据与实验结果(可用文字描述或贴图的方式进行说明)
1)测试数据
随机生成数据
2)实验结果
4 程序代码清单(可直接将可运行源代码粘贴在下面的方框中)
#includestdlib.h
#includestdio.h
#includetime.h
#includemath.h
int i,j,k;
int sum=0; /*求和,为单位化准备*/
int a[3][4]; /*单位化前的准备矩阵,由随机数生成*/
double b[3][4]; /*单位化矩阵*/
double c[3][4]; /*声明条件矩阵1*/
double d[3][4]; /*声明条件矩阵2*/
double PX[3]={0}; /*声明x的概率矩阵*/
double PY[4]={0}; /*声明y的概率矩阵*/
double HXY=0;
double hx=0;
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++)
{
a[i][j]=rand()%8+1; /*+1是因为避免概率为0,熵为无穷大*/
sum+=a[i][j];
}
for(i=0;i3;i++) /*联合概率矩阵*/
for(j=0;j4;j++)
b[i][j]=(double)a[i][j]/(double)sum;
printf(联合概率矩阵:\n);
for(i=0;i3;i++) /*输出联合概率矩阵*/
{
for(j=0;j4;j++)
printf(%f ,b[i][j]);
}
for(i=0;i3;i++) /*x的概率矩阵*/
for(j=0;j4;j++)
{
PX[i]+=b[i][j];
}
printf(x的概率矩阵:\n);
for(i=0;i3;i++) /*输出x的概率矩阵*/
{
printf(PX[%d]=%f ,i+1,PX[i]);
printf(\n);
}
/*y的概率矩阵*/
for(j=0;j4;j++)
for(i=0;i3;i++)
{
PY[j]+=b[i][j];
}
printf(y的概率矩阵:\n);
for(j=0;j4;j++) /*输出y的概率矩阵*/
{
printf(PY[%d]=%f ,j+1,PY[j]);
printf(\n);
显示全部