您好,欢迎访问三七文档
信道容量的迭代算—彭海军研究信道的目的是要讨论信道中平均每个符号所能传送的信息量,而将最大的信息传输率称为信道容量。由于对于普通的线性信道(信道矩阵r=s),直接可以采用lnjjCe求解信道容量。但当信道矩阵rs时,该方法实现比较困难,因此需采用迭代算进行反复计算。一算法原理设输入随机变量为X,输出为Y,由信道容量的定义可知max{I(X;Y)}C。因而求信道容量,可转化为求X,Y的互信息量。首先根据互信息公式得到:(y|x)(X;Y)(x)(y|x)ln(x)(y|x)jiijiijijiipIpppp(1)要求信道容量C就是要在(x)ip的约束下,求(X;Y)I的极大值。首先引入后验概率,即:(x)(y|x)(x|y)(x)(y|x)ijiijijiippqpp(2)将(2)式代入到(1)中,即可得到(|)(X;Y)(x)(y|x)ln()jiijiijiqxyIpppx(3)迭代算法的要点是,当信道固定(即(y|x)jip固定)时,把(X;Y)I看成()ipx和(|)jiqxy的函数,用(3)进行信道容量计算的迭代。每一次迭代由两步组成(其中n表示迭代次序):(1)将(n)()ipx固定,在约束(|)1jiiqxy的条件下改变(|)jiqxy,得到(X;Y)I的最大值,记为(n)(n)(X;Y)C(p(x);q(x|y))C(n,n)iijI;此时(n)q(x|y)ij满足(2)式;重写为:(n)(n)(n)(x)p(y|x)(x|y)(x)p(y|x)ijiijijipqp(4)(2)将(n)q(x|y)ij固定,在约束p()1jix的条件下改变()ipx,得到(X;Y)I的极大值,记为(n1)(n)(X;Y)(p(x);q(x|y))C(n1,n)iijIC;此时满足(n)(n1)(n)exp(y|x)lnq(x|y)(x)exp(y|x)lnq(x|y)jiijjijiijijppp(5)由上可得(4)与(5)是迭代的基本公式。计算时,先选取一组(n1)(x)(n1)ip的初始值,通常选取均匀分布,由(4)计算(n)(x|y)ijq,依次反复计算下去。每次迭代都要利用(3)计算(X;Y)I的值。通过设置门限值,当相邻的两次计算(X;Y)I的误差小于门限值时,就结束迭代过程,此时(X;Y)I的值就是信道容量C。二程序流程图(0)(x)ip输入是否(n)1(y|x)exp(y|x)ln(y)sjiijijjPaPq(i=1,2...)(n)(n)(x)iiiupa(n)(n)22log(u),log(max(a))LUiIILUIILCIp(x)a(x)=(x)aiiiiiipp图1.1信道容量迭代算法流程图三实验总结分析设信源输入为等概率1/R,设输入的信道矩阵为R*S:0.50.2500.25010000100.2500.250.5取0.4时,可以得到信道容量为C=1.28082,直接采用一般的计算方法进行计算:2002log2log(2222)log511.3219jjC(6)误差为3.1%,这个误差与之前选择的ε选取和计算机计算精度有关。通过改变ε选取的值可以得到表1.1关系:ε值信道容量C实际误差0.41.280823.1%0.071.204248.9%0.021.186410.3%0.011.1820310.6%表1.1ε的选取与信道容量关系因此,使用该算法计算C的时候要选取适当的ε值,才能保证值的准确性。四程序说明1、程序采用的是C++语言,编译环境为visualstudio20102、信道矩阵放在“Channel_matrix.txt”中,其中初始信源为等概1/R(R表示信源个数),并放在vectorfloatpxi中。3、本程序使用#definewuchaε定义误差,因此通过改变wucha的值就可以控制迭代的次数4、程序为:channel_code.cpp信道矩阵为:Channel_matrix.txt
本文标题:信道容量的迭代算法
链接地址:https://www.777doc.com/doc-7234084 .html