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