output = lteConvolutionalDecode(input)
convolutional decoding of the input data vector,
output = lteConvolutionalDecode(
The input data is assumed to be soft bit data that has been encoded
by a tail-biting convolutional code with constraint length 7, coding
rate 1/3, and octal polynomials G0 =133, G1 =171
and G2 =165. Since the code is tail-biting,
be 1/3 of the length of the input. The input data vector is assumed
to be structured as three encoded parity streams concatenated block-wise.
[D0 D1 D2],
where D0, D1, and D2 are
the separate parity streams resulting from the original encoding with
individual polynomials G0, G1 and G2.
The decoder uses a soft input Viterbi algorithm
without any quantization.
Convolutionally decode soft bits.
Generate random bits and convolutionally encode them. QPSK modulate the coded bits and add noise to the received symbols.
txBits = randi([0 1],1000,1); codedData = lteConvolutionalEncode(txBits); txSymbols = lteSymbolModulate(codedData,'QPSK'); noise = 0.5*complex(randn(size(txSymbols)),randn(size(txSymbols))); rxSymbols = txSymbols + noise;
rxSymbols constellation, setting
txSymbols as the reference constellation.
xylimits = [-2.5 2.5]; cdScope = comm.ConstellationDiagram('ReferenceConstellation',txSymbols,'XLimits',xylimits ,'YLimits',xylimits); cdScope(rxSymbols)
Demodulate the noisy symbols to obtain soft bits. Convolutionally decode the soft bits. Display the number of erroneous bits.
softBits = lteSymbolDemodulate(rxSymbols,'QPSK','Soft'); rxBits = lteConvolutionalDecode(softBits); numberErrors = sum(rxBits ~= int8(txBits))
numberErrors = 0
input— Input data
Input data, specified as a column vector. The data is assumed to be soft bit data encoded by a tail-biting convolutional code with constraint length 7, coding rate 1/3 and octal polynomials G0=133, G1=171 and G2=165.