Comm Toolbox Turbo Coding - Not Systematic

Hello, I do not find the turbo coding implementation to match the description, which clearly shows that the systematic bits should appear at the output : https://www.mathworks.com/help/comm/ref/turboencoder.html. If I execute the following :
b1 = rand(1,100) > 0.5;
intrlvrIndices = 1 : length(b1);
hTEnc = comm.TurboEncoder('TrellisStructure', poly2trellis(4,[13 15],13), 'InterleaverIndices', intrlvrIndices);
b2 = step(hTEnc, double(b1)')';
plot(conv(2*b2-1,2*b1(end:-1:1)-1));
There is no trace of the systematic bits at the output. This renders both the encoder and decoder not useful for me. What am I missing ?

4 Comments

OK I figured it out. They interleave the three streams together. Add these lines, and you will see the peak :
>> b3 = reshape(reshape(b2,3,[])',1,[]);
>> plot(conv(2*b3-1,2*b1(end:-1:1)-1))
I'll add, however, that I can't get much else from this Matlab implementation. If I just change one of the polynomials, making them the same, the systematic bits vanish :
>> b1 = rand(1,100) > 0.5;
>> intrlvrIndices = 1 : length(b1);
>> hTEnc = comm.TurboEncoder('TrellisStructure', poly2trellis(4,[15 15],13), 'InterleaverIndices', intrlvrIndices);
>> b2 = step(hTEnc, double(b1)')';
>> b3 = reshape(reshape(b2,3,[])',1,[]);
>> plot(conv(2*b3-1,2*b1(end:-1:1)-1),'.-')
In addition, they offer no options on how to terminate the encoder, so there is no way to ensure that it would be suitable for a specific air interface, and, furthermore, it doesn't even seem like the number of output bits is correct. With a constraint length of 4, the number of memory elements is 3, so, for this example, there should be 3*(100+3) = 309 output bits. However, this puts out 312 bits.
I wish Mathworks made a better effort here to provide clarity, utility, and usefulness. This could be a very valuable part of the Toolbox, but, alas, I am finding it to be of no use at all.
At the bottom of the documentation page, there is a button to choose whether the documentation was useful or not. If you click on No then it brings up a form that allows you to input remarks for consideration by the documentation writers.
Next finding. Apparently, the way to ensure the systematic bits appear is that the first set of feed-forward taps match the feedback taps. The constituent code is rate 1/n, where n is the number of sets of feed-forward taps. It appears to be implied that the interleaved bits are fed through feed-forward tap sets 2 through n. You really have to dig into the convolutional encoder details, and examples, in order to realize how this is supposed to work. OK ... next topic ... tail bits.

Sign in to comment.

Answers (0)

Products

Asked:

on 26 Jan 2018

Edited:

on 30 Jan 2018

Community Treasure Hunt

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

Start Hunting!