嵌入式常用之滑动平均数

xiaoxiao2025-08-14  27

算数平均数在N取较大的值时具有实时性不好的特点,针对这一特点采用滑动平均数。滑动平均每一次有新的数据到来时,就会计算一次平均。大概流程就是新的数据到来时,讲新数据存入数组,同时将最旧的那个数据去掉。 用PC模拟如下:

#include <stdio.h> #include <stdlib.h> #include <time.h> #define N 10 //数组中数据个数 float val; float val_buffer[N]; float result; float sum=0; //int count; char full_flag=0;//当前个数是否达到定义数组上线 int get_val() //模拟单片机输入变量 { int num; num=(float)(rand()%100); printf("num=%d\n",num); return num; } int main() { int i=0;//系统运行i次 int j=0; int k; srand((unsigned)time(0)); for(i=1;i<101;i++) { sum=0; val=get_val(); val_buffer[j++]=val; if(j==N) { full_flag=1; j=0; sum=0; } if(full_flag==0)//还没有到达数组上线 { for(k=0;k<j;k++) sum=sum+val_buffer[k]; result=sum/j; } else { for(k=0;k<N;k++) sum+=val_buffer[k]; result=sum/N; } if(i%10==0) printf("\n\r"); } printf(" result=%f \n\r",result); return 0; }
转载请注明原文地址: https://www.6miu.com/read-5034863.html

最新回复(0)