1.完整项目描述和程序获取
>面包多安全交易平台:https://mbd.pub/o/bread/Y5uak5xy
>如果链接失效,可以直接打开本站店铺搜索相关店铺:
>如果链接失效,程序调试报错或者项目合作也可以加微信或者QQ联系。
2.部分源码
3.部分仿真图预览
4.算法概述
卷积码的译码方法可分为代数译码和概率译码两大类,概率译码比较常用的有两种,一种叫序列译码,另一种叫Viterbi译码法,本实验主要是Viterbi译码方法的实现。它的基本思想是把接收到的矢量,和网格图上诸种可能的路径比较,删去距离大的路径,保留距离小的路径,以距离最小路径作为发码的估值.下面利用图解的方法来说明维特比解码的方法和运作过程。设输入编码器的信息序列为(1 1 0 1 1 0 0 0 ),则由编码器输出的序列 Y=(1 1 0 1 0 1 0 0 0 1 0 1 1 1 0 0 ),编码器的状态转移路线为 abcdbdca。若收到的序列R=(0 1 0 1 0 1 1 0 0 1 0 1 1 1 0 0 ),对照网格图来说明维特比译码的方法。
由于该卷积码的约束长度为 3位,因此先选择接收序列的前 6 位序列R1 =(0 1 0 1 0 1),同到达第 3时刻可能的 8 个码序列(即 8 条路径)进行比较,并计算出码距。该例中到达第3 时刻a点的路径序列是(0 0 0 0 0 0)和(1 1 1 0 1 1 ) ,它们与R1的距离分别是 3 和4;到达第 3 时刻b点的路径序列是(0 0 0 0 1 1)和(1 1 1 0 0 0) ,它们与R1的距离分别是 3 和4,到达第 3 时刻c点的路径序列是(0 0 1 1 1 0)和(1 1 0 1 1 0) ,与 R1 的距离分别是 4 和1;到达第 3 时刻d 点的路径序列是(0 0 1 1 0 1)和(1 1 0 1 1 0) ,与 R1 的距离分别是 2 和3。上述每个节点都保留码距较小的路径为幸存路径,所以幸存路径码序列是(0 0 0 0 0 0) 、 (0 0 0 0 1 1) 、 (1 1 0 1 0 1)和(0 0 1 1 0 1) ,如图4(a)所示。用与上面类同的方法可以得到第 4、5、6、7 时刻的幸存路径。需指出对于某一个节点而言比较两条路径与接收序列的累计码距时,若发生两个码距值相等,则可以任选一路径作为幸存路径,此时不会影响最终的译码结果。图 4(b)给出了第 5 时刻的幸存路径,在码的终了时刻a状态,得到一根幸存路径,如图 4(c)所示。由此看到译码器输出是R’ =(1 1 0 1 0 1 0 0 0 1 0 1 1 1 0 0) ,即可变换成序列(1 1 0 1 1 0 0 0) ,恢复了发端原始信息。比较 R’和R序列,可以看到在译码过程中己纠正了在码序列第 1 和第7位上的差错。当然,差错出现太频繁,以至超出卷积码的纠错能力,则会发生误纠,这是不希望的。