IT++ Logo

Interleaving and de-interleaving of data

This example shows how to use one of the interleaving classes.

#include <itpp/itcomm.h>

using namespace itpp;

//These lines are needed for use of cout and endl
using std::cout;
using std::endl;

int main()
{
  //Declare scalars and vectors:
  int rows, cols;
  ivec input, output, deinterleaved;

  //Declare the interleaver. The interleaver classes are templated, and therefore we must specify
  //the type of the data elements. In this example we are using integers:
  Block_Interleaver<int> my_interleaver;

  //Initialize the interleaver class. Note that this can be done already in the declaration by writing
  //Block_Interleaver<int> my_interleaver(rows,cols);
  rows = 4;
  cols = 5;
  my_interleaver.set_rows(rows);
  my_interleaver.set_cols(cols);

  //Define the input to the interleaver:
  input = "1:20";

  //Do the interleaving:
  output = my_interleaver.interleave(input);

  //Do the de-interleaving:
  deinterleaved = my_interleaver.deinterleave(output);

  //Print the results:
  cout << "input = " << input << endl;
  cout << "output = " << output << endl;
  cout << "deinterleaved = " << deinterleaved << endl;

  //Exit program:
  return 0;

}

When you run this program, the output will look like this:

input = [1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20]
output = [1 5 9 13 17 2 6 10 14 18 3 7 11 15 19 4 8 12 16 20]
deinterleaved = [1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20]
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
SourceForge Logo

Generated on Wed Jan 20 23:03:07 2010 for IT++ by Doxygen 1.6.2