comm.ViterbiDecoder performing worse than vitdec

1 visualizzazione (ultimi 30 giorni)
I'm trying to get a simple "Hello World" example of convolutional coding and decoding to work. For some reason, the comm.ViterbiDecoder won't ever correctly decode the data, no matter which options I tried, while vitdec works just fine.
trellis = poly2trellis(7,[171 133]);
encoder1 = comm.ConvolutionalEncoder(trellis);
data = randi([0 1],70,1);
codedData = encoder1(data);
tbdepth = 34;
commDecoder = comm.ViterbiDecoder(trellis, 'TracebackDepth', tbdepth, 'InputFormat','Hard','TerminationMethod','Terminated');
decodedData1 = vitdec(codedData,trellis,tbdepth,'trunc','hard');
decodedData2 = commDecoder(codedData);
BER1 = biterr(data,decodedData1)
BER1 = 0
BER2 = biterr(data,decodedData2)
BER2 = 5

Risposta accettata

Nadia Shaik
Nadia Shaik il 6 Mar 2023
Hi Marian,
I understand that "comm.ViterbiDecoder" is not decoding the data as compared to "vitdec". The different termination methods could explain why the bit error rate differs between the two decoders.
In your case, you are using the "Terminated" method for "comm.ViterbiDecoder", and "trunc" for "vitdec". Consider setting the termination method "Truncated" for "comm.ViterbiDecoder" instead.
Here is the updated code snippet:
trellis = poly2trellis(7,[171 133]);
encoder1 = comm.ConvolutionalEncoder(trellis);
data = randi([0 1],70,1);
codedData = encoder1(data);
tbdepth = 34;
commDecoder = comm.ViterbiDecoder(trellis, 'TracebackDepth', tbdepth, 'InputFormat','Hard','TerminationMethod','Truncated');
decodedData1 = vitdec(codedData,trellis,tbdepth,'trunc','hard');
decodedData2 = commDecoder(codedData);
BER1 = biterr(data,decodedData1)
BER1 = 0
BER2 = biterr(data,decodedData2)
BER2 = 0
I hope this helps!
  1 Commento
Marian Keller
Marian Keller il 6 Mar 2023
Thank you very much. Could've sworn I also tried that, apparently not. The alternative solution my professor suggested was to append a few zeros to the data.

Accedi per commentare.

Più risposte (0)

Prodotti


Release

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by