# defineSAMPLE_SIZE 256

# definePI 3.415926f

intmain

{

E_SAMPLE rawSin[SAMPLE_SIZE];

E_SAMPLE outSin[SAMPLE_SIZE];

E_SAMPLE rawSquare[SAMPLE_SIZE];

E_SAMPLE outSquare[SAMPLE_SIZE];

t_MAF mvf;

FILE *pFile=fopen( “。/simulationSin.csv”, “wt+”);

/*方波测试*/

if(pFile== NULL)

{

printf( “simulationSin.csv opened failed”);

return-1;

}

for( inti= 0;i《SAMPLE_SIZE;i++)

{

rawSin = 100* sin( 2*PI* 20*i/SAMPLE_RATE)+rand% 30;

}

/*正弦信号测试*/

for( inti= 0;i《SAMPLE_SIZE/ 4;i++)

{

rawSquare = 5+rand% 10;

}

for( inti=SAMPLE_SIZE/ 4;i《 3*SAMPLE_SIZE/ 4;i++)

{

rawSquare = 100+rand% 10;

}

for( inti= 3*SAMPLE_SIZE/ 4;i《SAMPLE_SIZE;i++)

{

rawSquare = 5+rand% 10;

}

/*初始化*/

moving_average_filter_init(&mvf);

/*滤波*/

for( inti= 0;i《SAMPLE_SIZE;i++)

{

outSin=moving_average_filter(&mvf,rawSin);

}

for( inti= 0;i《SAMPLE_SIZE;i++)

{

fprintf(pFile, “%f,”,rawSin);

}

fprintf(pFile, “n”);

for( inti= 0;i《SAMPLE_SIZE;i++)

{

fprintf(pFile, “%f,”,outSin);

}

fclose(pFile);

pFile=fopen( “。/simulationSquare.csv”, “wt+”);

if(pFile== NULL)

{

printf( “simulationSquare.csv opened failed”);

return-1;

}

/*初始化*/

moving_average_filter_init(&mvf);

/*滤波*/

for( inti= 0;i《SAMPLE_SIZE;i++)

{

outSquare=moving_average_filter(&mvf,rawSquare);

}

for( inti= 0;i《SAMPLE_SIZE;i++)

{

fprintf(pFile, “%f,”,rawSquare);

}

fprintf(pFile, “n”);

for( inti= 0;i《SAMPLE_SIZE;i++)

{

fprintf(pFile, “%f,”,outSquare);

}

fclose(pFile);

return0;

}

对于方波测试,利用excel生成波形,可得如下的波形。从波形明显可见,长度为7的移动平均滤波器对于随机噪声的滤波效果比较满意。从图中还可以看出,移动平均滤波器在信号链中会引入一定的延时,在应用时需要考虑。对于一般的传感测量如果没有明确的要求,常常可以忽略。

对于正弦信号而言,移动平均滤波器也有比较明显的效果,只是其通带比较窄,如果有用信号频率比较高,则移动平均滤波器将不适合。