实验二:信道容量的迭代算法.doc
文本预览下载声明
实验 信道容量
一、实验目的:
了解信道容量的计算方法
二、实验内容与原理:
内容:
1. 令pe1(pe2(0.1和pe1(pe2(0.01,分别计算该对称信道的信道容量和最佳分布;
2. 令pe1(0.15,pe2(0.1和pe1(0.075pe2(0.01,分别计算该信道的信道容量和最
佳分布;信道容量是信息传输率的极限,当信息传输率小于信道容量时,通过信道编码,能够实现几乎无失真的数据传输;当数据分布满足最佳分布时,实现信源与信道的匹配,使得信息传输率能够达到信道容量。本实验利用信道容量的迭代算法,使用计算机完成信道容量的计算。
#includestdio.h
#includemath.h
int main()
{
double Pe1,Pe2,Pa1_=0,Pa2_=0; double b1a1,b2a1,b1a2,b2a2;
double Pa1=0,Pa2=0;
double I=0,max=0;//平均互信息量,最大平均互信息量
int count=0;
printf(输入信道容量参数Pe1:);scanf(%lf,Pe1);
printf(输入信道容量参数Pe2:);scanf(%lf,Pe2);
printf(信道容量参数:Pe1=%lf Pe2=%f\n,Pe1,Pe2);
b1a1=1-Pe1;
b2a1=Pe1;
b1a2=Pe2;
b2a2=1-Pe2;
for(Pa1=0.01;Pa1=1;Pa1=Pa1+0.01)
{ Pa2=1-Pa1;
count=count+1;
I=Pa1*b1a1*( log( b1a1/(Pa1*b1a1+Pa2*b1a2) )/log(2) )
+Pa1*b2a1*( log(b2a1/(Pa1*b2a1+Pa2*b2a2) )/log(2) )
+Pa2*b1a2*( log(b1a2/(Pa1*b1a1+Pa2*b1a2) )/log(2) )
+Pa2*b2a2*( log(b2a2/(Pa1*b2a1+Pa2*b2a2) )/log(2) );
printf(%10lf,I);
if (Imax)
{
max=I;
Pa1_=Pa1,Pa2_=Pa2;
}
else
continue;
}
printf(\n);
printf( 一共计算机了:%d\n,count);
printf( 最大互信息量为:%lf\n,max);
printf( 最大互信息量的P(a1)=%lf;P(a2)=%lf\n,Pa1_,Pa2_);
}
四、运行结果
显示全部