matlab 使用vitdec的软判决Viterbi解码中的去穿孔

ckocjqey  于 2023-01-26  发布在  Matlab
关注(0)|答案(3)|浏览(457)

我正在使用Matlab实现一个通信系统,之前我使用convenc对二进制流进行了穿孔卷积编码,但是,我查看了vitdec(维特比解码)的文档,发现如下所示。

decoded = vitdec(code,trellis,tblen,opmode,dectype)
decoded = vitdec(code,trellis,tblen,opmode,'soft',nsdec)
decoded = ... vitdec(code,trellis,tblen,opmode,dectype,puncpat)
decoded = ... vitdec(code,trellis,tblen,opmode,dectype,puncpat,eraspat)
decoded = ... vitdec(...,'cont',...,initmetric,initstates,initinputs) 
[decoded,finalmetric,finalstates,finalinputs] = ... vitdec(...,'cont',...)

对于第二个函数定义(软解码),没有穿孔模式向量的参数,我该怎么做呢?

9q78igpj

9q78igpj1#

文档中没有列出以下函数,但我尝试了一下,它工作正常:

decoded = vitdec(code,trellis,tblen,opmode,'soft',nsdec,puncpat)

请确保您了解,现在code变量中的元素需要介于02^nsdec-1之间,而不是像硬决策模式那样介于01之间。

3b6akqbq

3b6akqbq2#

根据MATLAB文档(https://www.mathworks.com/help/comm/ref/vitdec.html
decoded = ... vitdec(code,trellis,tblen,opmode,dectype,puncpat)
DECTYPE指示解码器做出的判决的类型,并影响解码器在代码中期望的数据类型。
dectype的选择之一是“软”。看起来你只是在punctat中放入了穿孔模式,和你在convent中做的完全一样。

yvgpqqbh

yvgpqqbh3#

您可以使用此命令,假定code1是您的代码:

% trellis = poly2trellis(L, [n1 n2]); n1 and n2 is polynome order
% tbln = 1
c = vitdec(code1, trellis, tbln, 'trunc', 'hard')

相关问题