基于Viterbi算法的卷积码性能分析_第1页
基于Viterbi算法的卷积码性能分析_第2页
基于Viterbi算法的卷积码性能分析_第3页
基于Viterbi算法的卷积码性能分析_第4页
基于Viterbi算法的卷积码性能分析_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、移动通信原理课程论文基于Viterbi算法的卷积码性能分析leengsmile 摘要:本文主要对卷积码编码和Viterbi译码进行MATLAB实现,并在此基础上分析移位寄存器对纠错能力的影响。论文首先根据MATLAB的存储特点及函数特征,主要介绍卷积编码的原理,同时给出MATLAB实现的核心代码。然后根据MATLAB本身擅长矩阵运算的特点,实现了硬判决的维特比译码。本文所实现的卷积码编码和维特比译码程序能够对(n, k, K n > 1的情况做出正确的编译码,解决了部分教科书仅实现了(1, k, K译码的情况。文章最后根据所实现的卷积编码维特比译码程序,分别对n=1和n>1的卷积码

2、编码结构的性能进行数值仿真。在一定信噪比下,卷积编码能够有效的降低信道误码率,n>1的误码率在较低信噪比时高于n=1的情况。关键字:卷积码维特比硬判决Viterbi MATLAB1.引言:为了减小信道噪声和干扰对译码输出的影响,通常需要对信息码元进行信道编码。信道编码在发送端对信息码元添加监督码元,在接收端利用信息码元与监督码元之间的规律,发现和纠正差错,以提高信息码元传输可靠性。卷积码属于信道编码中的非分组编码,与循环码等分组编码不同,卷积码通过在码元之间引入记忆性,使得当前编码输出与过去时刻的编码相关。卷积码可以表示成(n,k,m,其中k表示每次输入编码器的位数,n是每次对应输出的位

3、数,m在本文中定义为约束长度,是编码器中所能存储的码元数(包括当前输入,m的定义与许多文献不同。1本文工作主要分为两部分:1 对卷积码编译码进行实现。考虑到MATLAB的广泛应用,故本文主要针对MATLAB的特点,对卷积码编码、维特比译码进行详实的叙述,并辅以实例说明。并侧重于编码的实现,一方面是由于MATLAB的特性及提供的数据结构所决定,另一方面是由于在本文所实现的卷积码编码,与课本中所叙述的方式略有不同,本文将一一介绍这些特点。2 对约束长度m和编码器输入位数k的不同取值进行仿真,并总结其规律。2.卷积码编码:卷积码可以很容易地通过例子来描述,图- 1是生成码率为k/n = 1/2 的卷

4、积码移位寄存器电路。输入比特在时钟处罚下从左边移入到电路中,每次输入k = 1 位,分别去两个模2加法器的输出值并复用后得到编码器的输出。 图- 1 编码为1/2的卷积码编码器4在MATLAB中,描述一个卷积码编码器需要23个参数,取决于编码器的前向反馈还是后项反馈:约束长度生成多项式反馈多项式约束长度编码器的约束长度组成了一个向量,该向量的长度是编码器框图中输入的数目,向量的各个元素表示了存储在移位寄存器中的比特数,包括当前输入。生成多项式若卷积码表示为(n,k,m,则编码生成矩阵是一个k×n的矩阵,其(i,j元素表示第i 路输入与第j路输出的关系。在MATLAB中可以如下构造该矩

5、阵:i.用二进制数据表示连接情况。若移位寄存器与模2加法器有交点,则在该处标”1”,否则标”0”。在该二进制数最左边的比特表示当前输入,最右边的节点对应着移位寄存器保存的最早的数据。ii.从最右边开始,将二进制数每三位一组转换成八进制。若比特数不是3的倍数,则在最左边添”0”。(例如,将1101010表示为001 101 010,然后转为八进制152在MATLAB中可以用如下指令实现二进制到八进制的转换:str2num(dec2base(bin2dec('110',8反馈多项式反馈多项式通过一个向量刻画,向量的长度即为每次输入的比特数k,向量的元素用八进制表示,该向量表示对每一

6、路输出的影响。其构造方法与生成矩阵相同,首先,用1中所述方式构造二进制的表示形式,然后将所得的二进制转换成八进制。若编码器输入后项反馈型且是系统的,则编码矩阵和与系统码相关联的反馈连接参数应当具有相同值。下面的框图表示一个效率为1/2的具有后项反馈的系统码编码器。 图 - 2 系统码编码器的反馈示意图4由图- 2可知,编码器的约束长度为5,编码器多项式矩阵为37 33,反馈连接多项式为37。由于第一路输出与系统比特相关联,第一个编码生成多项式与反馈连接多项式相一致。反馈多项式的二进制表示形式为1 1 1 1 1,与编码框图中的上支路中的二进制数相一致。这些二进制数表示了移位寄存器与模2加法器之

7、间的连接关系,第一个”1”表示输入比特。该二进制数的八进制表示形式为37。第二路生成多项式为1 1 0 1 1,与下支路的二进制数相对应,其八进制数为33。在MATLAB中可以调用poly2trellis函数将上述三个因素,约束长度、生成多项式、反馈多项式,表示为MATLAB中的Trellis结构。图- 3是MATLAB中Trellis结构示意图,编码器有4个状态(二进制表示为0011,一位输入,两位输出。实心箭头表示表示输入为”0”,虚箭头表示输入为”1”,箭头旁标注的八进制数表示输出。 图 - 3 trellis 结构中的状态转移4在MATLAB中,Trellis结构包含5个属性,如表-

8、1所示。表 - 1 Trellis 结构属性及其取值 在表- 1中, 1之间的整数。i行j列的元素表示若开始状态为i-1,当输入比特数据为十进制的j-1时,所对应的下一个状态。同样地,在outputs矩阵中,i行j列的元素表示若开始状态为i-1,当输入比特数据为十进制的j-1时,所对应八进制输出。一般地,在MATLAB中,通过poly2trellis函数可以将约束长度、生成矩阵所表示的编码器转换为Trellis结构表示的编码器,而Trellis结构更直观地体现了输出、输入之间的转换关系。例如,对于图- 1所表示的编码器,其约束长度为3,生成矩阵为6 7,则其Trellis结构可以通过如下指令获

9、得ConstraintLength = 3;CodeGenerator = 6 7;trellis = poly2trellis(ConstraintLength, CodeGenerator;所得到的trellis结构的各个属性依次为:numInputSymbols: 2numOutputSymbols: 4numStates: 4nextStates: 4x2 doubleoutputs: 4x2 double其中nextStates矩阵,outputs矩阵分别为0 2 0 30 2 1 21 3 3 01 32 1在程序中,卷积码编码函数的声明为:function code = conv

10、olution_encode(msg, trel其中msg 为待编码的码元,用二进制表示,trel 为trellis 结构code为卷积码输出其实现过程比较容易,只需要通过遍历,将输入序列分割、转换成十进制,然后不断查表,更新输出和当前状态。其核心实现代码如下:for i = 1:k:length(msgmsgbin = msg(i : i + k -1;msgdec = bin2dec( .num2str( msgbin(:' .;code(j = outputs(currentStates + 1, msgdec + 1;currentStates = nextStates(cur

11、rentStates + 1, msgdec + 1;j = j + 1;endcode = dec2bin(code, n - 48;仍对于图- 1所示的编码电路,当待编码码元为1 0 1 1 1 1 1 0 0 0 0 0 0编码输出为:1 1 1 1 1 0 0 0 0 1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0 0其中待编码码元后的若干个”0”将在Viterbi译码中解释,主要原因是Viterbi译码从全0状态出发,并最终回到全”0”状态。33.维特比译码:卷积码的译码可以分为两类:代数译码的门限译码、概率译码的序列译码与维特比译码。1而维特比算法是实现卷积码最大似

12、然译码的巧妙方式。最大似然译码的功能是在给定接收到的信道输出序列的情况下,找出与已发送序列最相似的码字序列。2在数字通信中,通信可靠度一般采用误码率P e,最小平均误码率等效于最大后验概率,mmmm mm PP ee =mmmm mm PP (ee |YY =mmmm mm PP (YY PP (CC CC |YY YY YY (1P (Y 为接收信号序列的概率,与译码方式无关;e 为差错序列;C 为接收端恢复的码组;C 为发送的码组。根据Bayes 准则,在信源等先验概率的条件下,最大后验概率准则与最大似然准则等效。1PP (ee |YY =PP (CC PP (YY |ee (2 若P(C

13、为等概率分布时,有mmmmmmPPCC =CCYY=mmmmmm PP (YY |CC =CC (3 对于二进制对称信道BSC ,最大似然准则可等效为最小汉明距离准则,即mmmmmm ll ll PP (YY |CC =CC =mmmm mm dd (YY ,CC =mmmm mm dd (yy ll ,cc ll LL10 (4在维特比译码中,硬盘决中采用汉明准则,软判决常采用最大似然准则,本文只考虑硬盘决译码方式。维特比硬盘决译码算法可以简单表述如下:i. 路径度量distance(2, , 2k = , distance(1 = 0前项节点 prev (x, y= ,其中x = 1,nu

14、mStates y = 1, ,lencode将二进制比特流以n 为单位分组,ii. 是否遍历所有输入,若是,执行vii ,否则初始化最小距离mininumdistance = iii. 第j 组输入t ,当前状态依次为s ,下一状态为nextStates(s, tiv. 译码距离为currentdistance ,并更新到下一状态最短距离mininumdistance ,若更新,执行iv ,否则执行vv.保存前项节点s ,纠错后的输入t vi. distance = mininumdistance ,执行iivii. 结束,回溯,并输出纠错后的卷积码编码C 在MATLAB 中的核心代码如下:

15、lenDecode = floor( length(code/n ;prev = inf(numStates, lenDecode;distance = inf(numStates, 1;distance(1, 1 = 0;codedCorreceted = inf(lenDecode, 1;input = inf(numStates, lenDecode;for j = 1:lenDecode % substract the jth convcodebin = code( (j - 1*n + 1 : j*n ;mininumdistance = inf(numStates, 1;for s

16、 = 1 : numStatesfor t = 1 : numInputSymbols % t denoted to be 'input + 1'outputoct = outputs(s, t;outputbit = dec2bin( .oct2dec(outputoct, n .- 48;next = nextStates(s, t + 1; % to index from 1 to 2k,currentdistance = biterr(codebin, outputbit;d = distance(s, 1 + currentdistance;if (d < mi

17、ninumdistance( next, 1mininumdistance( next, 1 = d;prev(next, j = s;input(next, j = t;codedCorreceted(j, 1 = outputoct;endendenddistance = mininumdistance;end在MATLAB中的Viterbi 译码函数声明为:function decoded, convdecoded = viterbi_decode(.code,ConstraintLength, CodeGenerator 其中code,ConstraintLength, CodeGen

18、erator如前文所述,依次为接收到到的卷积码编码信号,约束长度,生成矩阵,其中code可能含有噪声所致的误码。对前文的发送序列1 0 1 1 1 1 1 0 0 0 0 0 0,其卷积码输出为:1 1 1 1 1 0 0 0 0 1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0 0若在接收端接收到的序列为:0 1 1 0 1 0 0 1 0 1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0 0其中在1、4、8位已发生错误,经过Viterbi译码后有1 0 1 1 1 1 1 0 0 0 0 0 0可见经Viterbi译码,由于信道噪声等造成的误码已被纠正,正由于信

19、道编码的纠错特性,才使得通信系统的可靠性得以提高。4.性能仿真:通过MATLAB仿真,得到卷积码编码和维特比译码下的误码率曲线,如图- 4所示。图 - 4 约束长度为3,编码生成矩阵为7 5的误码率曲线图 - 4中的星线是未经过编码的误码率曲线,矩形方块所标示的是经过如图 - 1所示的卷积码模块编码,维特比译码的误码率曲线,其约束长度为3,编码生成矩阵为7 5。图 - 6是当卷积码编码器长度为n=2时的误码率性能曲线,其编码器的编码结构如图 - 5所示。图 - 5 约束长度ConstraintLength = 5 4;编码生成矩阵为CodeGenerator = 23 35 0; 0 5 13;编码器示意图4-5-4-3-2-101234510 101010SNR / dB B E R图 - 6 不同译码长度、编码生成矩阵下的误码率性能比较5. 结论:通过计算机仿真可知,通过信道编码,可以适当的纠正信道噪声造成的误码;对于不同的编码结构,一般有着不同的抗噪声性能;不同的约束长度m 一般靠噪声性能不同,且对噪声功率一定的情况下,m 越大,抗噪声性能越强;当信道噪声功率增加,即信噪比下降到约为0dB 时,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论