0

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

我有一些使用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)
4

0 回答 0