当前位置:   article > 正文

STM32对于AD采集的数据进行滤波处理_ad采集滤波程序

ad采集滤波程序

中值平均滤波算法

  1. float data[20];
  2. float middleFilter(float in_data)//
  3. {
  4. float sum = 0;
  5. float temp[20];
  6. float change;
  7. int i,j;
  8. for(i=0; i<19; i++)
  9. {
  10. data[i]=data[i+1];
  11. }
  12. data[19] = in_data;
  13. for(i=0; i<20; i++)
  14. temp[i] = data[i];
  15. for(i=1; i<20; i++)
  16. for(j=0; j<20-i; j++)
  17. {
  18. if(temp[j] > temp[j+1])
  19. {
  20. change = temp[j];
  21. temp[j] = temp[j+1];
  22. temp[j+1] = change;
  23. }
  24. }
  25. for(i=5; i<15; i++)
  26. sum = sum + temp[i];
  27. return(sum/10);
  28. }

  该函数的功能是采集20个数据进行排序,去掉部分最大值和最小值取中间10个数的平均值,从而达到滤波处理的目的

  程序的关键在与data[19] = in_data;把AD数据传进数组,因为AD数据是不断采集的,data数组就用data【18】保存上一次采集的值,data【19】继续更新,这样就能取到一组AD数据的值了,并且不断更新,最后对数组进行从小到大排序后即可。

一阶滞后滤波法

  1. float first_order_lag_filter(float new_value)//
  2. {
  3. static float first_order_value , first_order_last_value;
  4. first_order_value = first_order_last_value;
  5. first_order_last_value = new_value;
  6. return (1 - aa)* new_value + aa * first_order_value;
  7. }

          CPU运行速度快,容易跳变

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/236626
推荐阅读
相关标签
  

闽ICP备14008679号