维特比块解码

时间:2013-08-09 09:33:20

标签: algorithm matlab encoding viterbi

我不知道这是否适合这里,但这里是:

我使用Hamming Block Code编码了一些噪音数据,我想使用Viterbi Decoder解码它们。

我完成了我的作业,因此我知道维特比块解码器是如何工作的,但是我想避免自己实现它,因为这需要相当长的时间并且可能不是最理想的。

我的问题如下:你知道维特比块解码器的任何matlab函数吗? 我发现comm.ViterbiDecoder但它只适用于卷积编码。

与此同时,我尝试从编码器中检索尽可能多的信息,以备将来可能需要时使用(参见下面的代码)。

% Parameters
codewordLength = 31;
messageLength = 26;
data = randi([0, 1], 1, messageLength);

% Encoder 1
encoder1 = comm.BCHEncoder(...
    'CodewordLength', codewordLength, ...
    'MessageLength', messageLength);

% Encoder 2
M = ceil(log2(codewordLength+1));
primitivePolynomialDe = primpoly(M, 'nodisplay');
primitivePolynomialBi = fliplr(de2bi(primitivePolynomialDe));
SL = (2^M-1) - codewordLength;
generatorPolynomial = bchgenpoly(codewordLength + SL, ...
    messageLength + SL, primitivePolynomialDe);
encoder2 = comm.BCHEncoder(...
    'CodewordLength', codewordLength, ...
    'MessageLength', messageLength, ...
    'PrimitivePolynomialSource', 'Property', ...
    'PrimitivePolynomial', primitivePolynomialBi, ...
    'GeneratorPolynomialSource', 'Property', ...
    'GeneratorPolynomial', generatorPolynomial);



dataEncoded1 = step(encoder1, data.').';
dataEncoded2 = step(encoder2, data.').';

sum(dataEncoded1~=dataEncoded2)

0 个答案:

没有答案