您好,欢迎访问三七文档
《信息论与编码》第一次实验报告学号:姓名:实验名称:信道容量的迭代算法实验日期:指导教师:一、实验内容和要求(1)已知:信源符号个数r、信宿符号个数s、信道转移概率矩阵P。(2)输入:任意的一个信道转移概率矩阵。信源符号个数、信宿符号个数和每个具体的转移概率在运行时从键盘输入。(3)输出:最佳信源分布P*,信道容量C。二.实验步骤1:确定各变量的含义(r,s,(jip))2:初始化信源分布ip=1/r,相对误差门限,C=—3:实现下述式子的程序4:同35:同4C2211log[exp(log)]rsjiijrjp21211exp(log)exp(log)sjiijjrsjiijrjppip1ijirijiippppij6:利用循环计算CC,到达条件即得到信道容量。7:输出信道容量及信道矩阵P*=()irp,C8:结束程序三、算法思想重述及核心代码算法核心代码:for(i=0;ir;i++)Px[i]=1.0/r;do{k++;for(j=0;js;j++){doubledenominator=0;for(i=0;ir;i++)denominator+=Px[i]*Pij[i][j];for(i=0;ir;i++)Phi_ji[i][j]=Px[i]*Pij[i][j]/denominator;}double*temp=newdouble[r];for(i=0;ir;i++){temp[i]=0;for(j=0;js;j++){temp[i]+=Pij[i][j]*log(Phi_ji[i][j]delta?delta:Phi_ji[i][j])/log(2);}temp[i]=pow(2,temp[i]);}doubledenominator=0;for(i=0;ir;i++)denominator+=temp[i];for(i=0;ir;i++)Px[i]=temp[i]/denominator;C_old=C_new;C_new=log(denominator)/log(2);doublea=fabs(C_new-C_old)/C_new;}while(fabs(C_new-C_old)/C_newdelta&&k100);算法思想:在于通过迭代算法计算信道容量,初始化信源分布,设置信道容量的相对误差限,通过三个迭代公式计算ccCCkkkkk111|c|的值,同时计算误差限与,判断是否达到需要求解的信道容量。四、实验结果及分析实验结果分析:从实验结果可以看出,通过三个公式的迭代能在一定的精度范围内能,计算出信道矩阵的容量,但是算法的收敛速度与信源初始概率分布的选择有很大的关系,初始分布越接近最佳分布,则收敛速度越快,否则越慢。五、实验体会、实验中遇到的问题分析实验体会:实验中的问题与分析:
本文标题:信息容量的算法
链接地址:https://www.777doc.com/doc-2691983 .html