📄 preamble.c
字号:
/*****************************************************************************//* FIle Name : preamble.c *//* Description : WiMax OFDM Preamble Encoder *//* author : miffie *//* Date : oct/31/05 *//* Copyright (c) 2005 miffie All rights reserved. *//*****************************************************************************////////////////////////////////////////////////////////////////////////////////struct complexset ofdm_symbol( struct complexset datain, char CP ) { // struct complexset cset0 , cset1; //OFDM IFFT cset0 = idft256 ( datain ) ; cset1 = extract_complexset(cset0 , 256-CP , CP ) ; //Guard Interval cset1 = cat_complexset(cset1 , cset0 ) ; return( cset1 ) ;} //ofdm_symbolstruct complexset preamble( char CP ) { // struct complexset cset0, cset1 ;struct complex *ctmp1, *ctmp2 ;int ii ;static char Pall[]={ 1,-1, 1,-1, -1,-1, 1, 1, 1,-1, 1,-1, -1, 1, 1,-1, 1,-1, 1,-1, 1, 1, -1,-1, 1, 1, 1, 1, -1,-1, 1, 1, -1,-1, -1,-1, 1,-1, -1, 1, 1,-1, 1,-1, -1,-1, 1, 1, 1,-1, 1,-1, -1, 1, 1,-1, 1,-1, 1,-1, 1, 1, -1,-1, 1, 1, 1, 1, -1,-1, 1, 1, -1,-1, -1,-1, 1,-1, -1, 1, 1,-1, 1,-1, -1,-1, 1, 1, 1,-1, 1,-1, -1, 1, 1,-1, 1,-1, 1,-1, 1, 1, -1,-1, 1, 1, 1, 1, -1,-1, 1, 1, -1,-1, -1,-1, 1,-1, -1, 1, 1, 1, 1, 1, 1,-1, -1, 1, 1, 1, 1, 1, -1,-1, 1, 1, 1, 1, 1, 1, -1, 1, 1,-1, -1, 1, -1, 1, 1,-1, -1, 1, 1,-1, 1,-1, 1, 1, -1,-1, -1,-1, -1,-1, -1, 1, 1,-1, -1,-1, -1,-1, 1, 1, -1,-1, -1,-1, -1,-1, 1,-1, -1, 1, 1,-1, 1,-1, -1, 1, 1,-1, -1, 1, -1, 1, -1,-1, 1, 1, 0,0, -1,-1, 1, 1, -1, 1, -1, 1, -1,-1, 1, 1, 1, 1, 1, 1, -1,-1, 1, 1, 1,-1, 1,-1, 1,-1, -1, 1, -1, 1, 1, 1, -1, 1, 1,-1, -1,-1, -1,-1, -1, 1, 1,-1, 1, 1, 1, 1, -1, 1, 1,-1, 1,-1, 1,-1, -1, 1, 1,-1, -1,-1, -1,-1, -1,-1, 1, 1, 1, 1, 1, 1, 1, 1, -1,-1, -1, 1, -1, 1, 1, 1, -1,-1, 1,-1, 1,-1, 1, 1, -1,-1, -1,-1, -1,-1, 1, 1, -1,-1, -1, 1, -1, 1, -1, 1, 1,-1, 1,-1, 1,-1, 1,-1, -1, 1, 1, 1, 1, 1, -1,-1, 1, 1, -1, 1, -1, 1, -1,-1, 1, 1, 1, 1, 1, 1, -1,-1, 1, 1, 1,-1, 1,-1, 1,-1, -1, 1, -1, 1, -1, 1, -1, 1, 1,-1, -1,-1, -1,-1, 1,-1, -1, 1, -1,-1, -1,-1, 1,-1, -1, 1, -1, 1, -1, 1, 1,-1, -1, 1, 1, 1, 1, 1, 1, 1, -1,-1, -1,-1, -1,-1, -1,-1, 1, 1, 1,-1, 1,-1 }; if ((ctmp1 = (struct complex *)malloc(256*sizeof(struct complex))) == NULL) { //fail PRINTF( " malloc failed in preamble\n") ; } //fail else { //allocated PRINTF("preamble CP=%d\n", CP ) ; //SHORT Sequence //P4x64 equation(78) for (ii=-128;ii<128;ii++) { //shortseq ctmp1[ ii+128 ].realp = (abs(ii)>100) ? 0 : ((ii%4)==0) ? 2*Pall[(ii+100)*2] : 0 ; ctmp1[ ii+128 ].image = (abs(ii)>100) ? 0 : ((ii%4)==0) ? -2*Pall[(ii+100)*2+1] : 0 ; } //shortseq cset0.size = 256 ; cset0.data = ctmp1 ; print_complexset( cset0 ) ; cset0 = ofdm_symbol ( cset0, CP ) ; //LONG Sequence //Peven equation(79) for (ii=-128;ii<128;ii++) { //longseq ctmp1[ ii+128 ].realp = (abs(ii)>100) ? 0 : ((ii%2)==0) ? root2*Pall[(ii+100)*2] : 0 ; ctmp1[ ii+128 ].image = (abs(ii)>100) ? 0 : ((ii%2)==0) ? root2*Pall[(ii+100)*2+1] : 0 ; } //longseq cset1.size = 256 ; cset1.data = ctmp1 ; cset1 = ofdm_symbol ( cset1, CP ) ; cset0 = cat_complexset(cset0 , cset1 ) ; } //allocated return( cset0 ) ;} //preamble
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -