This program computes the EXtrinsic Information Transfer (EXIT) chart for Parallel Concatenated Convolutional Codes (PCCCs) of coding rate 1/3. Actually the Transfer Characteristics (TCs) of the two SISO RSC modules used in the turbo decoder are computed at a given Signal to Noise Ratio (SNR).
Reference: S. ten Brink, ''Convergence behavior of iteratively decoded parallel concatenated codes,`` IEEE Transactions on Communications, vol. 49, pp. 1727-1737, Oct. 2001
using std::cout;
using std::endl;
using std::string;
{
ivec gen = "07 05";
double R = 1.0 / 3.0;
double Ec = 1.0;
double sigma2 = (0.5 * Ec / R) * pow(inv_dB(
EbN0_dB), -1.0);
double Lc = -2 / sigma2;
bvec tail;
extrinsic_mutual_info.zeros();
RNG_randomize();
cout <<
"I_A = " << apriori_mutual_info(
en) << endl;
}
}
}
ff <<
Name(
"IA") << apriori_mutual_info;
ff <<
Name(
"IE") << extrinsic_mutual_info;
return 0;
}
Ordinary AWGN Channel for cvec or vec inputs and outputs.
Array< T > left(int n) const
Get n left elements of the array.
int length() const
Returns the number of data elements in the array object.
BPSK modulator with real symbols.
void modulate_bits(const bvec &bits, vec &output) const
Modulate bits into BPSK symbols in complex domain.
EXtrinsic Information Transfer (EXIT) chart.
Automatic naming when saving.
A Recursive Systematic Convolutional Encoder/Decoder class.
void set_generator_polynomials(const ivec &gen, int constraint_length)
Set generator polynomials.
void encode_tail(const bvec &input, bvec &tail, bmat &parity_bits)
Encode a binary vector of inputs and also adds a tail of K-1 zeros to force the encoder into the zero...
Soft Input Soft Output (SISO) modules.
The IT++ file format reading and writing class.
double pow10(double x)
Calculate ten to the power of x (10^x)
Include file for the IT++ communications module.
Mat< bin > bmat
bin matrix
When you run this program, the results (mutual a priori and extrinsic information, EbN0_dB, etc.) are saved into exit_pccc.it file. Using the following MATLAB script
clear all
itload('exit_pccc.it')
plot(IA, IE, 'LineWidth', 3)
hold on
plot(IE_p, IA, 'LineWidth', 3)
xlabel('I_A^{(up)}, I_E^{(low)}')
ylabel('I_E^{(up)}, I_A^{(low)}')
grid on
title(['E_b/N_0 =
' num2str(EbN0_dB) ' dB'])
double dB(double x)
Decibel of x (10*log10(x))
the EXIT chart can be displayed.