给个24点的参数。

#define PI 3.1415926

//24点付氏算法,返回long值并放大128倍,g:连续存放24点数据缓冲区首地址

#define FOURIER_R_24L(g) ( (int32)( 66l*( (int32)g[0] + (int32)g[10] - (int32)g[12] - (int32)g[22] )\

+ (( (int32)g[1] + (int32)g[9] - (int32)g[13] - (int32)g[21] )<<7) \

+ 227l*((int32)g[3] +  (int32)g[7]  - (int32)g[15] - (int32)g[19] )\

+ 247l*((int32)g[4] +  (int32)g[6]  - (int32)g[16] - (int32)g[18] )\

+ 181l*( (int32)g[2] + (int32)g[8]  - (int32)g[14] - (int32)g[20] )\

+ ((int32)g[5]<<8) - ((int32)g[17]<<8) ) )

//24点付氏算法,返回long值并放大128倍,g:连续存放24点数据缓冲区首地址

#define FOURIER_X_24L(g)  ( (int32)( 247l*((int32) g[0] - (int32)g[10] - (int32)g[12] + (int32)g[22] ) + 227l*( (int32)g[1]\

- (int32)g[9] - (int32)g[13] + (int32)g[21] ) + 181l*( (int32)g[2] - (int32)g[8]  - (int32)g[14] + (int32)g[20] )\

+ (((int32)g[3] -  (int32)g[7]  - (int32)g[15] + (int32)g[19] )<<7)\

+ 66l*((int32)g[4] -  (int32)g[6]  - (int32)g[16] + (int32)g[18] )\

+ ((int32)g[23]<<8) - ((int32)g[11]<<8) ) )

//24点半波付氏算法 //@2007.08.27  //ZHOUTING

//返回long值并放大128倍,g:连续存放24点数据缓冲区首地址

#define FOURIER_X_24L_HALF(g)  ( (INT32)( 247l*((INT32) g[0] - (INT32)g[10])        \

+ 222l*((INT32)g[1] - (INT32)g[9])  \

+ 181l*((INT32)g[2] - (INT32)g[8]) \

+ (((INT32)g[3] -  (INT32)g[7])<<7)  \

+ 66l*((INT32)g[4] -  (INT32)g[6])   \

- ((INT32)g[11]<<8) ) )

#define FOURIER_R_24L_HALF(g) ( (INT32)( 66l*( (INT32)g[0] + (INT32)g[10] ) \

+ (( (INT32)g[1] + (INT32)g[9] )<<7 )   \

+ 181l*((INT32)g[2] + (INT32)g[8] )  \

+ 222l*((INT32)g[3] +  (INT32)g[7] )  \

+ 247l*((INT32)g[4] +  (INT32)g[6] )  \

+ ((INT32)g[5]<<8) ) )

计算如下:  Aui[24]  放采样点

UiR = FOURIER_R_24L(Aui)>>8; //计算实部

UiX = FOURIER_X_24L(Aui)>>8;//计算虚部

fUi =sqrt_16( UiR*UiR+UiX*UiX);//计算有效值

AC_val_UIC = (int32)((fUi>>2) * ADJ_PARAM.ADJ_Aui_ratio)/10;   //乘校准系数计算实际输入电压

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐