213卷积码编码和译码

合集下载

卷积码的译码ppt

卷积码的译码ppt
将所有可能的Cj 与R 作比较(计算距离), 选出其中 “最佳”的那个序列作为译码序列Ĉ 。
所谓“最佳”是指具有最大后验条件概率
P(C
/
R)
max[ j
P(C
j
/
R)]
(5-34)
信道模型一般只告知先验的转移概率,因此必须
通过贝叶斯公式找出先、后验两种概率间关
P(C j
/ R)
P(C j )P(R / C j ) P(R)
其他特 VIP专享精彩活动

VIP专属身份标识
专属客服
! 开通VIP后可以享受不定期的VIP优惠活随时随地彰显尊贵身份。 VIP专属客服,第一时间解决你的问题。专属客服Q全部权益:1.海量精选书免费读2.热门好书抢先看3.独家精品资源4.VIP专属身份标识5.全站去广告6.名
档消耗一个共享文档下载特权。
年VIP
月VIP
连续包月VIP
享受100次共享文档下载特权,一次 发放,全年内有效
赠每的送次VI的发P类共放型的享决特文定权档。有下效载期特为权1自个V月IP,生发效放起数每量月由发您放购一买次,赠 V不 我I送 清 的P生每 零 设效月 。 置起1自 随5每动 时次月续 取共发费 消享放, 。文一前档次往下,我载持的特续账权有号,效-自
VIP有效期内享有搜索结果页以及文档阅读页免广告特权,清爽阅读没有阻碍。
–知识影响格局,格局决定命运 多端互通
抽奖特权
VIP有效期内可以无限制将选中的文档内容一键发送到手机,轻松实现多端同步。 开通VIP后可以在VIP福利专区不定期抽奖,千万奖池送不停!
福利特权
开通VIP后可在VIP福利专区定期领取多种福利礼券。
特权福利
特权说明

编码理论 第12章 卷积码的序列译码

编码理论 第12章 卷积码的序列译码

北京邮电大学 信息工程学院
编码理论 第十二章 卷积码的序列译码
4、堆栈存储算法(3)
当算法终止时,存储器 中的领先路径就作为译 码路径。图 12.3 中示出堆栈 存储算法的一个完整流 程图。 在树的分叉部分,第一 步上有2 k 个新的量度要计算。在 树的尾部,只有 一个新的量度要计算。 注意:对于( n,1, m)码,在树的分叉部分 每译一 步,存储器的容量就要 增加一,但当译码器处 于树的尾部时就跟本不 再 增加了。由于树的分叉 部分通常远远大于尾部 (L m) , 故存储器的容 量粗略等于算法终止时 的译码步数。
北京邮电大学 信息工程学院
编码理论 第十二章 卷积码的序列译码
2、费诺量度(2)
例12.1研究图 12.1 的码树,假定此码中的 一个码字经由 BSC 传送,且接受 序列为r (010,010,001 ,110,100,101 ,011 ). 对我BSC ,维特比算法中一条路 径V的量)度值由d(r, v)给定,他是最大似 然路径,即一条量度最 小的路径,现在比较两 条不同长度的路径。 [例如: 截短码字 [v]5 ( 111 , 010 , 001 , 110 , 100 , 101 )和[ v]0 (000 ) ]的部分路径量度。 部分路径量度是 d([r ]5 , [ v]5) 2和d([r0 ],[ v]0 ) 1, 这表明 [ v]0 是两条路径 中“较好的”一个。然 而,直觉告诉我们,路 径[ v]5 要比[ v]更可能是部 分最大似然路径。因为 以[ v]0 开头来完成一条路径要 附加18 比特,而完 成以[ v 5 ]开头的整条路径只要求 加3比特。换句话说,以 [ v]0 作为开头的路 径远远比 [v5 ]开头的路径与 r之间的附加距离更可能 累积起来。

卷积码

卷积码

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15 x16 x17 x18 x19 x20 x21 x22 x23 x24 x25
可以看出交织可能会造成独立错误变成突发错误的特殊情况
级联码
级联码的最初想法是为了进一步降低残余误码率,但事实上它同 级联码的最初想法是为了进一步降低残余误码率, 样可以提高较低信噪比下的性能。 样可以提高较低信噪比下的性能。这是由较好构造的短码进一步 构造性能更好的长码的一种途径
纠正突发错误的码
分组码、循环码均可以检测、纠正突发错误 分组码、循环码均可以检测、 对于一个能纠正l个错误的( 对于一个能纠正l个错误的(n, k)分组码,要求: 分组码,要求: r = n – k ≥ 2l 2l 即一个( 即一个(n, k)分组码最多能纠正(n – k)/2个突发错误 分组码最多能纠正( )/2个突发错误 若再要求该( 若再要求该(n, k)分组码能够检测d个突发错误,则要求: 分组码能够检测d个突发错误,则要求: r=n–k≥l+d
下面是未进行交织处理的序列
x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15 x16 x17 x18 x19 x20 x21 x22 x23 x24 x25
假设在信道上发送时,产生了2个突发错误,如下红色部分所示: 假设在信道上发送时,产生了2个突发错误,如下红色部分所示:
10 11(1) 00 11(0) c 01 00(1)
b 01(1)
10(0)
a
11 d 01(0)
10(1)
卷积码的图解表示— 卷积码的图解表示—树状图
观察卷积码的状态迁移图,可知根据输入值的不同,编码器只向两种状态迁移, 观察卷积码的状态迁移图,可知根据输入值的不同,编码器只向两种状态迁移, 因此也可以用二叉树来描述卷积码 树状图绘制方法: 树状图绘制方法: 1)先假设其从某一状态开始; 先假设其从某一状态开始; 2)输入为0时,树状图向上延伸;输入为1时,向下延伸; 输入为0 树状图向上延伸;输入为1 向下延伸; 3)按照状态图在时间上的迁移顺序依次绘制,分支上的数字为编码器的输出 按照状态图在时间上的迁移顺序依次绘制, 编码方法: 编码方法: 1)从树根开始编码,每一节点为码元输入点; 从树根开始编码,每一节点为码元输入点; 2)到达每一节点时按照下一输入的码元向上(0)或向下(1)走; 到达每一节点时按照下一输入的码元向上( 或向下( 3)编码完毕后,将行走路径上的依次进行排列,即可得到卷积码序列 编码完毕后,将行走路径上的依次进行排列,

卷积码的编码

卷积码的编码
(1) (2) (1) (2) u (u 0 , u1 ,) (u0 u0 , u1(1)u1(2) , u2 u2 ,) , 或 作 为 两 个 输 入 序 列
5
第四章 卷积码的编码
(1) (1) (2) (2) u (1) (u0 , u1(1) , u2 ,) 和 u (2) (u0 , u1(2) , u2 ,) 。 对应于每个输入序

(1)
(0) (1) (2) g1, m g1, m g1, m (0) (1) (2) (4.17) g2, m g 2, m g 2, m
编码方程仍写为 v uG ,注意:G 中每 k=2 行都与前 2 行相同, 只 是 向 右 移 n=3 位 。 如 上 例 中 , u
v uG 11 01 11 11 11 01 11 11 (1 0 1 1 1) 11 01 11 11 11 01 11 11 11 01 11 11 (11 01 00 01 01 01 00 11)
(4.10)
与我们前面的计算一致! !
v (0) (1 0 1 1 1) (1 0 1 1) (1 0 0 0 0 0 0 1) v (1) (1 0 1 1 1) (1 1 1 1) (1 1 0 1 1 1 0 1)
(4.6) (4.7)
(0) (1) (4.8) gm gm
复用成一个序列为: v (11, 01, 00, 01, 01, 01, 00,11) 如果将生成器序列 g

其中空白区域为全 0,这样编码方程可写为矩阵形式:
v uG
4
(4.9)
G 称为该编码器的生成矩阵。我们注意到 G 中的每一行都与前一

卷积码编译码原理.ppt

卷积码编译码原理.ppt

000
000
000
000
000
000
000
000
000
000
001
001
001
001
001
001
001
001
001
001
010
010
010
010
010
010
010
010
010
010
011
011
011
011
011
011
011
011
011
011
100
100
100
100
100
100
100
100
100
100
距离,那么该最小汉明距离所对应的路径即为最优路
径。
卷积码编译码实现
(1)在实际应用中怎样去建立网格图?
(2)怎样计算最小汉明距离?
(3)在找到最优路径后怎样去译出原始的 信息码?
内容简介
卷积码简单介绍 卷积码编码实现 卷积码译码实现 总结
卷积码简单介绍
卷积码(convolutional code)是由伊利亚斯(p.Elias)发 明的一种非分组码。在前向纠错系统中,卷积码在实际 应用中的性能优于分组码,并且运算较简单。
注意:由于D1D2D3表示的顺序不同,所产生的 网格图和状态转移图也不同,并且译码过程是根据网 格图实现,所以本文所以涉及的维特比译码方法具有 一定的特殊性,但是整体过程还是具有研究价值。
D1D2D3 V1V2/in
00/0
000
01/0
001
10/1
11/0 010
00/1
10/0

信道编码卷积码原理编码译码

信道编码卷积码原理编码译码

(2)
m ' 0 0 1 1 0 0 . .. . . . 0 0 . .1 0 . .0 0 . .. .. . . . 0 0 . .1 0 . .0 0 . .. .. . . . m '( . . 1 ) m . .'( 2 . . )
000 000
.. ..
.... ....
000 000 000 000 000 000......

... ...
... ...
... ...
... ...
... ...
... ...
............
(11,011,100,000,139;''1 1
c(1,3) 10100.. ....
二. 卷积码-----有记忆的码-----有记忆编码电路
m(1)
c(1,1) 10000.. .... c(1)c(1,2)00000.. . .(.1.,0 01 0 ,00 ,0 01 0 ,00 0 ,.)0 ..,
(11, 11,11,11,...,)000 000 011 001 000 000 000 000 000 ......
000 000 000 101 000 001 000 000 000 ......
000 000 000 011 001 000 000 000 000 ......
000 000 001 000
000 000 000 000
000 000 000 000
000 000 000 000
000 000 000 000
000 000 000 000

卷积码编码及译码实验 浅谈卷积编码下的FPGA实现

卷积码编码及译码实验 浅谈卷积编码下的FPGA实现

卷积码编码及译码实验浅谈卷积编码下的FPGA实现
卷积编码是现代数字通信系统中常见的一种前向纠错码,区别于常规的线性分组码,卷积编码的码字输出不仅与当前时刻的信息符号输入有关,还与之前输入的信息符号有关。

本文主要是关于卷积码编码及译码实验的相关介绍,并着重分析阐述了基于卷积编码下的FPGA实现。

卷积编码卷积码的编码分为两类:前馈和反馈,在每类中又可分为系统和非系统形式。

我们这里只考虑非系统形式的前馈编码器。


上图是WLAN 802.11a协议中采用的卷积编码器结构,输入比特k=1,输出n=2,存储器长度m=6,编码输出不仅与当前输入有关,还与存储器存储的之前的输入数据有关,具体由之前的哪些数据得到编码输出呢,由生成多项式确定其连接关系。

这里,生成多项式为g0=133(八进制)和g1=171(八进制)(右边是最高位),输出数据A的生成多项式为:
输出数据B的生成多项式为:
生成多项式确定了卷积编码器输出的连接关系。

根据多项式的系数,在相应项进行连接。

生成多项式写成二进制序列的形式分别为:g0 = [1 0 1 1 0 1 1]和g1 = [1 1 1 1 0 0 1](右边是最高位)。

我们假设信息序列u,两个编码器输出序列分别为v(0)和v(1),编码器可以看成一个线性系统,系统的信道响应脉冲最多持续m+1个时间单元,编码输出可以写成编码输入与信道脉冲响应的卷积(即生成多项式),即
其中需要注意的是,所有的加法都是模2加运算。

卷积码编码及译码实验基本原理
1、卷积码编码
卷积码是一种纠错编码,它将输入的k个信息比特编成n个比特输出,特别适合以串行形。

实验二--卷积码编码及译码实验

实验二--卷积码编码及译码实验

实验二--卷积码编码及译码实验实验二卷积码编码及译码实验一、实验目的通过本实验掌握卷积编码的特性、产生原理及方法,卷积码的译码方法,尤其是维特比译码的原理、过程、特性及其实现方法。

二、实验内容1、观察NRZ基带信号及其卷积编码信号。

2、观察帧同步信号的生成及巴克码的特性。

3、观察卷积编码信号打孔及码速率匹配方法。

4、观察接收端帧同步过程及帧同步信号。

5、观察译码结果并深入理解维特比译码的过程。

6、观察随机差错及突发差错对卷积译码的影响。

三、基本原理1、卷积码编码卷积码是一种纠错编码,它将输入的k个信息比特编成n个比特输出,特别适合以串行形式进行传输,时延小。

卷积码编码器的形式如图17-1所示,它包括:一个由N段组成的输入移位寄存器,每段有k 段,共Nk 个寄存器;一组n 个模2和相加器;一个由n 级组成的输出移位寄存器,对应于每段k 个比特的输入序列,输出n 个比特。

12…k 12…k …12…k12…n 卷积码输出序列信息比特一次移入k 个Nk 级移位寄存器…图17-1 卷积编码器的一般形式由图17-1可以看到,n 个输出比特不仅与当前的k 个输入信息有关,还与前(N -1)k 个信息有关。

通常将N 称为约束长度(有的书中也把约束长度定为nN 或N -1)。

常把卷积码记为:(n 、k 、N ),当k =1时,N -1就是寄存器的个数。

编码效率定义为:/c R k n (17-1)卷积码的表示方法有图解表示法和解析表示法两种:解析法,它可以用数学公式直接表达,包括离散卷积法、生成矩阵法、码生成多项式法;图解表示法,包括树状图、网络图和状态图(最的图形表达形式)三种。

一般情况下,解析表示法比较适合于描述编码过程,而图形法比较适合于描述译码。

(1)图解表示法(2)解析法下面以(2,1,3)卷积编码器为例详细讲述卷积码的产生原理和表示方法。

(2,1,3)卷积码的约束长度为3,编码速率为1/2,编码器的结构如图17-2所示。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

No.15 (2,1,3)卷积码的编码及译码摘要:本报告对于(2,1,3)卷积码原理部分的论述主要参照啜刚教材和课件,编程仿真部分绝对原创,所有的程序都是在Codeblocks 8.02环境下用C语言编写的,编译运行都正常。

完成了卷积码的编码程序,译码程序,因为对于短于3组的卷积码,即2 bit或4 bit纠错是没有意义的,所以对正确的短序列直接译码,对长序列纠错后译码,都能得到正确的译码结果。

含仿真结果和程序源代码。

如果您不使用Codeblocks运行程序,则可能不支持中文输出显示,但是所有的数码输出都是正确的。

一、 卷积码编码原理卷积码编码器对输入的数据流每次1bit 或k bit 进行编码,输出n bit 编码符号。

但是输出的分支码字的每个码元不仅于此时可输入的k 个嘻嘻有关,业余前m 个连续式可输入的信息有关,因此编码器应包含m 级寄存器以记录这些信息。

通常卷积码表示为 (n,k,m). 编码率 k r n=当k=1时,卷积码编码器的结构包括一个由m 个串接的寄存器构成的移位寄存器(成为m 级移位寄存器、n 个连接到指定寄存器的模二加法器以及把模二加法器的输出转化为穿行的转换开关。

本报告所讲的(2,1,3)卷积码是最简单的卷积码。

就是2n =,1k =,3m =的卷积码。

每次输入1 bit 输入信息,经过3级移位寄存器,2个连接到指定寄存器的模二加法器,并把加法器输出转化为串行输出。

编码器如题所示。

二、卷积码编码器程序仿真 C 语言编写的仿真程序。

为了简单起见,这里仅仅提供数组长度30 bit 的仿真程序,当然如果需要可以修改数组大小。

为了更精练的实现算法,程序输入模块没有提供非法字符处理过程,如果需要也可以增加相应的功能。

进入程序后,先提示输入数据的长度,请用户输入int (整型数)程序默认用户输入的数据小于30,然后提示输入01数码,读入数码存储与input 数组中,然后运算输出卷积码。

经过实验仿真,编码完全正确。

以下是举例:a.课件上的输入101 输出11 10 00 的实验b.更长的序列测试三、卷积码译码原理由有限状态移位寄存器产生的卷积码实质上是一个有限状态机。

(n, k)线性分组码的最大似然译码就是在所有合法码字中找出一个最接近接收码字的码字。

卷积码的最大似然译码法则是对于给定的接收符号序列R,找出最大可能的编码符号序列C。

维特比于1967年提出的维特比算法能够系统地去除那些不可能具有最大度量的路径排除,从而降低了最大似然译码的复杂度。

(2,1,3)卷积码的状态图(2,1,3)卷积码的网格图卷积码一码通常按最大似然法则一码,对二进制对称信道(BSC),它就等小于最小汉明距离译码。

在这种译码器中,把接收序列和所有可能发送序列比较,选择一个汉明距离最小的序列盘坐发送序列。

由于信息序列编码序列有着一一对应关系,这种序列和网格图的一条路径唯一对应,因此译码就是根据接收序列R在网格图上全力搜索编码器在编码时经过的路径。

四、卷积码译码器程序仿真C语言编写的仿真程序。

为了简单起见,这里仅仅提供数组长度2×10 bit的仿真程序,当然如果需要可以修改数组大小。

为了更精练的实现算法,程序输入模块没有提供非法字符处理过程,如果需要也可以增加相应的功能。

进入程序后,先提示输入数据的长度,请用户输入int(整型数)程序默认用户输入的数据小于30,然后提示输入01数码,读入数码存储与input数组中,然后运算输出卷积码。

经过实验仿真,译码完全正确。

以下是举例:a.课件上接收码字11 10 00 译码101的实验b.对应上文中的,长序列译码测试结果c.译码与编码的区别在于容错性,如果在传输过程中有出错的比特,也应该用Viterbi decoder在一定的范围内自动纠错,得到正确的发端的编码,并翻译出发端的原码。

本报告中对于比较长的序列(>2)进行纠错。

以课件中的例子进行仿真R是收到的码字,C是发送方发出的正确的码字,R有2 bit信息出现错误。

运行程序的到结果。

当用译码器接收正确的序列C时显示以下结果:当接收到的序列错误时译码结果如下:如此时把译码结果输入上文中的编码器程序,即可得到发送方发出的正确的码字:综上,译码程序能对于正确的较短(<3组)的卷积码序列进行译码,得到正确的译码结果。

对于较长的序列(>2)可以纠错,纠正后,得到正确的卷积码,然后译码得到原码。

程序仿真完全正确。

d.模拟一个完整的传输过程:发送方输入序列11001010输入到编码器程序中:得到卷积码输出:11 01 01 11 11 10 00 10若传送到接收端,由于信道的各种干扰,接收码字发生了变化,得到的接收码字:11 11 01 11 01 10 11 10共有2 bit出现错误,输入到解码器中,纠错解码后得到:有效地纠错,解码,还原了发送方的信息。

e.进一步大量仿真得到结果:当错误量比较多,或者比较集中时,有些时候不能有效地纠错,得到的译码结果可能也有1bit是错误的。

具体截图略。

五、编码C源程序清单#include <stdio.h>#include <stdlib.h>short add3(short a,short b, short c)/* 3位模二加法器*/{short sum;sum = a+b+c;sum = sum%2;return sum;}short add2(short a,short b)/* 2位模二加法器*/{short sum;sum = a+b;sum = sum%2;return sum;}int main(){short a=0, b=0, c=0;/*三个移位寄存器初始状态为0*/int length=0;/*输入长度*/short x,y;/*两个输出寄存器*/short input[30];/*存储输入数据的数组*/int i;printf("需要输入几位数据?");scanf("%d",&length);printf("请输入%d位数字:\n",length);for (i=0;i<length;i++){scanf("%1hd",&input[i]);}printf("卷积码输出:\n");for (i=0;i<length;i++){c=b;b=a;a=input[i];/*移位运算*/x=add3(a,b,c);y=add2(a,c);printf("%d%d\n",x,y);}return 0;}六、译码程序清单#include <stdio.h>#include <stdlib.h>int de(codenow){/*短序列不纠错解码器*/int decode,now,code;now=codenow%100;code =(codenow-now)/100;/*分离状态和接收到的码字*/switch (now){case 10:if (code==10){now=01;decode=0;}else{now=11;decode=1;}break;case 11:if (code==01){now = 01;decode=0;}else{now=11;decode=1;}break;case 01:if (code==11){now = 00;decode=0;}else{now=10;decode=1;}break;case 00:if (code==00){now = 00;decode=0;}else{now=10;decode=1;}break;default:printf("error!");}codenow=decode*100+now;return codenow;}int hanming(int x, int y){/*计算xy两个2bit数的汉明距离*/int x1,x2,y1,y2,sum=0;/*分解数位*/x2=x%2;x1=(x-x2)/10;y2=y%2;y1=(y-y2)/10;if (x1 != y1)sum++;if (x2 != y2)sum++;return sum;}void correct(int code[],int length)/*长序列纠错解码器*/{int i,j,m,error=0;int *p;int d00=0, d10=0, d01=0, d11=0;int dz00=0, dz10=0, dz01=0, dz11=0;/*时刻1结束时*/int lu00[10]={0,0};int lu10[10]={0,1};int lu01[10]={1,0};int lu11[10]={1,1};int lz00[10]={0},lz10[10]={0};int lz01[10]={0},lz11[10]={0};d00=hanming(code[0],0)+hanming(code[1],0);d10=hanming(code[0],0)+hanming(code[1],11);d01=hanming(code[0],11)+hanming(code[1],10);d11=hanming(code[0],11)+hanming(code[1],01);for (i=2;i<length;i++){/*00状态路径*/if ((d00+hanming(0,code[i]))<(d01+hanming(11,code[i]))){for (j=0;j<i;j++){lz00[j]=lu00[j];}lz00[i]=0;dz00=d00+hanming(0,code[i]);}else{for (j=0;j<i;j++){lz00[j]=lu01[j];}lz00[i]=0;dz00=d01+hanming(11,code[i]);}/*10状态路径*/if ((d00+hanming(11,code[i]))<(d01+hanming(00,code[i]))) {for (j=0;j<i;j++){lz10[j]=lu00[j];}lz10[i]=1;dz10=(d00+hanming(11,code[i]));}else{for (j=0;j<i;j++){lz10[j]=lu01[j];}lz10[i]=1;dz10=d01+hanming(00,code[i]);}/*01状态路径*/if ((d10+hanming(10,code[i]))<(d11+hanming(01,code[i]))) {for (j=0;j<i;j++){lz01[j]=lu10[j];}lz01[i]=0;dz01=d10+hanming(10,code[i]);}else{for (j=0;j<i;j++){lz01[j]=lu11[j];}lz01[i]=0;dz01=d11+hanming(01,code[i]);}/*11状态路径*/if ((d10+hanming(01,code[i]))<(d11+hanming(10,code[i]))) {for (j=0;j<i;j++){lz11[j]=lu10[j];}lz11[i]=1;dz11=d10+hanming(01,code[i]);}else{for (j=0;j<i;j++){lz11[j]=lu11[j];}lz11[i]=1;dz11=d11+hanming(10,code[i]);}/*更新*/d00=dz00;d10=dz10;d01=dz01;d11=dz11;for (m=0;m<length;m++){lu00[m]=lz00[m];}for (m=0;m<length;m++){lu10[m]=lz10[m];}for (m=0;m<length;m++){lu01[m]=lz01[m];}for (m=0;m<length;m++){lu11[m]=lz11[m];}}/*最后一步,在四条路径中选择汉明距离最小的一条*/ error=d00;p=lu00;if (d01<error){error=d01;p=lu01;}if (d10<error){error=d10;p=lu10;}if (d11<error){error=d11;p=lu11;}printf("共有%d位错误,译码如下:\n",error);for (m=0;m<length;m++){printf("%d",*p);p++;}}int main(){int codenow=0;int now=0;/*当前状态*/int length=0;/*输入长度*/int decode;/*输出*/int code[20];/*存储输入数据的数组*/int i;printf("需要输入几组数据?");scanf("%d",&length);printf("请输入%d组接收到的数字:\n",length);for (i=0;i<length;i++){scanf("%2d",&code[i]);}/*长度大于3的用Viterbi decoder纠错过程如下,*/ if (length>2){correct(code,length);}/*长度小于3的直接译码*/else{printf("\n卷积码解码结果:\n");/*解码过程如下*/for (i=0;i<length;i++){codenow =code[i]*100+now;codenow=de(codenow);now=codenow%100;decode = (codenow-now)/100;printf("%d",decode);}}return 0;}。

相关文档
最新文档