0

これがここに当てはまるかどうかはわかりませんが、次のようになります。

Hamming Block Codeを使用してエンコードされたノイズの多いデータがあり、 Viterbi Decoderを使用してデコードしたいと考えています。

宿題を作ったので、Viterbi Block Decoder がどのように機能するかはわかりましたが、かなりの時間がかかり、最適ではない可能性があるため、すべてを自分で実装することは避けたいと思います。

私の質問は次のとおりです。Viterbi Block 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