Error Correction Capability of Viterbi Decoder

조회 수: 3 (최근 30일)
mounika
mounika 2017년 11월 1일
답변: Fatin Farihah Mohd 2018년 4월 11일
Hello folks,
I am using fec encoding followed by viterbi decoding. In this process, I observed that the viterbi decoder error correction capability doesn't go hand in hand with theoretical calculations.
For example, in this case, I am using 1/2 rate convolutional encoder for encoding. Theoretically, for 1/2 rate, dfree = 10 and according to error correction capability t = (df-1)/2 , which will intend to 4.5 approximating it to 4. This means, that it should correct 4 errors atleast.
In the following code, I am introducing two errors (randomly) for every 14 bits, vitdec is unable to correct them, it works fine when I introduce one error.
Can someone help me in understanding the reasoning behind it ? Your help will be highly appreciated. Thank you!
clc;clearvars;
%%Random Binary Generator
dataIn = randi([0 1],700,1);
%%Convolutional Encoder 1/2 rate
t = poly2trellis(7,[171,133]);
coderate = 1/2;
encoded = convenc(dataIn,t);
%%flip one bit for every 7 bits to introduce errors
for i = 1:14:(length(encoded))
temp = encoded(i:i+13);
u = randi([1 13],1,2);
temp(u(1)) = ~temp(u(1)); % one error
temp(u(2)) = ~temp(u(2)); % comment out to check for one error
encoded(i:i+13)= temp;
end
%%viterbi decoder
tbl = 30;
dataOut = vitdec(encoded,t,tbl,'cont','hard');
numErrsInFrameHard = biterr(dataIn(1:end-tbl),dataOut(tbl+1:end));
display(numErrsInFrameHard)

답변 (1개)

Fatin Farihah Mohd
Fatin Farihah Mohd 2018년 4월 11일
I got the same problem.. The maximum error can be corrected by Viterbi decoder is 2 bits only. Iam not sure about the formula.

카테고리

Help CenterFile Exchange에서 Error Detection and Correction에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by