MATLAB实现卷积码编译码(5)

2019-04-21 14:34

聊城大学本科毕业论文(设计)

所保留的路径与接收序列之间的似然概率为最大,所以又称为最大似然译码。这种译码的译码约束长度常为编码约束长度的数倍,因而可以纠正不多于(df/2)个错误。

维特比译码器的复杂性随m呈指数增大。实用中m不大于10。它在卫星和深空通信中有广泛的应用。在解决码间串扰和数据压缩中也可应用。 (3)序贯译码

序贯译码是根据接收序列和编码规则,在整个码树中搜索(既可以前进,也可以后退)出一条与接收序列距离(或其他量度)最小的一种算法。由于它的译码器的复杂性随m值增大而线性增长,在实用中可以选用较大的m值(如20~40)以保证更高的可靠性。许多深空和海事通信系统都采用序贯译码。

2.3.2 Viterbi译码原理

卷积码概率译码的基本思路是:以接收码流为基础,逐个计算它与其他所有可能出现的、连续的网格图路径的距离,选出其中可能性最大的一条作为译码估值输出。概率最大在大多数场合可解释为距离最小,这种最小距离译码体现的正是最大似然的准则。卷积码的最大似然译码与分组码的最大似然译码在原理上是一样的,但实现方法上略有不同。主要区别在于:分组码是孤立地求解单个码组的相似度,而卷积码是求码字序列之间的相似度。基于网格图搜索的译码是实现最大似然判决的重要方法和途径。用格图描述时,由于路径的汇聚消除了树状图中的多余度,译码过程中只需考虑整个路径集合中那些使似然函数最大的路径。如果在某一点上发现某条路径已不可能获得最大对数似然函数,就放弃这条路径,然后在剩下的“幸存”路径中重新选择路径。这样一直进行到最后第L级(L为发送序列的长度)。由于这种方法较早地丢弃了那些不可能的路径,从而减轻了译码的工作量,Viterbi译码正是基于这种想法。

对于(n, k, N)卷积码,其网格图中共2kL种状态。由网格图的前N-1条连续支路构成的路径互不相交,即最初2k_1条路径各不相同,当接收到第N条支路时,每条路径都有2条支路延伸到第N级上,而第N级上的每两条支路又都汇聚在一个节点上。在Viterbi译码算法中,把汇聚在每个节点上的两条路径的对数似然函数累加值进行比较,然后把具有较大对数似然函数累加值的路径保存下来,而丢弃另一条路径,经挑选后第N级只留下2N条幸存路径。选出的路径同它们的对数似然函数的累加值将一起被存储起来。由于每个节点引出两条支路,因此以后

16

聊城大学本科毕业论文(设计)

各级中路径的延伸都增大一倍,但比较它们的似然函数累加值后,丢弃一半,结果留存下来的路径总数保持常数。由此可见,上述译码过程中的基本操作是,“加-比-选”,即每级求出对数似然函数的累加值,然后两两比较后作出选择。有时会出现两条路径的对数似然函数累加值相等的情形,在这种情况下可以任意选择其中一条作为“幸存”路径。

卷积码的编码器从全零状态出发,最后又回到全零状态时所输出的码序列,称为结尾卷积码。因此,当序列发送完毕后,要在网格图的终结处加上(N-1)个己知的信息作为结束信息。在结束信息到来时,由于每一状态中只有与已知发送信息相符的那条支路被延伸,因而在每级比较后,幸存路径减少一半。因此,在接收到(N-1)个己知信息后,在整个网格图中就只有唯一的一条幸存路径保留下来,这就是译码所得的路径。也就是说,在己知接收到的序列的情况下,这条译码路径和发送序列是最相似的。

2.3.3 维特比译码算法性能

对于(n,k,N)卷积码,其编码存储度(移位寄存器单元的数量)为N,幸存路径有2N条。每条幸存路径(或信息序列)存储器单元数是n*D,其中,n是卷积码码组宽度,D是需要存储的码组的个数。D的取值一般考虑取m的整倍数,称D为幸存路径长度。编码存储度和幸存路径长度的取值问题关系到芯片规格、传输时延等问题。若D很大,则译码器的存储量太大而难以实用。一般情况下,当译码进行到第5级(每级包括m个时刻)以后,每个状态幸存路径的前几个分支已基本重合在一起,这就是说每个路径存储器不必存储D个很大的码序列。译码时,当译码器接收并处理完第D个码组后,译码器中的幸存路径存储器已全部存满,当译码器开始处理第D+1个码组时,他就对幸存路径存储器中的最顶端的码组做出判决并输出。

(1)适当增加幸存路径的长度可以提高译码器的纠错能力。

(2)幸存路径的长度在增加到一定值时,译码器纠错能力趋于稳定。当N值增加到6以上,误比特率降低幅度大为减小,曲线有合二为一的趋势。因此,可以认为幸存路径长度D取编码存储度的6倍以上就可以取得比较好的译码性能。 (3)选择合适的延时。路径量度(似然度)的累加选取和码字延时判决输出提高了译码的准确性,D 越大越有利于判决的正确性,但是这又和通信的实时性背道而驰,一般D 为卷积码约束长度N的5~10 倍即可,本文算法D取50。

17

聊城大学本科毕业论文(设计)

(4)留存路径的更新的描述。每个状态的留存路径选择实际上是从当前时刻往前推的,例如,在时刻t,又假设到达状态s2的路径有两个,分别为s4 和s5,对应的输出码字分别是00 和11,我们分别计算出两条路经的分支量度BM,并累加它们对应的前状态路径量度PM_l,发现累加后s5- s2的PM值比s4- s2 的大,所以保留s5 所对应的留存路径,并更新状态s2 所对应的留存路径存储器。对每一状态都做如此比较,保存大的分支量度BM,然后再累加前一状态路径量度PM_l,最后完成所有状态的选择,比较当前所有状态的路经量度PM,选择最大路径,如果延时超过D 就判决输出码字。显然此处判决的码字要延时D 时刻才能移位输出。

3. 卷积码编译码及MATLAB仿真

在本次课题研究中,我们对整个通信过程进行了仿真,其过程如图3-1:

序列 产生 信道 编码 BPSK 调制 AWGN 信道传输 信息 输出 Viterbi 译码 图3-1 卷积码编译码流程图

BPSK 解调

3.1 Matlab概述

计算机对科学技术的几乎一切领域产成了极其深远的影响。熟练掌握并利用计算机进行科学计算研究及工程应用已是广大科研设计人员所必备的基本技能之一。从事科学研究和工程应用时候所遇到的最大的困扰大抵是我们在计算涉及矩阵运算或画图时,采用Fortran、C及C++等计算机语言进行程序设计是一项十分麻烦的工作,不仅需要对所利用的有关算法有深刻的了解,还需要掌握所用语言的语法及编程技巧。

Matlab软件由美国Math Works 公司于1984 年推出,历经十几年的发展和竞

18

聊城大学本科毕业论文(设计)

争,现已成为通用科技计算和图视交互系统的程序语言,是(IEEE) 国际公认的最优秀的科技应用软件之一。它的指令表达与数学、工程中常用的习惯形式十分相似,从而使许多用C 或Fortran 实现起来十分复杂和费时的问题用Matlab就可以轻松地解决。Matlab的典型应用包括:数学计算、算法研究、数据分析和计算结果可视化、建模与仿真等。

3.1.1 Matlab的特点

Matlab作为一种数值计算和与图形处理工具软件,其特点是语法结构简明、数值计算高效、图形处理完备、易学易用,它在矩阵代数数值计算、数字信号处理、震动理论、神经网络控制、动态仿真等领域都有广泛的应用。与C、C++、Fortran等高级语言相比,Matlab不但在数学语言的表达与解释方面表现出人机交互的高度一致,而且具有优秀高技术计算环境所不可缺少的如下特征: (1)高质量、高可靠的数值计算能力; (2)基于向量、数组和矩阵的高维设计语言; (3)高级图形和可视化数据处理的能力;

(4)广泛解决各学科各专业领域内复杂问题的能力; (5)拥有一个强大的非线性系统仿真工具箱——Simulink; (6)支持科学和工程计算标准的开放式、可交互结构; (7)跨平台兼容。

3.1.2 Matlab工具箱和内容

目前Matlab已经成为国际上最流行的软件之一,它除了传统的交互式编程外,还提供了丰富可靠的矩阵运算。图形绘制、数据处理、图象处理、方便的Windows编程等便利工具。出现了各种以Matlab为基础的使用工具箱,广泛的应用于自动控制、图像信号处理、生物医学工程、语言处理、雷达工程、信号分析、震动理论、时序分析与建模、化学统计学、优化设计等领域,并表现出一般高级语言难以比拟的优势。较为常见的工具箱主要包括:控制系统工具箱(Control systems toolbox)、系统识别工具箱(Systems identification toolbox)、多变量频率设计工具箱(Multivariable frequency design toolbox)、鲁棒控制工具箱(Robust control toolbox)、分析与综合工具箱(analysis and synthesis toolbox)、神经网络工具箱(Neural network toolbox)、最优化工具箱(Optimization toolbox)、信号处理工具箱(Signal processing toolbox)、模糊推理数据工具箱

19

聊城大学本科毕业论文(设计)

(Fuzzy inference system toolbox)、小波分析工具箱(Wavelet toolbox)、通信工具箱(Communications toolbox)。

3.2卷积码编码及仿真

在程序设计中,我们没有采用MATLAB自带的编码函数而是采用了自己的编码函数codec对(2,1,3)卷积码编码,其参数m为输入信息序列,g1,g2为两个输出端口的冲激响应序列。

3.2.1编码程序

function cod=codec(m,g1,g2) %g1,g2m1=conv(m,g1); %端口一输出

m2=conv(m,g2); %端口二输出 l=length(m1); for i=1:l;

cod([2*i-1])=rem(m1([i]),2); %cod([2*i])=rem(m2([i]),2); %end

试运行编码: clear all g1=[1 1 1]; g2=[1 0 1]; msg=[1 1 0 1]; cod=codec(msg,g1,g2) 输出为:

cod =[110101001011]

仿真结果如下图3-2。

为两输出端口的冲激响应序列。 将端口一编码输出赋给cod奇数位置 将端口二编码输出赋给cod偶数位置 20


MATLAB实现卷积码编译码(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:《培养小学生数学阅读能力的实践与研究》总报告

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: