/*

10种简单的数字滤波C语言源程序算法

假定从8位AD中读取数据(如果是更高位的AD可定义数据类型为int),子程序为get_ad();

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

{

value_buf[count] = get_ad();

delay();

}

for (j=0;j

{

for (i=0;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

{

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

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

{

value_buf[count] = get_ad();

delay();

}

for (j=0;j

{

for (i=0;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

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 + a*new_value;

}

/*8、加权递推平均滤波法 */

/* coe数组为加权系数表,存在程序存储区。*/

#define N 12

char code coe[N] = {1,2,3,4,5,6,7,8,9,10,11,12};

char code sum_coe = 1+2+3+4+5+6+7+8+9+10+11+12;

char filter()

{

char count;

char value_buf[N];

int  sum=0;

for (count=0,count

{

value_buf[count] = get_ad();

delay();

}

for (count=0,count

sum += value_buf[count]*coe[count];

return (char)(sum/sum_coe);

}

/*9、消抖滤波法 */

#define N 12

char filter()

{

char count=0;

char new_value;

new_value = get_ad();

while (value !=new_value);

{

count++;

if (count>=N)   return new_value;

delay();

new_value = get_ad();

}

return value;

}

/*

10、限幅消抖滤波法

/ *

* /

略 参考子程序1、9*/

c语言常用滤波算法,10种常用滤波算法C实现.c相关推荐

  1. **10种常用的网络营销方法**

    **10种常用的网络营销方法** 网络营销产生于20世纪90年代,发展至今已演变出越来越多的营销方法,在国内随着互联网影响的进一步扩大,人们对网络营销认知的进一步加深,网络营销方法手段也是各种推陈出新 ...

  2. tensorflow玻尔兹曼机_资源 | 10种深度学习算法的TensorFlow实现

    原标题:资源 | 10种深度学习算法的TensorFlow实现 选自 Github 作者:blackecho 机器之心编译 参与:吴攀 这个 repository 是使用 TensorFlow 库实现 ...

  3. matlab限幅滤波法,几种常用的滤波方法

    几种软件滤波算法的原理和比较 第1种方法:限幅滤波法(又称程序判断滤波法) A方法: 根据经验判断,确定两次采样允许的最大偏差值(设为A),每次检测到新值时判断: 如果本次值与上次值之差<=A, ...

  4. 10种常用的网络营销方法

    网络营销产生于20世纪90年代,发展至今已演变出越来越多的营销方法,在国内随着互联网影响的进一步扩大,人们对网络营销认知的进一步加深,网络营销方法手段也是各种推陈出新,下面就介绍如今网络营销最常用的1 ...

  5. 第九十一期:架构设计常用到的10种设计模式,你都知道吗?

    企业规模的软件系统该如何设计呢?在开始写代码之前,我们需要选择一个合适的架构,这个架构将决定软件实施过程中的功能属性和质量属性.因此,了解软件设计中的不同架构模式对我们的软件设计会有较大的帮助. 作者 ...

  6. 自动驾驶算法-滤波器系列(六)——10+种经典滤波算法

    经典滤波器介绍 1.限幅滤波法(又称程序判断滤波法) 2.中位值滤波法 3.算术平均滤波法 4.递推平均滤波法(又称滑动平均滤波法) 5.中位值平均滤波法(又称防脉冲干扰平均滤波法) 6.限幅平均滤波 ...

  7. 查找算法-4种常用的查找算法

    文章目录 一.查找算法是什么? 查找算法简介 二.查找算法介绍及实现 1.顺序查找 算法描述 代码实现: 2.二分查找/折半查找 算法描述 代码实现: 3.插值查找 算法描述 代码实现: 4.斐波那契 ...

  8. 算法 c语言_C语言中10个经典的算法,学会它,利用它

    C语言中有有许多经典的算法,这些算法都是许多人的智慧结晶,也是编程中常用的算法,这里面包含了众多算法思想,掌握这些算法,对于学习更高级的.更难的算法都会有很大的帮助,会为自己的算法学习打下坚实的基础. ...

  9. c 语言从大到小排序算法,10 大经典排序算法(动图演示+ C 语言代码)

    原标题:10 大经典排序算法(动图演示+ C 语言代码) 来源:C语言与CPP编程 以前也零零碎碎发过一些排序算法,但排版都不太好,又重新整理一次,排序算法是数据结构的重要部分,系统地学习很有必要. ...

最新文章

  1. FEMS:微生物群落生态学数据挖掘的R包microeco
  2. webstorm更改scss输出路径
  3. MATLAB系统命令
  4. WWW 2021|基于图神经网络的分级相关性匹配
  5. 也说 Jquery+ASP.NET 实现开心网上传头像剪裁功能
  6. 英特尔发布首款支持 5G NR试验平台 ,离2020年5G商用又进一步
  7. 代理模式 委派模式 策略模式_委派模式和策略模式
  8. CERC 2017 H:Hidden Hierarchy (模拟)
  9. python安装后怎样配解释器_各个系统下的Python解释器相关安装方法
  10. Echarts官方文档!
  11. Nordic fds 文件系统源码探究
  12. 测试网站速度简单方法
  13. vivado中实现VGA驱动学习笔记
  14. STM32F103_study46_The punctual atoms(STM32 The location of all interrupt service functions )
  15. 我是如何来进行项目管理-时间管理的
  16. linux把大文件分成小文件,linux文件分割(将大的日志文件分割成小的)
  17. Compression-Expansion Coding Improvements in MLC/TLC NVM论文解读
  18. 开关电源设计时如何减小地弹
  19. 5分钟成为车联网专家|智慧高速如何破局实现车联网最先商用落地
  20. STM8L 设置输入模式读取PIN脚高低电平就是个坑

热门文章

  1. unity 鼠标滑动响应事件
  2. 用户标签有哪些类型,如何进行科学分类?
  3. 【MySQL】mysql | 年月日时分秒 | 日期格式化
  4. Spark:运行原理 图解
  5. CentOS tomcat自启动
  6. MySQL:增加删除索引
  7. CentOS7 启动docker.service失败
  8. findbugs 常见问题 及解决方案(转)
  9. 测试工作4年,兢兢业业,领导一句“不如应届生”被裁员,后悔一直做的是最基础的工作
  10. ccnp需要什么学历_CCNP的完整形式是什么?