畳み込み符号化と復号化に取り組んでいます。MATLAB では、デコードに vitdec() 関数を使用しています。結果は問題なく、ビット エラー率は予想どおりですが、この関数をさらに深く掘り下げたいと思います。vitdec() によって呼び出されている vit() 関数にヒットするまではうまくいっていました (vitdec(function Matlab) のコード行 402)。 )。これまでのところ、MathWorks やその他の場所でこの関数に関するヘルプを見つけることができません。
以下の vit() 関数を使用する vitdec() MATLAB 関数のその部分を貼り付けています。
% Call to vit.c
code = double(code); % for proper numerical operation
[varargout{1}, varargout{2}, varargout{3}, varargout{4}] ...
= vit(code, k, n, trellis.numStates, outputs, trellis.nextStates,...
tblen, opmodeNum, dectypeNum, nsdec, puncErasMode, puncVectorRow,...
erasVector, initTableSet, initmetric, initstate, initinput);
% Set output data type to logical if appropriate
if outLog, varargout{1} = logical(varargout{1});
end
else
[varargout{1}, varargout{2}, varargout{3}, varargout{4}] ...
= vitdeccore(code, k, n, trellis.numStates, outputs, trellis.nextStates,...
tblen, opmodeNum, dectypeNum, nsdec, puncErasMode, puncVectorRow,...
erasVector, initTableSet, initmetric, initstate, initinput);
ビタビアルゴリズムがどのように機能するかを知っています。結果がMATLABの結果と一致するC言語で実装しました。videc() がブランチとパスのメトリックをどのように計算するかを段階的に確認したいだけです。リンク/書籍の参照は大歓迎です。