当前位置:文档之家› 信息论与编码大作业

信息论与编码大作业

广西科技大学大作业课程名称:信息论与编码题目:信道编码对通信系统性能的影响学院:电气与信息工程学院专业:电子信息工程班级:学号:成绩:姓名:电话号码:信道编码对通信系统性能的影响[摘要] 简述信道编码理论,详细说明分组码的编译原理、实现方法及检错纠错能力,用MATLAB仿真有无信道编码条件下对通信系统性能的影响及信道编码在不同信道下对通信系统性能的影响,如AWGN信道和深衰落信道。

[关键词] 信道编码、分组码、MATLAB仿真、性能一、引言提高信息传输的有效性和可靠性始终是通信技术所追求的目标,而信道编码能够显著的提升信息传输的可靠性。

1948年,信息论的奠基人C.E.Shannon在他的开创性论文“通信的数学理论”中,提出了著名的有噪信道编码定理.他指出:对任何信道,只要信息传输速率R不大于信道容量C, 就一定存在这样的编码方法:在采用最大似然译码时,其误码率可以任意小.该定理在理论上给出了对给定信道通过编码所能达到的编码增益的上限,并指出了为达到理论极限应采用的译码方法.在信道编码定理中,香农提出了实现最佳编码的三个基本条件:(1 )采用随机编译码方式;(2 )编码长度L→∞ , 即分组的码组长度无限;(3)译码采用最佳的最大似然译码算法。

二、信道编码理论1、信道编码的概念与目的进行信道编码是为了提高信号传输的可靠性,改善通信系统的传输质量,研究信道编码的目标是寻找具体构造编码的理论与方法。

从原理上,构造信道码的基本思路是根据一定的规律在待发送的信息码元中人为的加入一定的多余码元,以引入最小的多余度为代价来换取最好的抗干扰性能。

信道编码是通过信道编码器和译码器实现的用于提高信道可靠性的理论和方法,是信息论的内容之一。

信道编码大致分为两类:①信道编码定理,从理论上解决理想编码器、译码器的存在性问题,也就是解决信道能传送的最大信息率的可能性和超过这个最大值时的传输问题。

②构造性的编码方法以及这些方法能达到的性能界限。

编码定理的证明,从离散信道发展到连续信道,从无记忆信道到有记忆信道,从单用户信道到多用户信道,从证明差错概率可接近于零到以指数规律逼近于零,正在不断完善。

编码方法,在离散信道中一般用代数码形式,其类型有较大发展,各种界限也不断有人提出,但尚未达到编码定理所启示的限度。

在连续信道中常采用正交函数系来代表消息,这在极限情况下可达到编码定理的限度,不是所有信道的编码定理都已被证明。

2、信道编码的分类信道编码可以分成分组码、卷积码和 循环冗余码3类。

分组码是把若干个输入信号变成一个更长的输出序列的编码方式,它通过提供编码的冗余度来实现对信号的检错和纠错。

假设输入信号是一个长度为k 的向量x ,经过分组编码之后的输出信号时一个长度为n 的向量y ,则这个分组编码表示为(),n k ,其中信息位的长度等于k ,码长位n ,监督位的长度r n k =-,编码效率等于/1/k n r n =-.对于分组码,输出序列y 一般可以表示成输入向量x 与生成矩阵G 的乘积,其中G 是一个k 行n 列的矩阵。

BCH 码是一种特别重要的分组编码。

它是根据3个发明人的名字Bose,Chaudhuri Hocguenghem 命名的。

BCH 码的重要性在于它解决了生成多项式与纠错能力至今的关系问题,可以方便的纠正多个随机错误。

对于特定的码字长度n ,BCH 码只能对特定的长度为k 的信息序列进行编码。

Reed-Slolmon 码是一种具有很强纠错能力的多进制BCH 码(简称RS 码),它是以两个发明人的名字Reed 和Solomon 命名的。

对于一个M 进制的RS 码,它的输入和输出信号的范围都等于[]0,1M -,其中2m M =。

RS 码的码长度121m n M =-=-,如果信息位的长度等于k ,则监督位的长度r n k =-另外,RS 码具有很强的纠错能力,假设它能够纠正t 个错误,则RS 码的监督位长度r 和t 之间应该满足关系2r n k t =-=,因此,RS 码的长度与信息为长度之间的差值应该是一个偶数,同时RS 码的最小码元距离为:0121d r t =+=+RS 码的输入信号还可以用二进制符号来表示,每个M 进制符号可以表示成m 位二进制符号。

循环冗余码CRC 是一种是用相当频繁的检错码。

与分组码不同的是循环冗余码不具有纠错能力。

当接收端检测到传输错误时候,它并不去纠正这个传输错误,而是要求发送端重新发送这个信号序列。

在循环冗余码的编码过程中,发送端对一个特定长度的信息序列计算得到一个循环冗余码,并且把这个循环冗余码附加到原来的信息序列的末尾一起发送出去。

接收端接收到带有循环冗余码的信号后,从中分离出信息序列和循环冗余码,然后根据接收到的信息位序列重新计算循环冗余码。

如果这个重新计算得到的循环冗余码与分离出来的循环冗余码不同,则接收信号序列存在着传输错误。

这时候接收端就会要求发送端饿重新发送这个信号序列,通过合格过程实现对信号的纠错。

卷积编码与分组码不同。

在分组码中任何一段规定时间内编码器的输出万群决定于这段时间中的输入信号;而在卷积码中任何一段规定时间的n 个码元不仅取决于这段时间内的k 个信息位,而且还取决于前1N -段时间内的信息位,这个N 就成为卷积码的约束长度。

卷积编码器的表示有两种方式:用多项式表示以及用trellis 图表示。

卷积编码器的多项式表示由3部分组成:约束长度、生成多项式以及反馈多相似。

如果卷积编码器只有一个输入时它的约束长度是一个标量,并且等于卷积编码器中储存的信息位的个数(包括移位寄存器的个数以及当前按的输入信号)。

如果卷积编码器有多个输入,则约束长度是一个向量,其中的每一个元素对应于一个输入信号在卷积编码器中存储的信息位的个数。

假设卷积编码器有个k 输入信号和n 个输出信号,则这个卷积编码器的生成多项式是一个k 行n 列的矩阵()ij k n G g ⨯=,其中的每一个元素ij g 表示第i 个输入信号对第j 个输出信号的影响。

如果第i 个输入信号对第j 个输出信号有影响则ij g =1;否则ij g=0。

对于带反馈的卷积编码器,还需要指定相应的反馈多项式,如果卷积编码器只有一个输入信号则反馈多项式是一个标量。

当卷积编码器有多个输入信号时,反馈多项式是一个向量,它的长度等于卷积编码器输入信号的个数。

3、信道编码的实质信道编码的实质就是在信息码中增加一定数量的多余码元(称为监督码元),使它们满足一定的约束关系,这样由信息码元和监督码元共同组成一个由信道传输的码字。

举例而言,欲传输k 位信息,经过编码得到长为n(n>k)的码字,则增加了 n - k = r 位多余码元,我们定义 R = k / n 为编码效率。

4、 信道编码公式令信息速率为fb ,经过编码以后的速率为ft ,定义:R =fb/ft 为编码率。

则对于任何一个信道,总存在一个截止速率R0,只要R <R0,总可以达到:BER <CR2-nR0,其中CR 为某个常数,n 为编码的约束长度。

对于等概二进码、AWGN 信道,有:三、线性分组码的编译码原理1、 线性分组码的基本概念一个[n ,k ]线性分组码, 是把信息划成k 个码元为一段(称为信息组), 通过编码器变成长为n 个 码元的一组, 作为[n , k ]线性分组码的一)1(log 100/20N E R b e R -+-=121ln 1)1(000-=-R b R N E个码字。

若每位码元的取值有q 种(q 为素数幂), 则共有qk 个码字。

n 长的数组共有qn 组, 在二进制情况下, 有2n 个数组。

显然, qn 个n 维数组(n 重)组成一个GF(q)上的n 维线性空间。

如果qk(或2k)个码字集合构成了一个k 维线性子空间, 则称它是一个[n ,k ]线性分组码。

即将k 维k 重信息空间的元素线性映射到n 维n 重矢量空间(接收矢量/收码) 的k 维n 重子空间(码空间)。

如下图为[7,3]码2、生成矩阵和校验矩阵 生成矩阵:G 称为生成矩阵,因为可以用它产生整个码组A ,即有生成矩阵的性质:具有[IkQ]形式的生成矩阵称为典型生成矩阵。

由典型生成矩阵得出的码组A 中,信息位的位置不变,监督位附加于其后。

这种形式的码组称为系统码。

矩阵G 的各行也必须是线性无关的。

如果已有k 个线性无关的码组,则可以将其用来作为生成矩阵G ,并由它生成其余码组。

监督矩阵:监督矩阵可用来校验和纠错。

[][]G34560123456a a a a a a a a a a a A ==[]⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡==0110001101001011001001111000 Q G k I []r PI H =⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=001101101011011001110四、MATLAB仿真源程序及说明采用模块化编程,把每个功能独立成各个模块,让程序更清晰。

首先介绍各个子程序及其实现的基本功能。

运行环境为Matlab2016版本通信过程的每个模块写成子程序函数:Channelcoding 为信道编码函数Channeldecoding 为信道解码纠错子函数Interwaving 为交积子函数Deinterwaving 为解交积子函数addfade为向信道加入衰落参数的子函数awgn 为库函数,向信源加高斯白噪声pskmod 为库函数,用于信号调制,输出为复数pskdemod 为库函数,用于信号解调信道编码子程序:%信道编码子函数,sym为编码码流,G为生成矩阵,k为编码方式的长度,如(7,4)码的4function bitcoded=channelcoding(sym,G,k)A=vec2mat(sym,k);U=A*G;U=mod(U,2);bitcoded=reshape(U',1,[]);信道解码子程序:function bitdecoded=channeldecoding(recode,Etab,Smatrix,H,n,k)% 前向纠错函数,实现纠错功能% bidecoded为纠错后返回的比特流% recode为输入的比特流% E为错误图样表,S为对应的伴随式表% H为监督矩阵,n,k为码的类型,如(7,4)码,n=7,k=4row=length(recode)/n; %行数E=zeros(row,n); %错误图样RM=zeros(row,n); %纠错之后的矩阵R=vec2mat(recode,n);S=R*H'; %伴随矩阵S=mod(S,2);for i=1:rowfor j=1:2^(n-k) %查表纠错if(S(i,:)==Smatrix(j,:))E(i,:)=Etab(j,:);RM(i,:)=R(i,:)+E(i,:);RM(i,:)=mod(RM(i,:),2);break;endendendbitdecoded=reshape(RM',1,[]); %转化为比特流交织子程序:function retbit=interweaving(bitstream,row,col)%功能:实现对输入比特的交积% retbit为交积后返回的比特流向量% bitstream 为需要交积的比特流向量% row 和 col为交积器的行和列,% 通过改变col就可以改变交积深度retbit=zeros(1,length(bitstream));bitarr=vec2mat(bitstream,row);bitarr=bitarr';for i=1:length(bitstream)/(row*col)temp=bitarr(:,((i-1)*col+1):i*col);retbit(1,((i-1)*(row*col)+1):(i*(row*col)))=reshape(temp',1,[]); end解交织子程序:function retbits=deinterweaving(bitstream,row,col)%功能:实现对输入比特的解交积%rebits为解交积后返回的比特流% bitstream输入的比特流%row 和 col为交积器的行和列,通过改变col就可以改变交积器的长度 retbits=zeros(1,length(bitstream));bitarr=vec2mat(bitstream,col);for i=1:length(bitstream)/(row*col)temp=bitarr((i-1)*row+1:i*row,:);retbits(1,(i-1)*row*col+1:i*row*col)=reshape(temp,1,[]); end信道衰落子程序:function code=addfade(modcode,Tf,isperiod,isfade)%功能:向传输序列modcode叠加衰落性信道的衰落参数k(t)%code为加入衰减参数之后返回的序列。

相关主题