我不知道这是否适合这里,但这里是:
我使用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)