void InterleaverSetup( ) { /* _CodewordLen表示交织器长度 */ShaffleRule = new int[_CodewordLen]; BufferI = new int[_CodewordLen]; BufferD = new double[_CodewordLen]; int j; for( j=0; j<_CodewordLen; j++ ) { ShaffleRule[j] = j; } Scramble( &ShaffleRule[0], _CodewordLen, 25 ); }
void Interleaver( int *input ) { int i; for( i=0; i<_CodewordLen; i++ ) BufferI[i] = input[i]; for( i=0; i<_CodewordLen; i++ ) input[ShaffleRule[i]] = BufferI[i]; }
void Interleaver( double *input ) { int i; for( i=0; i<_CodewordLen; i++ ) BufferD[i] = input[i]; for( i=0; i<_CodewordLen; i++ ) input[ShaffleRule[i]] = BufferD[i]; }
void DeInterleaver( int *input ) { int i; for( i=0; i<_CodewordLen; i++ ) BufferI[i] = input[i]; for( i=0; i<_CodewordLen; i++ )
input[i] = BufferI[ShaffleRule[i]]; }
void DeInterleaver( double *input ) { int i; for( i=0; i<_CodewordLen; i++ ) BufferD[i] = input[i]; for( i=0; i<_CodewordLen; i++ ) input[i] = BufferD[ShaffleRule[i]]; }