#include <interleaver.h>
Inheritance diagram for simthlib::PolyphaseInterleaving3d:
Public Member Functions | |
PolyphaseInterleaving3d (int cols, int rows, int planes) | |
virtual void | print (std::ostream &os, bool debugInfo=false) const |
Protected Member Functions | |
void | initMappingVectors () |
Example: In the interleaved sequence the n polyphases of the input signal are arranged in the sequence 123...n123...n123...n123...n123...n.... After deinterleaving they are arranged as 11111...22222...33333........nnnnnn, where each of the polyphase components is interleaved individually.
For more details, consider the following example: A 4*3*2 deinterleaver, where the number of polyphases to be seperated is 2. In the following sequences, numbers denote the polyphases whereas letters denote the individual elements within the polyphase. Before deinterleaving, the sequence of elements is a1 a2 b1 b2 c1 c2 d1 d2 e1 e2 f1 f2 g1 g2 h1 h2 i1 i2 j1 j2 k1 k2 l1 l2
After deinterleaving it becomes a1 d1 g1 j1 b1 e1 h1 k1 c1 f1 i1 l1 a2 d2 g2 j2 b2 e2 h2 k2 c2 f2 i2 l2
If considered as a 3-dimensional Matrix, interleaving is achieved by filling the matrix one plane after the other, going row by row within each plane. The matrix is then read one column after the other, going row by row within each column.
|
constructor: number of cols, number of rows, number of planes (depth) Usually the number of planes are equal to the bits per Symbol in the used modulation Scheme. |
|
|
|
Reimplemented from simthlib::Interleaving. |