10种常用滤波算法C实现,2024年最新2024年抓住金三银四涨薪好时机

96 阅读1分钟

1、限副滤波 */

/* A值可根据实际情况调整 value为有效值,new_value为当前采样值
滤波程序返回有效的实际值 */ #define A 10 char value; char filter() { char new_value; new_value = get_ad(); if ( ( new_value - value > A ) || ( value - new_value > A ) return value; return new_value; } /2、中位值滤波法 / / N值可根据实际情况调整 排序采用冒泡法/ #define N 11 char filter() { char value_buf[N]; char count,i,j,temp; for ( count=0;count<N;count++) { value_buf[count] = get_ad(); delay(); } for (j=0;j<N-1;j++) { for (i=0;i<N-j;i++) { if ( value_buf[i]>value_buf[i+1] ) { temp = value_buf[i]; value_buf[i] = value_buf[i+1];
value_buf[i+1] = temp; } } } return value_buf[(N-1)/2]; }
/*3、算术平均滤波法 / / */ #define N 12 char filter() { int sum = 0; for ( count=0;count<N;count++) { sum + = get_ad(); delay(); } return (char)(sum/N); } /*4、递推平均滤波法(又称滑动平均滤波法) / / */ #define N 12
char value_buf[N]; char i=0; char filter() { char count; int sum=0; value_buf[i++] = get_ad(); if ( i == N ) i = 0; for ( count=0;count<N,count++) sum = value_buf[count]; return (char)(sum/N); } /*5、中位值平均滤波法(又称防脉冲干扰平均滤波法) / / / #define N 12 char filter() { char count,i,j; char value_buf[N]; int sum=0; for (count=0;count<N;count++) { value_buf[count] = get_ad(); delay(); } for (j=0;j<N-1;j++) { for (i=0;i<N-j;i++) { if ( value_buf[i]>value_buf[i+1] ) { temp = value_buf[i]; value_buf[i] = value_buf[i+1];
value_buf[i+1] = temp; } } } for(count=1;count<N-1;count++) sum += value[count]; return (char)(sum/(N-2)); } /
6、限幅平均滤波法 / *

  • /
    略 参考子程序1、3 7、一阶滞后滤波法 */

/* 为加快程序处理速度假定基数为100,a=0~100 */ #define a 50 char value; char filter() { char new_value; new_value = get_ad(); return (100-a)value + anew_value;
} /8、加权递推平均滤波法 / / coe数组为加权系数表,存在程序存储区。/ #define N 12

img img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取