中文摘要信道是信息传递的通道,承担信息的传输和储存的任务,是构成通信系统的重要组成部分。
信道容量是指信道能够传输信息量的大小。
信道容量的研究在现实中有着非常重要的理论意义。
而信道容量的计算是一个比较复杂的问题,所以我们要借助于数学软件Matlab来解决这个难题。
本文的第一部分从信道容量的基本概念、基本原理、信道模型及分类等方面系统的介绍了信道容量。
并在此基础上,介绍了一般信道容量的计算步骤。
本文的第二部分开始介绍信道容量的迭代算法及迭代算法在Matlab中的实现,举例检验迭代算法在Matlab中实现的程序的可行性关键词信道容量 Matlab 迭代算法AbstractChannel is a channel of information transmission. And it take on the task of information transmission and storage. Channel is an important part of communication system. Channel capacity is the size of the amount of information can be transmitted. It has important significances in reality. However, calculating the channel capacity is a complex issue. So we must use the mathematical software Matlab to solve this problem.The first part of the article, it introduces channel capacity by the basic concepts, principles and the classification of channel models. On this basis, introduce and discuss the calculation steps of the general channel capacity.The second part of the article, it introduces the Iterative algorithm of the channel capacity and implementes the iterative algorithm in Matlab. After that, by realizing the feasibility of the procedure, we make some examples. And also analyze the procedure.Key word :channel capacity、matlab目录引言 (6)1、离散信道的数学模型 (6)2、信道容量和最佳输入概率分布 (6)2.1信道容量 (6)2.2最佳输入概率分布 (7)3、信道容量和平均互信息的计算步骤 (7)3.1平均互信息的计算 (7)3.2信道容量的计算 (7)4、信道容量的迭代算法 (8)5、实例分析 (9)结论 (10)参考文献 (11)附 (12)引言本文主要结合实例对离散信道及其信道容量进行相关阐述,及用迭代算法实现离散信道容量1、离散信道的数学模型设离散信道的输入为一个随机变量X ,相应的输出的随机变量为Y ,如图所示: 规定一个离散信道应有三个参数: 输入信号:X={X1, X2, …, XN} 输出信号:Y={Y1, Y2, …, YN}信道转移概率:P(y|x) 描述了输入信号和输出信号之间的依赖关系 。
根据P(y|x) ,可对离散信道分类如下:(1)无干扰信道:输入信号与输出信号 有一一对应关系(2)有干扰无记忆信道:任意时刻输出符号只与对应时刻的输入符号有关;(3)有干扰有记忆信道:这是最一般的信道。
2、信道容量和最佳输入概率分布2、1 信道容量我们先定义信息传输率:R=I(X,Y)=[H(X)-H(X/Y)]=[H(Y)-H(Y/X)] 比特/符号。
互信息I(X;Y)是输入符号分布概率)(i a p 和信道转移概率)|(i j a b p 的函数。
对于某特定信道,转移概率)|(i j a b p 已经确定,则互信息就是关于输1()()(/)0()y f x y f x P y x y f x =⎧==⎨≠⎩,并且12121(|)(|)(|)Ni i i P y x P y y x x P y x ===∏N N ...y ...x ()()max{(;)}max{()(/)}P X P X C I X Y H X H X Y ==-入符号分布概率)(i a p 的 型凸函数,也就是可以找到某种概率分布)(i a p ,使I(X;Y)达到最大,该最大值就是信道所能传送的最大信息量,即信道容量(channel capacity )。
信道容量与与信源无关,它是信道的特征参数,反应的是信道的最大的信息传输能力。
2、2 最佳输入概率分布首先介绍一定理:一般离散信道达到信道容量的充要条件是输入概率分布满足该定理说明,当平均互信息达到信道容量时,信源每一个符号都对输出端输出相同的互信息。
此时满足该条件的输入概率分布即为最佳输入概率分布。
特别地对于二元对称信道P=1/2时,C =0。
不管输入概率如何,都能达到信道容量。
此信道没有实际意义,但在理论上说明信道的最佳输入分布不一定是唯一的。
3、信道容量和平均互信息的计算步骤 3、1平均互信息的计算3、2信道容量的计算()(;)0()(;)0i i a I x Y C x b I x Y C x =≠⎧⎨≤=⎩i i 对所有其p 对所有其p log 2()1()C H p H p =-=-1(/)(;)(/)log()sj i j i j j p b a I x Y p b a p b ==∑对于一般信道的求解方法,就是求解方程组移项得:令 则若r=s ,此方程有解,可以解出s 各未知数βj ,再根据得 从而信道容量求出后,计算并没有结束,必须解出相应的)(i x p ,并确认所有的)(i x p 都大于或等于0时,所求的C 才存在,因为在我们对 I(X;Y)求偏导时只限制1)(1=∑=ni i x p ,并没有限制0)(≥i x p ,所以求出的)(i x p 可能为负值,此时的C 就不存在,必须对)(i x p 进行调整再求解C.一般由迭代算法求出。
4、信道容量的迭代算法记ij i j p x y p =)|( ,i i p x p =)(,ji i i y x p ϕ=)|( i=1,2...r;j=1,2...s初始化信源分布)......,(21)0(r i p p p p p =,置迭代计数器k=0,设信道容量相对误差门限为δ,δ>0;②∑=ik i ij k i ij k ji p p p p )()()(ϕ11(/)[log ()](/)log (/)s sj i j j i j i j j P b a C P b P b a P b a ==+=∑∑log ()j j C P b β=+11(/)(/)log (/)ssji j j i j i j j P ba Pb a P b a β===∑∑()2j Cj P b β-=121jsCj β-==∑1log 2jsj C β==∑11(/)log (/)(/)log ()s sj i j i j i j j j P b a P b a P b a P b C ==-=∑∑③∑∑∑=+ijk jiijjk ji ij k i pp p ]}ln {exp[]ln exp[)()()1(ϕϕ④}]ln exp[ln{)()1(∑∑=+ijk ji ij k p C ϕ ⑤如果δ≤-=∆+++)1()()1(1k k k k CC C C)(,转向⑦ ⑥置迭代序号k+1 k,转向② ⑦输出)1()(+k i x p 的结果和)1(+k C 的结果 ⑧停止5、实例分析以教材3-4、3-6进行分析,并通过matlab 实现3-4概率转移矩阵为⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡--=εεεε1010001|X Y p ,输入信号、输出信号均为 (0,1,2);3-6的概率转移矩阵为⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=2/1002/12/12/10002/12/10002/12/1|XY p ,显然该信道为对称信道,设允许误差门限e=0.0001,分别把这两题的条件代入matlab 程序,即得信道容量C 分别为1.584963比特/符号(3-4题ε=0时)、1.000000比特/符号(3-4题ε=1/2时)、1.000000比特/符号(3-6); 与书后答案1.58、1、1基本符合,故本次设计可行。
相关程序代码见附。
结论/讨论通过本次结合课后习题对离散信道容量通过matlab程序实现,对离散信道及其信道容量又有了更深的了解,同时也对matlab对于矩阵数值迭代的功能加强了掌握。
本次设计参考了一些教材及相关论文,有相当一部分知识不甚了解,所以对于离散信道的相关知识有待进一步地去渗透。
参考文献:【1】曹雪虹、张宗橙信息论与编码清华大学出版社 2009年第二版【2】管宇离散信道容量的迭代算法应用数学与计算数学学报2006年02期附:function main()clc;p=[1 0 00 1/2 1/20 1/2 1/2]p2=[1 0 00 1 00 0 1]p3=[1/2 1/2 0 00 1/2 1/2 00 0 1/2 1/21/2 0 0 1/2]channel_cap(p1,0.0001)channel_cap(p2,0.0001)channel_cap(p3,0.0001)% Matlab实现离散信道容量的迭代算法% 功能:利用迭代算法计算离散信道的容量%参数解释%C:信道容量%P:转移概率矩阵%B:中间变量矩阵%e:信道容限%X:输入概率分布%n:迭代次数function channel_cap(P, e)n=0;C=0;C_0=0;C_1=0;[r,s]=size(P);for i=1:rif(sum(P(i,:))~=1)%检测概率转移矩阵是否行和为1.error('概率转移矩阵输入有误!!')return;endfor j=1:sif(P(i,j)<0||P(i,j)>1)%检测概率转移矩阵是否负值或大于1 error('概率转移矩阵输入有误!!')return;endendendX=ones(1,r)/r;A=zeros(1,r);B=zeros(r,s);while(1)n=n+1;for i=1:rfor j=1:sB(i,j)=log(P(i,j)/(X*P(:,j))+eps);endA(1,i)=exp(P(i,:)*B(i,:)');endC_0=log2(X*A');C_1=log2(max(A));if (abs(C_0-C_1)<e) %满足迭代终止条件停止迭代C=C_0;fprintf('迭代次数: n=%d\n',n)fprintf('信道容量: C=%f比特/符号\n',C) break; %满足后输出结果并退出elseX=(X.*A)/(X*A');continue;endEnd程序运行结果为:p1 =1.0000 0 00 0.5000 0.50000 0.5000 0.5000p2 =1 0 00 1 00 0 1p3 =0.5000 0.5000 0 0 0 0.5000 0.5000 0 0 0 0.5000 0.5000 0.5000 0 0 0.5000迭代次数: n=2信道容量: C=1.000000比特/符号迭代次数: n=1信道容量: C=1.584963比特/符号迭代次数: n=1信道容量: C=1.000000比特/符号。