scikit-dsp-comm 中的 Viterbi 解码器给出了意外的输出

问题描述

给定多项式的卷积二进制代码

g1 = x2 + 1
g2 = x2 + x + 1
g3 = x2 + x + 1

我正在尝试使用 Python scikit-dsp-comm 库解码序列“110101011100011”:

import sk_dsp_comm.fec_conv as fec
import numpy as np

cc1 = fec.fec_conv(('101','111','111'),1)

y = np.array([1,1,1])
z = cc1.viterbi_decoder(y.astype(int),'hard')
print(z.astype(int))

输出是:[0,0],而我期望的是:[1,0]

然后我尝试通过编码然后解码来检查解决方案:

x = np.array([1,0])
y,state = cc1.conv_encoder(x,'000')
print(y.astype(int))
z = cc1.viterbi_decoder(y.astype(int),'hard')
print(x,z.astype(int))

编码序列y有期望值:[1 1 1 1 0 0 0 1 1 1 0 0 1 1 1]
但是解码器的输出再次出乎意料:[0,0]

我做错了什么?

fec_conv 实例里面好像有一些状态,但是我没能抓住原理,也找不到正确的参数或函数调用的顺序。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)