detect_drift.c
来自「介绍关于WiMax(IEEE802.16)物理层调制解调编码等相关设计实现」· C语言 代码 · 共 51 行
C
51 行
/*****************************************************************************//* FIle Name : detect_drift.c *//* Description : Wi-Max detection of Drift *//* author : miffie *//* Date : oct/18/05 *//* Copyright (c) 2005 miffie All rights reserved. *//*****************************************************************************////////////////////////////////////////////////////////////////////////////////double detect_drift( struct complexset datain , short distance, double coef, char offset ) { // double lpfout , lpfreg, drift ;struct complex tmp1 , tmp2 ;int ii ;int size ;//double drift_phase, drift_amount ; //Main lpfout = 0 ; size = datain.size-distance ; //search for(ii=offset;ii<size;ii++) { //each symbol tmp1.realp = datain.data[ii+distance].realp ; tmp1.image = datain.data[ii+distance].image ; tmp1 = cordic ( tmp1 ) ; tmp2.realp = datain.data[ii].realp ; tmp2.image = datain.data[ii].image ; tmp2 = cordic ( tmp2 ) ; //-pi<=tmp1<pi //-pi<=tmp2<pi drift = tmp1.image-tmp2.image ; //-2pi<drift<2pi => -pi<drift<pi Normalization drift = (drift>pi) ? drift -2*pi : (drift<-pi) ? drift +2*pi : drift ; //if phase is different from previous one, correct drift = ((drift>=(pi/4.0))&(drift<(3.0*pi/4.0))) ? drift - (pi/2.0) : (drift>=(3.0*pi/4.0)) ? drift - pi : (drift<=(-3.0*pi/4.0)) ? drift + pi : ((drift<=(-pi/4.0))&(drift>(-3.0*pi/4.0))) ? drift + (pi/2.0) : drift ; //lpfout += drift ; lpfout = iir_lpf( drift, lpfout, coef ) ; } //each symbol lpfout = lpfout/distance ; PRINTF("detect_drift size=%d %8.5f\n", datain.size , lpfout) ; return( lpfout ) ;} //detect_drift
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?