Turbo编译码的Matlab实现(5)

2019-04-09 12:14

Turbo编译码的Matlab实现

在已知另一随机变量Y的条件下,条件似然函数比定义为

LUY(uy)?logPU/Y(u??1/y)PU/Y(u??1/y)PYU(yu??1)PU(u??1) (5-2) ?log?logPU(u??1)PYU(yu??1)?LU(u)?LYU(yu)2、软信道值

对一个软值为L(u)的二进制变量u进行编码,可得到一个软值为L(x)的码元。对于一个(N,K)系统码,前K个码元和信息比特相等。经过一个二进制对称信道或高斯/衰落信道,在接收端匹配滤波器输出为y的条件下,有:

L(xy)?log运用前面定义,有

?P(yx??1)P(x??1)?P(x??1y)?log??P(yx??1)?P(x??1)?? (5-3) P(x??1y)??Es(y?a)2)P(x??1)N0L(x/y)?log?log?Lc?y?L(x) (5-4)

EsP(x??1)exp(?(y?a)2)N0exp(?其中Lc?4a?Es/N0称为信道可靠性能。a表示衰落因子,在高斯信道中,我们令a?1。在通常情况下,如衰落信道,LcEs是信号能量,N0是高斯白噪声的单边带功率密度谱。

是时变的,而在高斯信道中Lc是恒定不变的。以下部分我们假定信道是高斯信道。软信道值中包含了关于信道的信息。

下一节分别介绍MAP算法和SOVA算法,并且以SOVA算法为主,并给出具体比较实用的算法。

5.3 MAP(maximum a posteriori)算法

MAP算法是由Bahl,Cocke,Jelinek,和Raviv等人提出的,所以也称为BCJR算法。 编码器的输出码字序列为: C1N?{C1......Ck......CN},在经过离散无记忆高斯信道的传输后,码字变为R1N?{R1......Rk......RN},其中, Rk?(xk,yk)。设Sk为时刻k编码器所处的状态,uk是时刻k?1到时刻k转移时的输入比特,时刻k?1和k时的状态分别用m和m'表

Turbo编译码的Matlab实现

示。

译码的数据比特uk的后验概率可以从联合概率?k(m)得到,其中,?k(m)由下式定义:

?ik(m)?Pr{uk?i,Sk?m/R1N} (5-5)

ii这样,译码的数据比特uk的后验概率则等于:

Pr{uk?i/R1N}???ik(m),i?0,1 (5-6)

m由(11),与解码比特uk相联系的对数似然比L(uk)可写成:

L(uk)?logPr{ukPR{uk?(m)??1/R} ?log?0/R}??(m)1km0km (5-7)

最后,解码器通过对L(uk)和一个等于0的门限值比较后,作出以下判决:

?k?1 若L(uk)?0 u

i

?k?0 若L(uk)?0 (5-8) ui为了计算概率?k(m),我们引入概率函数?k(m),?k(m) 和?i(Rk,m',m):

Pr{uk?i,Sk?m,R1k}k ?(m)??P{u?i,S?m/R} (5-9)rkk1kPr{R1}ik

P{RN/S?m}?(m)?rk?1kk P{RN/Rk} (5-10)

rk?11?i(Rk,m',m)?Pr{uk?i,Rk,Sk?m/Sk?1?m'}

=p(Rk|uk?i,Sk?m,Sk?1?m')?q(uk?i|Sk?m,Sk?1?m')

??(Sk?m|Sk?1?m')

(5-11)

这里,R1k表示从格栅起始时刻到k?1时刻收到的符号序列,RkN?1表示从k?1时刻到格栅终止收到的符号序列。其中?i中得q(·|·)取值为“0”或“1”,最后一项?(·|·)为译码器的状态转移概率,由于编码比特以等概率1/2取“0”和“1”,所以这一项就等于1/2。则联合概率?k(m)可用贝叶斯定理重写为:

iPr{uk?i,Sk?m,R1k,RkN?1} (5-12) ?(m)?kNPr{R1,Rk?1}ik

Turbo编译码的Matlab实现

这样,我们得到

Pr{uk?i,Sk?m,R1k}Pr{RkN?1/uk?i,Sk?m,R1k} (5-13) ?(m)??kNkPr{R1}Pr{Rk?1/R1}ik考虑到如果状态Sk已知,时刻k后的事件不受观察值R1k和比特dk的影响,则概率?k(m)等于:

i ?ik(m)??k(m)?k(m) (5-14)

iiMAP算法从概率?i(Rk,m',m)采用前、后向递推的方式来计算?k(m)和?k(m)。最后我

们可得:

i?k(m)????mj?01m1i1(Rk,m',m)?kj?1(m') (5-15)

i?????mi?0j?01(Rk,m',m)?kj?1(m')及

?k(m)????mi?01mi(Rk?1,m,m')?k?1(m') (5-16)

i?????mi?0j?01(Rk?1,m',m)?kj(m')显然在?的递推过程中,要知道格栅最后时刻所处的状态,我们通常假设格栅的起始和终止状态都为零。这样?0(m)和?N(m)可初始化为:

?0(0)?1;?0(m)?0,?m?0

(5-17) (5-18)

?N(0)?1;?N(m)?0,?m?0

运用(5-6)式所定义的对数似然比公式及(5-14)、(5-15)和(5-16)式, L(uk)为:

????

11(Rk,m',m)?kj?1(m')?k(m) (5-19)

0L(uk)?logmmj?0????mmj?01(Rk,m',m)?kj?1?k(m)由于编码器是系统码(Xk?uk),表达式?i(Rk,m',m)中的转移概率因此,将这个条件代入(5-19)p(xk/uk?i,Sk?m,Sk?1?m')是与状态值Sk和Sk?1无关的。式的分子和分母,则有:

Turbo编译码的Matlab实现

P(xk/uk?1)L(uk)?log?logP(xk/uk?0)????mmj?0111(yk,m',m)?kj?1(m')?k(m)

(5-20)

????mmj?00(yk,m',m)?kj?1(m')?k(m) 根据条件uk?1(或uk?0),变量xk是均值为1(或-1)和方差为?2的高斯变量,因此对数似然比L(uk)依然是等于:

L(uk)?2?2xk?Lek

(5-21)

其中,

1j????1(yk,m',m)?k?1(m')?k(m)mm'j?0L?L(u)?log (5-22) ekkx?01jk????0(yk,m',m)?k?1(m')?k(m)mm'j?0

一般情况下Lek和uk的符号一样,因此LekLek是一个由编码器引入的冗余信息函数,

可以改进每一个解码器数据比特uk的对数似然比。这个数值代表了解码器提供的外在信息,但它并不依赖于解码器的输入xk,这个性质可以用来对两个并行级连编码器进行解码。

Turbo编译码的Matlab实现

6 Matlab介绍及仿真结果

本章重点讲述了利用Matlab这个工具对Turbo的编、译码过程进行仿真。译码算法采用的是SOVA算法以及改进的双向SOVA算法,并总结了这两种算法的译码性能以及它们之间的性能比较。

6.1 Matlab程序设计语言概述

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

为了准确的把一个控制系统的复杂模型输入计算机,然后对之进行进一步的分析与仿真,1990年Mathworks公司为Matlab提供了新的控制系统模型图形输入与仿真工具Simulab,该工具很快在控制界得到了广泛的使用。但因其名字与著名的软件公司Simula相似,所以在1992年正式改名为Simulink,此软件有两个明显的功能:仿真与连接,亦即利用鼠标在模型窗口上画出所需的控制系统模型,然后利用该软件提供的功能对系统直接进行仿真处理。很明显,这种做法使得一个很复杂的系统的输入相当容易。Simulink的出现,使得Matlab为控制系统的仿真及其在CAD等中的应用打开了崭新的局面。 1、Matlab的特点

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

(1) 高质量、高可靠的数值计算能力; (2) 基于向量、数组和矩阵的高维设计语言; (3) 高级图形和可视化数据处理的能力;

(4) 广泛解决各学科各专业领域内复杂问题的能力; (5) 拥有一个强大的非线性系统仿真工具箱——Silmulink;


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

下一篇:六安市万佛路施工组织设计

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

马上注册会员

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