Error Correction Capability of Viterbi Decoder
10 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
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)
0 Kommentare
Antworten (1)
Fatin Farihah Mohd
am 11 Apr. 2018
I got the same problem.. The maximum error can be corrected by Viterbi decoder is 2 bits only. Iam not sure about the formula.
0 Kommentare
Siehe auch
Kategorien
Mehr zu Error Detection and Correction finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!