【信道编码/Channel Coding】卷积码和Viterbi译码及其MATLAB实现

简介:


这是本专栏信道编码/Channel Coding的最后一站,想对信道编码有一个系统性的认识可以看本专栏的 信道编码的整体框架 一文。而在本篇文章中,将介绍卷积码的基本原理和Viterbi译码的过程,以及其MATLAB实现。为什么是最后一站呢,明明还有Turbo码,LDPC码和Polar码,这是因为这是我本科的总结,那些码由于实现起来需要很多细节,有很多研究价值,我希望在我的研究生生涯能够完善。

目录

简介:

一、卷积码的原理

1.1 卷积码的符号表示

1.2 运作原理

二、 举例:(2,1,2)卷积编码器

2.1 状态转移表

2.2 状态转移图

2.3 网格图

三、Viterbi译码

3.1 译码过程(以上述(2,1,2)卷积码为例)(假设用硬判决)

3.2 硬判决和软判决

四、MATLAB实现


一、卷积码的原理


1.1 卷积码的符号表示

和分组码稍有不同,卷积码的符号表示有三个维度,(n,k,L)中,n和k和分组码不同,n是每次输出的码字长度,k是每次输入的信息比特长度,而L就是记忆深度,卷积编码器的图表示如下:

1.2 运作原理

  • 每过一个时间单位,比如从 t=0 到 t=1, k个比特从输入端输入k位的移位寄存器,而每一个移位寄存器里的k个比特输入到这个寄存器之后的一个寄存器。总共有L个k位移位寄存器。
  • 紧接着上面的,有L个k位寄存器意味着有k*L个比特。根据设计的不同,每一个比特对n个模二加运算器有独特的影响。
  • 模二加运算器的输出结果作为输出,所以一次输出n个比特。
  • 移位寄存器初始状态都是0

二、 举例:(2,1,2)卷积编码器


 可以看到,(2,1,2)卷积编码器是一个,每一时刻只有一个输入,但是会输出两位(两个模二加运算器)的卷积编码器,里面的寄存器都是1位的,共有两个寄存器(两个记忆深度)。而模二加运算器的数学表达如下:

y_1=Input\bigoplus D_1\bigoplus D_2

y_2=Input\bigoplus D_2

 假如输入序列为 x=10101,则其规律会是这样:

2.1 状态转移表

我们会发现,寄存器的状态就只有00,01,10,11四种可能,而输入只有0/1两种可能,所以输出一定也是伪随机的,也就是说输入输出的关系只有2x4=8种可能,我们将其列表:

输入 当前状态 下个状态 输出1
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值