基于MATLAB的卷积码的分析与应用

基于MATLAB的卷积码的分析与应用
基于MATLAB的卷积码的分析与应用

基于MATLAB的卷积码的分析与应用

毕业设计(论文)任务书

基于MATLAB的卷积码的分析与应用

摘要

随着现代通信的发展,特别是在未来4G通信网络中,高速信息传输和高可靠性传输成为信息传输的两个主要方面,而可靠性尤其重要。因为信道状况的恶劣,信号不可避免会受到干扰而出错。为实现可靠性通信,主要有两种途径:一种是增加发送信号的功率,提高接收端的信号噪声比;另一种是采用编码的方法对信道差错进行控制。前者常常受条件限制,不是所有情况都能采用。因此差错控制编码得到了广泛应用。

介绍了多种信道编码方式,着重介绍了卷积码的编码方法和解码方式。介绍了MATLAB的使用方法、编程方法、语句、变量、函数、矩阵等。介绍了TD-SCDMA通信系统和该系统下的卷积码,搭建了系统通信模型。编写卷积码的编码和解码程序。用MATLAB仿真软件对TD-SCDMA系统的卷积码编解码进行仿真。对其纠正错码性能进行验证,并且对误码率进行仿真和分析。卷积码的编码解码方式有很多,重点仿真Viterbi算法。Viterbi算法就是利用卷积码编码器的格图来计算路径度量,选择从起始时刻到终止时刻的惟一幸存路径作为最大似然路径。沿着最大似然路径回溯到开始时刻,所走过的路径对应的编码输出就是最大似然译码输出序列。它是一种最大似然译码方法,当编码约束长度不大、或者误码率要求不是很高的情况下,Viterbi译码器设备比较简单,计算速度快,因而Viterbi译码器被广泛应用于各种领域。

关键词:卷积码;信道编码;TD-SCDMA;MATLAB

目录

毕业设计(论文)任务书 ............................................................................................I 摘要........................................................................................................................... II Abstract......................................................................................... 错误!未定义书签。第1章绪论 . (1)

1.1课题研究的背景和来源 (1)

1.2主要内容 (2)

第2章相关理论介绍 (3)

2.1信道编码 (3)

2.1.1 信道编码的分类 (3)

2.1.2 编码效率 (3)

2.2线性分组码 (3)

2.3循环码 (5)

2.4卷积码 (6)

2.4.1 卷积码简介 (7)

2.4.2 卷积码的编码 (7)

2.4.3 卷积码的解码 (13)

第3章MATLAB应用 (21)

3.1数和算术的表示方法 (21)

3.2向量与矩阵运算 (21)

3.2.1 通过语句和函数产生 (21)

3.2.2 矩阵操作 (22)

3.3矩阵的基本运算 (22)

3.3.1 矩阵乘法 (22)

3.3.2 矩阵除法 (23)

3.4MATLAB编程 (23)

3.4.1 关系运算 (23)

3.4.2 控制流 (25)

第4章卷积码的设计与仿真 (27)

4.1TD-SCDMA系统 (27)

4.1.1 系统简介 (27)

4.1.2 仿真通信系统模型 (27)

4.2卷积编码设计 (28)

4.3编解码程序实现 (29)

4.3.1 卷积码编解码设计 (29)

4.3.2 卷积码编解码程序设计 (32)

4.4卷积码实现 (34)

4.4.1 (2,1)卷积码的仿真研究 (34)

4.4.2 (3,1)卷积码的仿真研究 (36)

4.5卷积码误码率 (38)

第5章结论 (41)

5.1总结 (41)

5.2展望 (41)

参考文献 (43)

致谢 (45)

第1章绪论

1.1课题研究的背景和来源

纠错编码己有五十几年历史,早在1948年,香农(Shannon)在他的开创性论文“通信的数学理论”中,首次阐明了在有扰信道中实现可靠通信的方法,提出了著名的有扰信道编码定理,奠定了纠错码的基石。以后,纠错码受到了越来越多的通信和数学工作者,特别是数学家的重视,使纠错码无论在理论上还是在实际中都得到了飞速发展[1]。

随着现代通信的发展,特别是在未来4G通信网络中,高速信息传输和高可靠性传输成为信息传输的两个主要方面,而可靠性尤其重要。因为信道状况的恶劣,信号不可避免会受到干扰而出错。为实现可靠性通信,主要有两种途径:一种是增加发送信号的功率,提高接收端的信号噪声比;另一种是采用编码的方法对信道差错进行控制。前者常常受条件限制,不是所有情况都能采用。例如卫星通信系统以很远的距离传送数据,由于衰落、噪声和干扰等的影响,信号在传输过程中将产生严重的畸变。如果要求信号具有尽可能大的能量,卫星体积和载重就会大大增加,使成本相对于原来大大增加,所以不可能给信号提供太大的能量,而建立在香农基础上的编码理论正可以解决这个问题,使得成本降低,实用性增强。前向纠错技术(FEC)特别是卷积编码是当今无线数字通信系统的一个十分重要的组成部分。它是一种有效的信道编码方法,在实际中广泛应用。目前无线数字通信系统都采用某一形式的卷积编码如在W-CDMA、DVB-S、DVB-T、IEE802.11系统中都使用了卷积编码。由于其出色的纠错性能,一般在级联码中作为内码使用,从而保证外码有效地工作,大大提高了整个系统的纠错能力。而Viterbi译码器正是针对卷积码的一种最佳译码方法[2]。

CDMA系统以其容量大、抗干扰能力强的特点成为第三代移动通信系统的标准。CDMA系统的信道编码大多采用卷积编码,这是因为卷积码的纠错能力强,不仅能纠随机差错,还可以纠突发差错。在CDMA系统中,对卷积码的译码采用Viterbi算法,它是一种最大似然译码方法,当编码约束长度不大、或者误码率要求不是很高的情况下,Viterbi译码器设备比较简单,计算速度快,因而Viterbi译码器被广泛应用于各种领域。

现代通信中,随着信号序列的传输速率的不断提高,要求卷积码译码的速度也要不断提高,Viterbi译码由于充分利用信号序列统计概率的特性而具有最佳性能。信道编码的应用领域主要包括深空通信、卫星通信、数据传输、移动通信、

文件传输和数字音频/视频传输等。卷积编码作为信道编码方式中最重要一种,被广泛使用于卫星通信、无人机测控、深空通信、移动通信、水声通信等数字通信系统,甚至被采纳到某些无线通信的标准之中,如GSM、IS.95和CDMA2000的标准。在卫星通信中,码率为1/2和1/3的卷积码己经成为商业卫星通信系统中的标准编码方法。在无人机测控中,与传统的信道改善控制指令传输误码的方式比较,利用卷积码对无人机遥控信道进行编码,在一定信道条件下,其控制指令传输误码有明显下降。在码速率不增加的条件下,无人机系统控制指令传输可靠性得到明显改善[3]。

随着数字通信系统业务的不断拓展,随着卷积编码理论的不断发展和完善,卷积码的应用必将越来越广泛,卷积码在现在通信系统中的作用必将越来越大。

1.2主要内容

论文框架:第一章介绍了卷积码的研究背景,第二章介绍了卷积码的相关理论,信道编码、线性分组码、循环码及卷积码的表示方式、编码方式、解码方式,第三章介绍了实现卷积码仿真所需要的软件方式,第四章进行卷积码设计与仿真,介绍了TD-SCDMA系统下的卷积码,对卷积码性能进行了研究。

主要内容:介绍了信道编码方式。着重研究列举了卷积码的编码方法和解码方式,介绍了MATLAB的使用方法和TD-SCDMA系统。编写卷积码的编码和解码程序。并且用MATLAB仿真软件对TD-SCDMA系统的卷积码编解码进行仿真,Viterbi算法就是利用卷积码编码器的格图来计算路径度量,选择从起始时刻到终止时刻的惟一幸存路径作为最大似然路径。沿着最大似然路径回溯到开始时刻,所走过的路径对应的编码输出就是最大似然译码输出序列。它是一种最大似然译码方法,当编码约束长度不大、或者误码率要求不是很高的情况下,Viterbi 译码器设备比较简单,计算速度快,因而Viterbi译码器被广泛应用于各种领域。

第2章相关理论介绍

2.1信道编码

在数字通信中,根据不同的目的,编码可分为信源编码和信道编码。信源编码是为了提高数字信号的有效性以及为了使模拟信号数字化而采取的编码。信道编码是为了降低误码率,提高数字通信的可靠性而采取的编码。信道编码现在已经得到广泛的应用。

2.1.1信道编码的分类

信道编码有多种分类方式,主要有按照关系、范围及用途三种。

(1)根据纠错码各码组信息元和监督元的函数关系,可分为线性码和非线性码。如果函数关系是线性的,即满足一组线性方程式,则称为线性码,否则为非线性码。

(2)根据上述关系涉及的范围,可分为分组码和卷积码。分组码的各码元仅与本组的信息元有关;卷积码中的码元不仅与本组的信息元有关,而且还与前面若干组的信息元有关。

(3)根据码的用途,可分为检错码和纠错码。检错码以检错为目的,不一定能纠错;而纠错码以纠错为目的,一定能检错[4,5]。

2.1.2编码效率

用差错控制编码提高通信系统的可靠性,是以降低有效性为代价换来的。定义编码效率尺来衡量有效性:R=k/n,其中,k是信息元的个数,n为码长。对纠错码的基本要求是:检错和纠错能力尽量强;编码效率尽量高;编码规律尽量简单。

2.2线性分组码

线性分组码中的线性是指码组中码元间的约束关系是线性的,而分组则是对编码方法而言,即编码时将每k个信息位分为一组进行独立处理,变换成长度为n(n>k)的二进制码组。

线性分组码的编码过程可以简单描述成一个矢量和一个矩阵相乘的结果,即C=mG,其中C是经过编码后得到的n维编码输出{c0,c1,…,c n-1},m是信息序列分组{m0,m1,…,m k-1},G是由k个n维矢量{g0,g1,…,g k-1}构成的矩阵。

线性分组码编码问题的核心就是如何在n维线性空间V n中找出满足一定要

求的、由2k 个矢量组成的k 维线性子空间,也就是说,在满足给定码字最小距离或编码速率的前提下,如何根据已知的k 个信息比特求得r =n -k 个校验比特。

通过对码字生成矩阵G 的初等变换,可以得到惟一的行简化梯形矩阵,再经过列交换可以得到如下形式的生成矩阵。

[]

I

p

p

p p p p p p p p g g g g

g g g g g g g g k

k k n k k n k k k k n k n n k k k n n k G *)

(*1

,11

,10,11

,11,10

,11

,01,00,01,11

,10,11

,11

,10,11

,01,00,0110100010001-----------------=

?

???

?

????????????

?

???????????=??????????????=ΛM ΛM M M M M M

M M M

ΛM ΛΛ

M ΛΛM M M

M Λ

Λ

M (2.1)

其中P 是k ×(n -k )的矩阵。

这种形式的生成矩阵G 称为标准生成矩阵,按照标准矩阵生成的码字为

[]{}

m m m p

p p k k n I P m mG c 1101

1

,…,,,,…,,·

---=== (2.2)

其中前n-k-1个比特为校验比特,其值为

10,

…,11,11,00--≤≤++=--k n i p m p m p m p i k k i i i

(2.3)

后面k 个比特就是信息比特。这种在生成码字中包含信息序列的编码码字称为线性系统分组码,简称为系统码。

系统码的编码结构相当简单,以系统(7,4)为例,其生成矩阵为:

?

?

???

????

???=1000110

010001100101110001101

G (2.4) 系统码的编码结构非常简单,比如对系统(7,4)码,根据上面的生成矩阵G ,只要在输入编码器的每组k 个数字的后面,附加上(n-k )个监督码元就可得到所编出的n 个码字。

系统(7,4)码对应的监督矩阵为

??

??

?

?????=101110011100100111001H (2.5) 假如发送的码字为c =(1001011),而接收到的码字为Y =(1001001),信道传输中产生的错误为e =(0000010)。

由S =y ·H T 可求出S =(1,1,1)。

2.3 循环码

循环码是线性分组码中最重要的一类,循环码是指码集合中的任一码字经过循环移位后得到的码字仍然是码集合中的码字。循环码的码字可以用矢量的形式表示,即:

),…,,(110c c c n c -=

(2.6)

也可用码多项式表示,即:

x

c c c n n x x c 1

110…)(--+++= (2.7)

循环码c 向右移一位的码字可由下式得出

)1mod(……)(1

22

10112

10-++++=+++=----x x c x c x c c x c x c x c n

n n n n

n x xc

(2.8)

循环码可由它的生成多项式

x

g x g

g k

n k

n x g --+++=…)(1

(2.9)

唯一确定。信息序列也可以表示成多项式

x

m x m m k k x m 1

110…)(--+++= (2.10)

那么生成码字可表示成

)1mod()()()(-=x n

x g x m x c

(2.11)

由于多项式乘法等价于多项式系数的卷积,故

g

m c j

k n j j

i i

∑-=-=0

(2.12)

循环码编码则可以通过移位寄存器组成的乘法电路结构实现。由数论知识可知, (n ,k )循环码的生成多项式g (x )一定是x n -1的n-k 次因式:

)…)(…()()(1101

x h x h h x

g x g

g x

k

k k

n k

n n

x h x g ++++++==---

(2.13)

反之,若g (x )为n-k 次多项式,且x n -1能被g (x )整除,则g (x )一定能生成一个(n ,k )循环码。以g (x )为生成多项式所构成的(n ,k )循环码中

g (x ),x g (x ),…,x k -1 g (x ) (2.14)

等七个多项式必定是线性无关,则循环码的生成矩阵G 为

?

?

?

??

?????

???

?=---g g

g

g

g g g

g g

k n k

n k

n G 0

0┆┆┆┆

┆┆┆┆0…0…00…

00 (1)

1

1

(2.15)

循环码的编码也可以通过移位寄存器组成的除法电路结构实现。以(7,4)循 环码为例,选(7,4)码生成矩阵

g (x )= g 3(x )=1+x +x 3 (2.16)

它除尽1+x 7,若输入信息码元为m (x )=1+x 3

则由

)1mod(,)1()(·3

26334

7x x x x x x

x

x x x m k

n +++=+=+=--

(2.17) 因此,码多项式为

x

x x x x

x x

x x x m x r x c k

n 6

3234

72)1()(·)()(+++=+++=+=-- (2.18)

对应的码字为C =(0 1 1 1 0 0 1) 其中最右边的4位是信息元,详细的编码过程如下:

(1) 三级移位寄存器初始状态为000,此时门打开,信息组以

x

x x x x x m k

n 6

3

3

4

7)1()(+=+=-- (2.19)

即1001次序分两路进入编码器:一路直接输出;另一路送入g (x )除法电路。

(2) 经4次移位后,信息组1001全部输出,它就是系统码的4个信息元;另一路则将全部信息元送入g (x )除法电路,并完成除法运算,这时移位寄存器中的状态就是余式r (x )系数,即为码的监督元(c 0 c 1 c 2)。

(3) 输出开关倒向上面2,经3次移位,移位器由监督元(c 0 c 1 c 2),跟在信息元 (c 3 c4 c 5 c 6)后面依次输出为C =( c 0 c 1 c 2 c 3 c 4 c 5 c 6) =(0111001)。

(4) 送入第二组信息元,重复上述过程。

该码最小距离为3,它能纠正7个码元一组中任何单个错误,这7种错误图样和全零矢量一起组成译码表的陪集首,它组成了所有可能纠正的图样。现假设接收的多项式为

x y x y x y x y y x y 6

6

3

3

2

2

1

)(++++=

(2.20)

即Y =(1 1 1 1 0 0 1)。

译码器工作步骤如下: (1) 将移位寄存器清零。

(2) 输入Y 分两路进入译码器:一路进入缓存器;另一路经门1进入伴随式计算电路与寄存器,并分别计算S 0、S 1、S 2值。

(3) 在输出Y 的同时,S 0、S 1、S 2依次循环移位。无错误时,错误检测电路无输出,最后输出的码字C 的码元与Y 相对应码元一致,有错误时,S 0= S 2=1,S 1=0,错误检测电路输出为“1”,它正好与Y 中错误位在输出端的模2加中相遇,并予以纠正后再输出。

2.4 卷积码

相对于分组码而言,分组码的编码和译码都是各分组独立的进行,彼此不相关联。而卷积码的每一组不仅与本组的k 位信息位有关,还和这以前各组的信息位有关。卷积码的结构比较复杂,但n 和k 的值相对于分组码来说比较小。译码

也相对比较容易些。

2.4.1 卷积码简介

非分组码的卷积码的编码器是在任一段规定时间内产生n 个码元,但它不仅取决于这段时间中的k 个信息位,还取决于前(K -1)段规定时间内的信息位,这K 段时间内的码元数目为K ·k ,称参数K 为卷积码的约束长度,每k 个比特输入,得到n 比特输出,编码效率为k /n ,约束长度为K 。在k =1的条件下,移位寄存器级数m =K -1。

卷积码一般可用(n ,k ,K )来表示,其中k 为输入码元数,n 为输出码元数,而K 则为编码器的约束长度。典型的卷积码一般选n 和k ( k < n ) 值较小,但约束长度K 可取较大值(K <10),以获得既简单又高性能的信道编码[6]。

卷积码是1955年Elias 最早提出,1957年Wozencraft 提出了序列译码。1963年Massey 提出了一种性能稍差,但比较实用的门限译码方法。1967年维特比(Viterbi)提出了最大似然译码。它对存储器级数较小的卷积码的译码很容易实现,称为维特比算法或维特比译码。

2.4.2 卷积码的编码

卷积码的编码器是由一个有k 个输入位(端)、n 个输出位(端),且具有m 级移位寄存器所构成的有限状态的有记忆系统,通常称它为时序网络。 2.4.2.1 卷积码的解析表示法

一个二元(2,1,4)卷积码的编码器,它是由k =1,即一个输入位(端),n =2,即两个输出位(端),K =4,m =3即三级移位寄存器所组成的有限状态的有记忆系统。

(1) 离散卷积

若输入信息序列为(这里的卷积码是u 0首先输入)

)…(210u u u u

=

(2.21)

则对应输出为两个码字序列

)

…()…(②2

1②

①2①1①0

①c

c c c

c c c c

== (2.22)

其相应编码方程可写为

)

,(**②

c c c

g

u c g u c === (2.23)

其中“﹡”表示卷积运算,g ① g ②表示编码器的两个脉冲冲击响应,即编码可由输

入信息序列u 和编码器的两个冲击响应的卷积得到,故称为卷积码[7]。这里的脉冲冲击响应是指,当输入信息为u =(100…)时,所观察到的两个输出序列值。由于编码器有m =3级寄存器,故冲激响应至多可持续到K =m +1=3+1=4位,且可写成:

)

1111()1011(②

==g

g (2.24)

在一般情况下有:

)

…()

…(②

m

②1

②0

m

①1①0①

g g

g

g

g g g g == (2.25)

经编码器后,两个输出序列合并为一个输出码字序列为:

)…(②

1

①1

②0

c

c c c c

= (2.26)

若输入信息序列为:

)10111(=u

(2.27)

则有:

)10000001()1011(*)10111(①

==c

(2.28)

)11011101()1111(*)10111(②

==c

(2.29)

最后输出的码字为:

)0100111101000101(=c

(2.30)

(2) 生成矩阵

上述冲激响应g ① g ②又称为生成序列,若将该生成序列g ① g ②按如下方法排列,构成如下生成矩阵(当K =4,m =3时):

????????

?????

????

?=……

………②3①3②2

①2

②1

①1

②0

①0

②3①3②2①2②1①

1②0

①0

②3①

3②2①2②1①

1②

0①0g g g

g g

g g

g g g g g g g g

g g g g g g g g g G (2.31)

上述矩阵中,其中空白部分均为0。则上述编码方程可改为矩阵形式

G ·

u c = (2.32) G 为卷积码的生成矩阵,若输入信息序列为一无限序列时,即u =(10111…),生成矩阵则为一个半无限矩阵,即有起点无终点,因此称它为半无限。

若:

)1111(),1011(),10111(②

===g g u

(2.33)

则:

()

1100010101000111111101111111011111

1101111111011111110111)10111(·=??

?

??

??

?????????==G

u c (2.34) (3) 码多项式

若将生成序列表达成多项式形式,有

()()x

x x g

x

x g 3

2

3

2

+++11111++11011==== (2.35)

输入信息序列也可表达为多项式形式

()x x x u 4

3

2

+++110111== (2.36)

则卷积码可以用下列码多项式形式表达

(

)(

)

)

10000001(1111177

6

5

4

3

2

7

6

5

3

6

5

4

2

4

3

2

3

24

32①

22222=+=++++++=+++++++++++=+++++=x x x x x x x x x x x x x x x x x x x

x x x x c

(2.37)

(

)(

)

()

11011101111117

7

5

4

3

7

6

5

3

6

5

4

2

5

4

3

4

3

2

3

24

32②

=+=+++++=+++++++++++++++=++++++=x

x x x x x x x x x x x x x x x x x x x x x

x x x x x c

(2.38)

2.4.2.2 卷积码的图形表示法

卷积码的图形表示法有很多种,在此介绍最常用的三种,状态图表示法、树图表示法、网格图表示法。

(1) 状态图表示法

卷积编码器在下一时刻的输出取决于编码器当前的状态及下一时刻的输入。当前状态取决于编码器在当时各移位寄存器所存储的内容,称编码器的各移位寄存器在任一时刻的存数(0或1)为编码器在该时刻的一个状态。编码器的总可能状态数是2mk 个。对于n =2,k =1,K =3,m =2的(2,1,3)卷积编码器,则其总的可能状态数是4个。设以S i 表示某状态,i =0,1,2,3,在某t j 时刻,此 (2,1,3)

卷积编码器的输出表述为

u u c

u u u c 2

-j j ②j

2-j 1-j j ①j ⊕=⊕⊕= (2.39)

它取决于u j ,u j -1及u j -2三个值,其中u j 是当前的输入值,u j -1及u j -2是以前输入的两个值。若要求出下一个t j +1时刻的输出值,则要知道当前的u j 及u j -1值。当输入下一时刻的u j +1值时,就可以求出下一个t j +1时刻的c ①j +1及c ②j +1值。所以,为决定下一个t j +1时刻编码器的输出,此(2,1,3)卷积编码器在当前t j 时刻的状态用S i =(u j ,u j -1) (i =0,1,2,3)表示即可。如表2.1所示。

表2.1 状态转移表

u j u j -1 S i 0 0 S 0=a 1 0 S 0=b 0 1 S 0=c 1

1

S 0=d

设输入信息序列为:

()()...1011100 (2)

1

==u u u u u i

(2.40)

1) 首先,对移位寄存器清洗、复0,移存器状态为00;

2) 输入:u 0=1,输出1001①0

=⊕⊕=c ,101②0=⊕=c ,故()()11②

0①00==c c c ,移位寄存器状态改为10;

3) 输入:u 1=0,则根据(010),可算出:0,1②1①1==c c ,故)10(1=c ,移位寄存器

状态改为01;

4) 输入:u 2=1,则根据(101),可算出:0,0②2

①2==c c ,故)00(2=c ,移位寄存器状态改为10;

5) 输入:u 3=1,则根据(110),可算出:1,0②3①3==c c ,故)01(3=c ,移位寄存器

状态改为11;

6) 输入:u 4=1,则根据(111),可算出:0,1②4①4

==c c ,故)10(4=c ,移位寄存器状态改为11;

7) 输入:u 5=0,则根据(011),可算出:1,0②5①5==c c ,故)01(5=c ,移位寄存器

状态改为01;

8) 输入:u 6=0,则根据(001),可算出:1,1②6①6

==c c ,故)11(6=c ,移位寄存器

卷积码的编解码Matlab仿真

卷积码的编解码Matlab仿真摘要 卷积码是一种性能优越的信道编码。它的编码器和译码器都比较容易实现,同时它具有较强的纠错能力D随着纠错编码理论研究的不断深入,卷积码的实际应用越来越广泛。本文简明地介绍了卷积码的编码原理和译码原理o并在SIMULINK模块设计中,完成了对卷积码的编码和译码以及误比特统计整个过程的模块仿真。最后,通过在仿真过程中分别改变卷积码的重要参数来加深理解卷积码的这些参数对卷积码的误码性能的影响。经过仿真和实测,并对测试结果作了分析。得出了以下三个结论z (1)当改变卷积码的码率时,系统的误码性能也将随之发生变化。 (2)对于码率一定的卷积码,当约束长度N发生变化时,系统的误码性能也会随之发生变化。 (3)回溯长度也会不同程度上地影响误码性能。 关键词:卷积码:码率:约束长度:回溯长度

Simulation and Research on Encoding and Decoding of Convolution Code Abstract Convolution code has a superior performance of the channel code. It is easy to coding and decoding.An d it has a strong ability to correct e盯ors. As correcting coding theory has a long development,the practice of convolution code is more and more extensive.In由1S由esis,the principle of convolution coding and decoding is introduced simply白rstly. Then由e whole simulation module process of encoding,decoding and the Error Rate Calculation is completed in由is design. Finally,in order to understand 由eir performances of error rate,many changes in parameters of convolution code are calculated in the simulation process.Af ter simulation and me皿UTe,an analysis of test results is presented.Th e following由ree conclusions are draw: (l)Wh en the rate of convolution Code ch皿ges,HER performance of the systemwill change. (2) For a certain rate of convolution code,when由ere is a change in the constraint length of N,BER perfonnance of由e system will change. (3) Re位ospec咀ve length will affect BE R. Key words: convolution code; rate; cons缸aint leng由; retrospective length;

Matlab中卷积码译码器的误码率分析

长沙理工大学 《通信原理》课程设计报告 郭林 学院计算机与通信工程专业通信工程 班级540802 学号11 学生姓名郭林指导教师龙敏 课程成绩完成日期2008年1月11日

基于Matlab的卷积码译码器的 设计与仿真 学生姓名:郭林指导老师:** 摘要本课程设计主要解决对一个卷积码序列进行维特比(Viterbi)译码输出, 并通过Matlab软件进行设计与仿真,并进行误码率分析。在课程设计中,系统开发平台为Windows Vista Ultimate,程序设计与仿真均采用Matlab R2007a(7.4),最后仿真详单与理论分析一致。 关键词课程设计;卷积码译码器;Matlab;Simulink;设计与仿真 1引言 本课程设计主要解决对一个卷积码序列进行维特比(Viterbi)译码输出,并通 过Matlab软件进行设计与仿真。卷积码的译码有两种方法——软判决和硬判决,此课程设计采用硬判决的维特比译码。 1.1课程设计目的 卷积码是一种向前纠错控制编码。它将连续的信息比特序列映射为连续的编码器输出符号。这种映射是高度结构化的,使得卷积码的译码方法与分组码译码所采用的方法完全不同。可以验证的是在同样复杂度情况下,卷积码的编码增益要大于分组码的编码增益。对于某个特定的应用,采用分组编码还是采用卷积编码哪一种更好则取决于这一应用的具体情况和进行比较时可用的技术[1]。 本课程设计便是通过Matlab设计一个硬判决维特比译码输出的完整电路,并进行误码率分析。

1.2 课程设计的原理 卷积码,又称连环码,是由伊莱亚斯(P.elias)于1955年提出来的一种非分组码。 卷积编码的最佳译码准则为:在给定已知编码结构、信道特性和接收序列的情况下,译码器将把与已经发送的序列最相似的序列作为传送的码字序列的估值。对于二进制对称信道,最相似传送序列就是在汉明距离上与接收序列最近的序列。 卷积码的译码方法有两大类:一类是大数逻辑译码,又称门限译码(硬判决,编者注);另一种是概率译码(软判决,编者注),概率译码又分为维特比译码和序列译码两种。门限译码方法是以分组码理论为基础的,其译码设备简单,速度快,但其误码性能要比概率译码法差[2]。 当卷积码的约束长度不太大时,与序列译码相比,维特比译码器比较简单,计算速度快。维特比译码算法是1967年由Viterbi提出,近年来有大的发展。目前在数字通信的前向纠错系统中用的较多,而且在卫星深空通信中应用更多,该算法在卫星通信中已被采用作为标准技术。 2维特比译码原理 采用概率译码的基本思想是:把已接收序列与所有可能的发送序列做比较,选择其中码距最小的一个序列作为发送序列。如果发送L组信息比特,那么对于(n,k)卷积码来说,可能发送的序列有2kL个,计算机或译码器需存储这些序列并进行比较,以找到码距最小的那个序列。当传信率和信息组数L较大时,使得译码器难以实现。维特比算法则对上述概率译码做了简化,以至成为了一种实用化的概率算法。它并不是在网格图上一次比较所有可能的2kL条路径(序列),而是接收一段,计算和比较一段,选择一段最大似然可能的码段,从而达到整个码序列是一个最大似然值得序列。 下面以图2.1的(2,1,3)卷积码编码器所编出的码为例,来说明维特比解码的方法和运作过程。为了能说明解码过程,这里给出该码的状态图,如图2.2所

Matlab的卷积码译码器的仿真要点

基于Matlab的卷积码译码器的 设计与仿真 学生姓名:指导老师:** 摘要本课程设计主要解决对一个卷积码序列进行维特比(Viterbi)译码输出, 并通过Matlab软件进行设计与仿真,并进行误码率分析。在课程设计中,系统开发平台为Windows Vista Ultimate,程序设计与仿真均采用Matlab R2007a(7.4),最后仿真详单与理论分析一致。 关键词课程设计;卷积码译码器;Matlab;Simulink;设计与仿真 1引言 本课程设计主要解决对一个卷积码序列进行维特比(Viterbi)译码输出,并通 过Matlab软件进行设计与仿真。卷积码的译码有两种方法——软判决和硬判决,此课程设计采用硬判决的维特比译码。 1.1课程设计目的 卷积码是一种向前纠错控制编码。它将连续的信息比特序列映射为连续的编码器输出符号。这种映射是高度结构化的,使得卷积码的译码方法与分组码译码所采用的方法完全不同。可以验证的是在同样复杂度情况下,卷积码的编码增益要大于分组码的编码增益。对于某个特定的应用,采用分组编码还是采用卷积编码哪一种更好则取决于这一应用的具体情况和进行比较时可用的技术[1]。 本课程设计便是通过Matlab设计一个硬判决维特比译码输出的完整电路,并进行误码率分析。

1.2 课程设计的原理 卷积码,又称连环码,是由伊莱亚斯(P.elias)于1955年提出来的一种非分组码。 卷积编码的最佳译码准则为:在给定已知编码结构、信道特性和接收序列的情况下,译码器将把与已经发送的序列最相似的序列作为传送的码字序列的估值。对于二进制对称信道,最相似传送序列就是在汉明距离上与接收序列最近的序列。 卷积码的译码方法有两大类:一类是大数逻辑译码,又称门限译码(硬判决,编者注);另一种是概率译码(软判决,编者注),概率译码又分为维特比译码和序列译码两种。门限译码方法是以分组码理论为基础的,其译码设备简单,速度快,但其误码性能要比概率译码法差[2]。 当卷积码的约束长度不太大时,与序列译码相比,维特比译码器比较简单,计算速度快。维特比译码算法是1967年由Viterbi提出,近年来有大的发展。目前在数字通信的前向纠错系统中用的较多,而且在卫星深空通信中应用更多,该算法在卫星通信中已被采用作为标准技术。 2维特比译码原理 采用概率译码的基本思想是:把已接收序列与所有可能的发送序列做比较,选择其中码距最小的一个序列作为发送序列。如果发送L组信息比特,那么对于(n,k)卷积码来说,可能发送的序列有2kL个,计算机或译码器需存储这些序列并进行比较,以找到码距最小的那个序列。当传信率和信息组数L较大时,使得译码器难以实现。维特比算法则对上述概率译码做了简化,以至成为了一种实用化的概率算法。它并不是在网格图上一次比较所有可能的2kL条路径(序列),而是接收一段,计算和比较一段,选择一段最大似然可能的码段,从而达到整个码序列是一个最大似然值得序列。 下面以图2.1的(2,1,3)卷积码编码器所编出的码为例,来说明维特比解码的方法和运作过程。为了能说明解码过程,这里给出该码的状态图,如图2.2所

卷积码matlab程序

卷积编码程序: function [output, len_tal] = cnv_encd(secrettext, encodetext) g = [0 0 1 0 0 1 0 0; 0 0 0 0 0 0 0 1; 1 0 0 0 0 0 0 1; 0 1 0 0 1 1 0 1]; k0 = 1; % 读入文本文件并计算文件长度 frr = fopen(secrettext, 'r'); [msg, len] = fread(frr, 'ubit1'); msg = msg'; % check to see if extra zero padding is necessary if rem(length(msg), k0) > 0 msg = [msg, zeros(size(1:k0-rem(length(msg),k0)))]; end n = length(msg)/k0; % 把输入比特按k0分组,n为所得的组数。 % check the size of matrix g if rem(size(g, 2), k0) > 0 error('Error, g is not of the right size.'); end % determine L and n0 L = size(g, 2)/k0; n0 = size(g, 1); % add extra zeros,以保证编码器是从全0开始,并回到全0状态。 u = [zeros(size(1:(L-1)*k0)), msg, zeros(size(1:(L-1)*k0))]; % generate uu, a matrix whose columns are the contents of conv. encoder at % various clock cycles. u1 = u(L*k0: -1 :1); for i = 1:n+L-2 u1 = [u1, u((i+L)*k0:-1:i*k0+1)]; end uu = reshape(u1, L*k0, n+L-1); % determine the output output = reshape(rem(g*uu, 2), 1, n0*(L+n-1)); len_tal = n0*(L + n - 1);

基于MATLAB的卷积码的分析与应用

基于MATLAB的卷积码的分析与应用

毕业设计(论文)任务书

基于MATLAB的卷积码的分析与应用 摘要 随着现代通信的发展,特别是在未来4G通信网络中,高速信息传输和高可靠性传输成为信息传输的两个主要方面,而可靠性尤其重要。因为信道状况的恶劣,信号不可避免会受到干扰而出错。为实现可靠性通信,主要有两种途径:一种是增加发送信号的功率,提高接收端的信号噪声比;另一种是采用编码的方法对信道差错进行控制。前者常常受条件限制,不是所有情况都能采用。因此差错控制编码得到了广泛应用。 介绍了多种信道编码方式,着重介绍了卷积码的编码方法和解码方式。介绍了MATLAB的使用方法、编程方法、语句、变量、函数、矩阵等。介绍了TD-SCDMA通信系统和该系统下的卷积码,搭建了系统通信模型。编写卷积码的编码和解码程序。用MATLAB仿真软件对TD-SCDMA系统的卷积码编解码进行仿真。对其纠正错码性能进行验证,并且对误码率进行仿真和分析。卷积码的编码解码方式有很多,重点仿真Viterbi算法。Viterbi算法就是利用卷积码编码器的格图来计算路径度量,选择从起始时刻到终止时刻的惟一幸存路径作为最大似然路径。沿着最大似然路径回溯到开始时刻,所走过的路径对应的编码输出就是最大似然译码输出序列。它是一种最大似然译码方法,当编码约束长度不大、或者误码率要求不是很高的情况下,Viterbi译码器设备比较简单,计算速度快,因而Viterbi译码器被广泛应用于各种领域。 关键词:卷积码;信道编码;TD-SCDMA;MATLAB

目录 毕业设计(论文)任务书 ............................................................................................I 摘要........................................................................................................................... II Abstract......................................................................................... 错误!未定义书签。第1章绪论 . (1) 1.1课题研究的背景和来源 (1) 1.2主要内容 (2) 第2章相关理论介绍 (3) 2.1信道编码 (3) 2.1.1 信道编码的分类 (3) 2.1.2 编码效率 (3) 2.2线性分组码 (3) 2.3循环码 (5) 2.4卷积码 (6) 2.4.1 卷积码简介 (7) 2.4.2 卷积码的编码 (7) 2.4.3 卷积码的解码 (13) 第3章MATLAB应用 (21) 3.1数和算术的表示方法 (21) 3.2向量与矩阵运算 (21) 3.2.1 通过语句和函数产生 (21) 3.2.2 矩阵操作 (22) 3.3矩阵的基本运算 (22) 3.3.1 矩阵乘法 (22) 3.3.2 矩阵除法 (23) 3.4MATLAB编程 (23) 3.4.1 关系运算 (23) 3.4.2 控制流 (25) 第4章卷积码的设计与仿真 (27) 4.1TD-SCDMA系统 (27) 4.1.1 系统简介 (27) 4.1.2 仿真通信系统模型 (27)

基于MATLAB对卷积码的性能分析

基于MATLAB对卷积码的性能分析 【摘要】本文对比了在加性高斯白噪声(AWGN)信道下经BPSK调制后的数据不编码与添加卷积编码后接收到的信道输出的误码性能,并通过对比对卷积码性能进行分析。采用MATLAB自编函数对[2,1,8]卷积码以及维特比译码进行仿真,且对其性能进行分析。由于卷积码有性能floor,编码增益随信噪比降低而体现不明显。仿真结果表明:当信噪比等于-1dB时,一个序列通过加性高斯白噪声信道后接收到的信道输出误比特率大于10-1,且该序列运用[2,1,8]卷积码编码,维特比译码(硬判决)后所得的序列误比特率升高。当信噪比为2dB时,一个序列通过加性高斯白噪声信道后接收到的信道输出误比特率约为4*10-2,且该序列运用[2,1,8]卷积码编码,维特比译码后所得的序列误比特率小于10-3,误码率远低于不编码时的误码率。因此卷积码适用于信道输出误码率比较低时候。 【关键词】维特比译码;卷积码;误比特率;马尔科夫性 1.引言 卷积码的编码器是由一个有k位输入、n位输出,且具有m位移位寄存器构成的有限状态的有记忆系统,通常称它为时序网络。[1]编码器的整体约束长度为v,是所有k个移位寄存器的长度之和。具有这样的编码器的卷积码称作[n,k,v]卷积码。对于一个(n,1,v)编码器,约束长度v等于存储级数m。卷积码是由k个信息比特编码成n(n>k)比特的码组,编码出的n比特码组值不仅与当前码字中的k个信息比特值有关,而且与其前面v个码组中的v*k个信息比特值有关。 卷积码有三种译码方式:序列译码、门限译码和概率译码。其中,概率译码根据最大似然译码原理在所有可能路径中求取与接收路径最相似的一条路径,具有最佳的纠错性能,[2]维特比译码是概率译码中极重要的一种方式。 序列译码和门限译码则不一定能找出与接收路径最相似的一条路径。不同于维特比译码,门限译码与序列译码所需的计算量是可变的且对于给定信息分组的最终判决仅仅基于(m+1)个接收分组,而不是基于整个接收序列。[3]与维特比译码所使用的对数似然量度不同,序列译码所使用的量度为Fano量度。在接收序列受扰严重的情况下,序列译码的计算量大于维特比译码所需的固定计算量,虽然序列译码要求的平均计算次数通常小于维特比译码。在采用并行处理的情况下,维特比译码的速度会优于序列译码。在同样码率和存储级数的条件下,门限译码的性能比维特比译码低大约3dB。 维特比译码的数据输出方式有硬判决及软判决两种方式,本文选取生成多项式为561,753的(2,1,8)卷积码对硬判决的性能进行分析,并依据维特比译码的原理以及卷积码的特性,对卷积码编码和维特比译码过程在加性高斯白噪声(AWGN)信道下进行仿真,并且根据仿真结果对维特比译码(硬判决)的结果

MATLAB OFDM卷积编码程序及代码

%bin22deci.m function y=bin22deci(x) %将二进制数转化为十进制数 t=size(x,2); y=(t-1:-1:0); y=2.^y; y=x*y'; %************************end of file*********************************** %comb.m %AWGN加噪声程序 function[iout,qout]=comb(idata,qdata,attn) %******************variables************************* %idata:输入I信道数据 %qdata:输入Q信道数据 %iout输出I信道数据 %qout输出Q信道数据 %attn:由信噪比导致的衰减系数 %****************************************************** iout=randn(1,length(idata)).*attn; qout=randn(1,length(qdata)).*attn; iout=iout+idata(1:length(idata)); qout=qout+qdata(1:length(qdata)); %************************end of file*********************************** %crdemapping.m %数据逆映射载波程序 function[iout,qout]=crdemapping(idata,qdata,fftlen,nd); %******************variables************************* %idata:输入I信道的数据 %qdata:输入Q信道的数据 %iout:输出I信道的数据 %qout:输出Q信道的数据 %fftlen:FFT的长度 %nd:OFDM符号数 %***************************************************** iout(1:26,:)=idata(2:27,:); qout(1:26,:)=qdata(2:27,:); iout(27:52,:)=idata(39:64,:); qout(27:52,:)=qdata(39:64,:); %********************end of file*************************** %crmapping.m

MATLAB实现卷积码编译码-

本科生毕业论文(设计) 题目:MATLAB实现卷积码编译码 专业代码: 作者姓名: 学号: 单位: 指导教师: 年月日

目录 前言----------------------------------------------------- 1 1. 纠错码基本理论---------------------------------------- 2 1.1纠错码基本理论 ----------------------------------------------- 2 1.1.1纠错码概念 ------------------------------------------------- 2 1.1.2基本原理和性能参数 ----------------------------------------- 2 1.2几种常用的纠错码 --------------------------------------------- 6 2. 卷积码的基本理论-------------------------------------- 8 2.1卷积码介绍 --------------------------------------------------- 8 2.1.1卷积码的差错控制原理----------------------------------- 8 2.2卷积码编码原理 ---------------------------------------------- 10 2.2.1卷积码解析表示法-------------------------------------- 10 2.2.2卷积码图形表示法-------------------------------------- 11 2.3卷积码译码原理---------------------------------------------- 15 2.3.1卷积码三种译码方式------------------------------------ 15 2.3.2V ITERBI译码原理---------------------------------------- 16 3. 卷积码编译码及MATLAB仿真---------------------------- 18 3.1M ATLAB概述-------------------------------------------------- 18 3.1.1M ATLAB的特点------------------------------------------ 19 3.1.2M ATLAB工具箱和内容------------------------------------ 19 3.2卷积码编码及仿真 -------------------------------------------- 20 3.2.1编码程序 ---------------------------------------------- 20 3.3信道传输过程仿真-------------------------------------------- 21 3.4维特比译码程序及仿真 ---------------------------------------- 22 3.4.1维特比译码算法解析------------------------------------ 23 3.4.2V ITERBI译码程序--------------------------------------- 25 3.4.3 VITERBI译码MATLAB仿真----------------------------------- 28 3.4.4信噪比对卷积码译码性能的影响 -------------------------- 28

基于matlab的2-3卷积码编码译码设计与仿真

西南科技大学 方向设计报告 课程名称:通信工程方向设计 设计名称:2/3卷积码编译码器仿真与性能分析 姓名: 学号: 班级: 指导教师: 起止日期:2011.12.12-2012.1.6 西南科技大学信息工程学院制

方向设计任务书 学生班级:学生姓名:学号: 设计名称:2/3卷积码编译码器仿真与性能分析 起止日期:2011.12.12-2012.1.6指导教师: 设计要求: (1)分析2/3卷积码编码器结构; (2)分析2/3卷积码译码的Viterbi算法; (3)基于SIMULINK进行2/3卷积码的纠错性能仿真; 方向设计学生日志 时间设计内容 12.15-12.17 查看题目及设计要求。 12.18-12.23 查阅相关资料,设计方案。 12.23-12.27 编写报告及调试程序。 12.28-12.29 完善修改课程设计报告。 12.30-12.31 答辩。

方向设计考勤表 周星期一星期二星期三星期四星期五 方向设计评语表 指导教师评语: 成绩:指导教师: 年月日

2/3卷积码编译码器仿真与性能分析 摘要: 卷积码是一种性能优越的信道编码。它的编码器和译码器都比较容易实现,同时它具有较强的纠错能力。随着纠错编码理论研究的不断深入,卷积码的实际应用越来越广泛。本文简明地介绍了卷积码的编码原理和Viterbi译码原理。并在SIMULINK模块设计中,完成了对卷积码的编码和译码以及误比特统计整个过程的模块仿真。最后,通过在仿真过程中分别改变卷积码的重要参数来加深理解卷积码的这些参数对卷积码的误码性能的影响。经过仿真和实测,并对测试结果作了分析。 关键词: 卷积码编码器、viterbi译码器、SIMULINK

卷积码的编解码Matlab仿真

卷积码的编解码Matlab仿真

卷积码的编解码Matlab仿真 摘要 卷积码是一种性能优越的信道编码。它的编码器和译码器都比较容易实现,同时它具有较强的纠错能力。随着纠错编码理论研究的不断深入,卷积码的实际应用越来越广泛。本文简明地介绍了卷积码的编码原理和译码原理。并在SIMULINK模块设计中,完成了对卷积码的编码和译码以及误比特统计整个过程的模块仿真。最后,通过在仿真过程中分别改变卷积码的重要参数来加深理解卷积码的这些参数对卷积码的误码性能的影响。经过仿真和实测,并对测试结果作了分析。得出了以下三个结论: (1)当改变卷积码的码率时,系统的误码性能也将随之发生变化。 (2)对于码率一定的卷积码,当约束长度N 发生变化时,系统的误码性能也会随之发生变化。 (3)回溯长度也会不同程度上地影响误码性能。 关键词:卷积码;码率;约束长度;回溯长度

Simulation and Research on Encoding and Decoding of Convolution Code Abstract Convolution code has a superior performance of the channel code. It is easy to coding and decoding. And it has a strong ability to correct errors. As correcting coding theory has a long development, the practice of convolution code is more and more extensive. In this thesis, the principle of convolution coding and decoding is introduced simply firstly. Then the whole simulation module process of encoding, decoding and the Error Rate Calculation is completed in this design. Finally, in order to understand their performances of error rate, many changes in parameters of convolution code are calculated in the simulation process. After simulation and measure, an analysis of test results is presented. The following three conclusions are draw: (1) When the rate of convolution Code changes, BER performance of the system will change. (2) For a certain rate of convolution code, when there is a change in the constraint length of N, BER performance of the system will change. (3) Retrospective length will affect BER. Key words:convolution code; rate; constraint length; retrospective length;

基于matlab的卷积码译码器的仿真设计

数字通信原理课程设计报告书

基于matlab的卷积码译码器的仿真设计 ) 1设计目的 卷积码是一种向前纠错控制编码。它将连续的信息比特序列映射为连续的编码器输出符号。这种映射是高度结构化的,使得卷积码的译码方法与分组码译码所采用的方法完全不同。可以验证的是在同样复杂度情况下,卷积码的编码增益要大于分组码的编码增益。对于某个特定的应用,采用分组编码还是采用卷积编码哪一种更好则取决于这一应用的具体情况和进行比较时可用的技术。 本课程设计便是通过Matlab设计一个硬判决维特比译码输出的完整电路,并进行误码率分析。 2设计的主要内容和要求 (1)要求能熟练地运用Matlab技术对卷积码译码器进行仿真。 (2)运用Matlab中Simulink单元来创建信源模块、信道模块、信宿模块、简易译码器模块等,并运用所有设计的模块来进行仿真。 3 设计原理 3.1卷积码 卷积码,又称连环码,是由伊莱亚斯(P.elias)于1955年提出来的一种非分组码。 卷积编码的最佳译码准则为:在给定已知编码结构、信道特性和接收序列的情况下,译码器将把与已经发送的序列最相似的序列作为传送的码字序列的估值。对于二进制对称信道,最相似传送序列就是在汉明距离上与接收序列最近的序列。 卷积码的译码方法有两大类:一类是大数逻辑译码,又称门限译码(硬判决,编者注);另一种是概率译码(软判决,编者注),概率译码又分为维特比译码和序列译码两种。门限译码方法是以分组码理论为基础的,其译码设备简单,速度快,但其误码性能要比概率译码法差。

当卷积码的约束长度不太大时,与序列译码相比,维特比译码器比较简单,计算速度快。维特比译码算法是1967年由Viterbi 提出,近年来有大的发展。目前在数字通信的前向纠错系统中用的较多,而且在卫星深空通信中应用更多,该算法在卫星通信中已被采用作为标准技术。 3.2 维特比译码原理 采用概率译码的基本思想是:把已接收序列与所有可能的发送序列做比较,选择其中码距最小的一个序列作为发送序列。如果发送L 组信息比特,那么对于(n,k )卷积码来说,可能发送的序列有2kL 个,计算机或译码器需存储这些序列并进行比较,以找到码距最小的那个序列。当传信率和信息组数L 较大时,使得译码器难以实现。维特比算法则对上述概率译码做了简化,以至成为了一种实用化的概率算法。它并不是在网格图上一次比较所有可能的2kL 条路径(序列),而是接收一段,计算和比较一段,选择一段最大似然可能的码段,从而达到整个码序列是一个最大似然值得序列。 下面以图3.2.1的(2,1,3)卷积码编码器所编出的码为例,来说明维特比解码的方法和运作过程。为了能说明解码过程,这里给出该码的状态图,如图3.2.2 示。维特比译码需要利用图来说明移码过程。根据卷积码画网格的方法,我们可以画出该码的网格图,如图3.2.3所示。该图设输入信息数目L=5,所以画L+N=8个时间单位,图中分别标以0至7。这里设编码器从a 状态开始运作。该网格图的每一条路径都对应着不同的输入信息序列。由于所有可能输入信息序列共有2kL 个,因而网格图中所有可能的路径也为2kL 条。这里节点a=00,b=01,c=10, b 图3.2.1 (2,1,3)卷积码编码器 图3.2.2 (2,1,3)卷积码状态图

CA码生成原理及matlab程序实现

C A码生成原理及 m a t l a b程序实现 The Standardization Office was revised on the afternoon of December 13, 2020

作业:用Matlab写C/A码生成器程序,并画生成码的方波图。 C/A码生成原理 C/A 码是用 m 序列优选对组合形成的 Gold 码。Gold码是由两个长度相同而互相关极大值为最小的 m 序列逐位模2 相加所得到的码序列。它是由两个10 级反馈移位寄存器组合产生的,其产生原理如图1 所示。 图1 C/A码生成原理 发生器的抽头号为3和10,发生器的抽头号为2、3、6、8、9、10;发生器的第10位输出的数字即为码,而码是由的两个抽头的输出结果进行模2相加得到。 卫星的PRN码与延时的量是相关联的,对C/A码来说,每颗卫星都有特别的延时,如第1颗GPS卫星的G2 抽为2、6,第2颗为3、7,第3 颗为4、8,第4 颗

为5、9 等,如图2所示。通过G2 相位选择可以产生结构不同的伪随机码,从而可以实现不同卫星之间的码分多址技术与卫星识别。 图2 prn序号与G2抽头、时延对应关系

基于MATLAB的GPS信号实现 编写成“codegen”程序,输入[ca_used]=codegen(svnum),其中svnum为卫星号,ca_used为得到的C/A码序列。程序具体实现流程如下:在程序中定义一个数组,使得卫星号与G2的码片延时一一对应。 gs2=[5;6;7;8;17;18;139;140;141;251;252;254;255;256;257;258;469;470;471;472;473 ;474;509;512;513;514;515;516;859;860;861;862]; 定义两个 1×1 023 的数组 g1、g2 用来存放生成的Gold 码。定义一个全1 的 10 位数组,作为移位寄存器,相当于G1、G2 生成模块的初值均置为全“1”。按原理式 来生成两个 Gold 码序列。设定两个 Gold 码产生器的反馈抽头: save1=reg(3)*reg(10); % g1 码的反馈值; save2=reg(2)*reg(3)*reg(6)*reg(8)*reg(9)*reg(10);%g2 码的反馈值。 在移位寄存器数组reg 中逐位移动,将末端值reg(10)送入g1(g2),将反馈抽头的模2 值输出 save1、save2 送入寄存器首位reg(1)。g1 码这样重复运算1 023 次后即可生成。g2 码在此基础上要引入与卫星号相对应的码片延时 g2s(s),s 为输入的卫星号。以码片延时时间作为分界点,将其后半段数据前移,前半段数据后移,这样就得到 g2 码。将产生的 g1 和g2 码逐点相乘,反向,即得 C/A 码。

基于MATLAB的卷积码的分析与应用毕业设计

毕业设计 基于MATLAB的卷积码的分析与应用

东北大学本科毕业设计(论文)毕业设计(论文)任务书毕业设计(论文)任务书 毕业设计(论文)题目: 基于MATLAB的卷积码的分析与应用 设计(论文)的基本内容: (1)介绍纠错控制编码的相关理论,重点分析卷积码的相关编码和解码理论。 (2)在MATLAB中编写卷积码的编码和解码程序,模拟通信系统,针对TD-SCDMA系统中的卷积码进行仿真。 (3) 进行纠错译码验证,纠错比较及误码率相关因素分析。 毕业设计(论文)专题部分: 题目: 设计或论文专题的基本内容: 学生接受毕业设计(论文)题目日期 第2周 指导教师签字: 2010年3月8日

基于MATLAB的卷积码的分析与应用 摘要 随着现代通信的发展,特别是在未来4G通信网络中,高速信息传输和高可靠性传输成为信息传输的两个主要方面,而可靠性尤其重要。因为信道状况的恶劣,信号不可避免会受到干扰而出错。为实现可靠性通信,主要有两种途径:一种是增加发送信号的功率,提高接收端的信号噪声比;另一种是采用编码的方法对信道差错进行控制。前者常常受条件限制,不是所有情况都能采用。因此差错控制编码得到了广泛应用。 介绍了多种信道编码方式,着重介绍了卷积码的编码方法和解码方式。介绍了MATLAB的使用方法、编程方法、语句、变量、函数、矩阵等。介绍了TD-SCDMA通信系统和该系统下的卷积码,搭建了系统通信模型。编写卷积码的编码和解码程序。用MATLAB仿真软件对TD-SCDMA系统的卷积码编解码进行仿真。对其纠正错码性能进行验证,并且对误码率进行仿真和分析。卷积码的编码解码方式有很多,重点仿真Viterbi算法。Viterbi算法就是利用卷积码编码器的格图来计算路径度量,选择从起始时刻到终止时刻的惟一幸存路径作为最大似然路径。沿着最大似然路径回溯到开始时刻,所走过的路径对应的编码输出就是最大似然译码输出序列。它是一种最大似然译码方法,当编码约束长度不大、或者误码率要求不是很高的情况下,Viterbi译码器设备比较简单,计算速度快,因而Viterbi译码器被广泛应用于各种领域。 关键词:卷积码;信道编码;TD-SCDMA;MATLAB

matlab卷积码程序

1、卷积码编码 function [output]=cnv_encd(input) %output=cnv_encd(g,k0,input) 卷积码编码函数 %g 生成矩阵 %k0 输入码长 %input 输入信源序列 %output 输出卷积编码序列 g=[1 1 1;1 0 1];编码矩阵 k0=1; input=[1 1 0 1]; if rem(length(input),k0)>0 input=[input,zeros(size(1:k0-rem(length(input),k0)))]; end n=length(input)/k0; if rem(size(g,2),k0)>0 error('Error,g is not of the right size.') end li=size(g,2)/k0; n0=size(g,1); u=[zeros(size(1:(li-1)*k0)),input,zeros(size(1:(li-1)*k0))]; u1=u(li*k0:-1:1); for i=1:n+li-2 u1=[u1,u((i+li)*k0:-1:i*k0+1)]; end uu=reshape(u1,li*k0,n+li-1); output=reshape(rem(g*uu,2),1,n0*(n+li-1)); 2、Viterbi译码程序 1) function y=bin2deci(x) l=length(x); y=(l-1:-1:0); y=2.^y; y=x*y'; 2) function y=deci2bin(x,l) y=zeros(1,l);

(完整word版)卷积码的编译码MATLAB程序

%survivor state是一个矩阵,它显T了通过网格的最优路径,这个矩阵通过一个单独的函 数metric(x,y)给出。 %其中G是一个矩阵,它的任一行决定了从移位寄存器到模2加法器的连接方式.为生成矩阵 %这里,我们做了一个简单的(2,1,7)卷积码编码器。 k=1; G=[1 0 1 1 0 1 1;1 1 1 1 0 0 1];%G1=133,G2=171 %以下3种输入序列,可任选一种% %input=[0 0 0 0 0 0 0];%全0输入 %input=[1 1 1 1 1 1 1];%全1输入 input=[round(rand(1,7)*1)];%随机系列输入,也可用 randint(1,7,[0 1]) figure;plot(input,'*r') %figure1:画图:目标input,红色(red,r),形状为* s=input; g1=G(1,:); g2=G(2,:); c1=conv(s,g1);%作卷积 %disp(c1); c2=conv(s,g2); %disp(c2); n=length(c1);%7位输入时n=13 c=zeros(1,2*n);%生成全0矩阵,1*26 %disp(c); for i=1:n c(2*i-1)=c1(i);c(2*i)=c2(i);%两个模2加法器分别输出卷积结果序列后,由旋转开关读取的结果(此时仅为卷积结果,非2进制0/1) end for i=1:2*n if(mod(c(i),2)==0)% mod(c(i),2)==0意思:c(i)除以2,余数为0 c(i)=0; else c(i)=1; end end output=c; channel_output=output;%输出矩阵 %disp(channel_output); figure;plot(output,'*b') %画图:目标:卷积码编码输出,蓝色(blue,b)* %————————————————以上为编码部分,以下为维特比译码———————————————— n=size(G,1);%取矩阵G的行数,故n=2。即得到输出端口,即2个模2加法器 %检验G的维数 if rem(size(G,2),k)~=0 %当矩阵G的列数不为k的整数倍时,rem为求余函数 error('Size of G and k do not agree')%报错 end if rem(size(channel_output,2),n)~=0 %当输出矩阵的列数不是输出端口n的整数倍时。(注:size(channel_output,2)=26,2个模2加法器合成的输出)

相关文档
最新文档