www.pudn.com > wimax_ofdm_implementation_code.rar > idft256.c
/*****************************************************************************/
/* FIle Name : idft256.c */
/* Description : WiMax OFDM IFFT for Encoder */
/* author : miffie */
/* Date : oct/31/05 */
/* Copyright (c) 2005 miffie All rights reserved. */
/*****************************************************************************/
struct complexset idft256 (struct complexset datain ) {
int nn , kk ;
struct complexset cset ;
struct complex *top , *p ;
struct complex tmp1, tmp2 ;
double p1 ;
//Main
if ((top = (struct complex *)malloc(256*sizeof(struct complex)) ) == NULL) {
PRINTF( " malloc failed in idft256.c\n") ;
} //fail
else { //allocated
PRINTF("idft256 size=%d\n", datain.size ) ;
for(nn=0;nn<=255;nn++) { //each sample
//pilot
tmp1.realp = 0 ;
tmp1.image = 0 ;
p= datain.data ;
for(kk=-128;kk<=127;kk++) { //each subcarrier
p1 = 2*pi*nn*kk/256 ;
tmp2.realp = cos( p1 ) ;
tmp2.image = sin( p1 ) ;
tmp2 = multiply_complex(*p++ , tmp2) ;
tmp1.realp += tmp2.realp ;
tmp1.image += tmp2.image ;
}//each subcarrier
top[nn].realp = tmp1.realp/256 ;
top[nn].image = tmp1.image/256 ;
} //each sample
cset.size = 256 ;
cset.data = top ;
}//allocated
//free ( datain.data ) ;
return ( cset ) ;
} //idft256