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