卷积编码--维特比译码

卷积编码

(n,k,m)的卷积编码器中,输出码组内的n个码元步进与该段内的k个信息位有关,海域前面m-1段内的信息位有关。

卷积编码的表达方法有很多种,如离散卷积法、生成矩阵法、码生成多项式法
如图(2,1,2)卷积编码器的结构图
在这里插入图片描述

(3,2,1)如下,输入每个clk下移动两位。
请添加图片描述

离散卷积法

若两路输出所对应的编码器的脉冲冲击响应为g1,g2,编码器用离散卷积表达式可以表示为 C 1 = U ∗ g 1 C 2 = U ∗ g 2 C = ( C 1 , C 2 ) \begin{aligned} &C^{1}=U^{*} g^{1}\\ &C^{2}=U^{*} g^{2}\\ &C=\left(C^{1}, C^{2}\right) \end{aligned} C1=Ug1C2=Ug2C=(C1,C2)
ps: 为什么叫做卷积码? 单位冲激响应与系统传递函数互为傅里叶变换关系
当输入的单位冲击为u=(1,0,0,0…)时,可以得出
g1=(1,0,1);g2=(1,1,1);即上图中的c1,c2.
有了单位冲激响应,将输入卷积单位冲激响应可得输出
那么由此也可得

生成矩阵表达形式

在这里插入图片描述

码多项式法

U ( x ) = 1 + x 2 + x 3 + x 4 g 1 ( x ) = 1 + x 2 g 2 ( x ) = 1 + x + x 2 \begin{aligned} &U(x)=1+x^{2}+x^{3}+x^{4}\\ &g^{1}(x)=1+x^{2}\\ &g^{2}(x)=1+x+x^{2} \end{aligned} U(x)=1+x2+x3+x4g1(x)=1+x2g2(x)=1+x+x2

在这里插入图片描述

卷积编码的matlab代码

代码

function [conv_out] = encoding_213(conv_in)
g1 = [1 0 1];
g2 = [1 1 1];
mem = zeros(1,2)
%详写卷积原理
for ii=1:length(conv_in)   
    inter_var = [conv_in(ii) mem];
    first_out(ii)=mod(sum(g1.*inter_var),2);
    second_out(ii)=mod(sum(g2.*inter_var),2);
    mem = inter_var(1:end-1);
    conv_out(ii*2-1:ii*2)=[first_out(ii) second_out(ii)];
end
conv_out = [conv_out 0 0 0 0]
end

编码结果就是卷积结果,卷积每一位结果都是三位输入和系统函数(翻转)相乘再相加。所以上述代码循环中,每次输入码就取三位进行乘加。

状态转移图

上图卷积编码器结构图寄存器中的值b1b2即为状态值。总共就4个状态00 01 10 11 。确定了当前状态,以及当前输入就能得到下一状态和当前输出。下图为状态转移图,图中虚线部分表示的是卷积编码器的输入是0,实线部分表示的是卷积编码器的输入是1。线上数字为当前输出c1c2.

在这里插入图片描述

译码—viterbi译码

某一时刻i,当前状态猜测可能情况为4种,对应下一状态也可能有四种。但是传输路径可能有8种。一般判决方式为对比真实接收序列和路径上的c1c2值。得到一条误差最小的路径,将该路径作为编码时状态转移值,进而得到发送信息。如下如,经过n时刻,那么路径数为 8 n {8^n} 8n,序列越长,那么比较的路径数就呈指数式增长。
在这里插入图片描述
viterbi算法,接收一个信息计算一下路径度量值,将会减少对比的路径数。
比如说某一时刻i下,有前面所有时刻的累计路径度量值,
到达四个状态的累计路径度量值为d1,d2,d3,d4.
当前时刻的路径度量值为r1,r2,r3,r4.(比如说,r1为接收码字与00的距离,r2为接收码字与11的距离)。
那么下一状态的累计路径度量值将会有两个,比如到达state00的累计路径度量值有(d1+r1)和(d2+r2)两个,比较这两个值,舍弃较大值,保留较小值,该较小值即为下一状态的累计路径度量值。
关于较大值为什么可以舍弃。会不会某条包含该较大值的路径总体上看路径度量值较小呢?
答案是否定的。
因为对比的两条路径,与之前i-1个时刻的状态选择无关,与之后的状态选择也无关(虽然是累计值)
在这里插入图片描述
经维特比算法之后,最终比较的路径就四条。然后可以比较得一最小值作为最终状态转移路径,然后得到发送码字。
还可以发送比特最后添零,使得状态最后为00状态。那么最终路径就只有唯一确定得一条。

  • 8
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值