c语言常用滤波算法,10种常用滤波算法C实现.c
/*
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相关推荐
- **10种常用的网络营销方法**
**10种常用的网络营销方法** 网络营销产生于20世纪90年代,发展至今已演变出越来越多的营销方法,在国内随着互联网影响的进一步扩大,人们对网络营销认知的进一步加深,网络营销方法手段也是各种推陈出新 ...
- tensorflow玻尔兹曼机_资源 | 10种深度学习算法的TensorFlow实现
原标题:资源 | 10种深度学习算法的TensorFlow实现 选自 Github 作者:blackecho 机器之心编译 参与:吴攀 这个 repository 是使用 TensorFlow 库实现 ...
- matlab限幅滤波法,几种常用的滤波方法
几种软件滤波算法的原理和比较 第1种方法:限幅滤波法(又称程序判断滤波法) A方法: 根据经验判断,确定两次采样允许的最大偏差值(设为A),每次检测到新值时判断: 如果本次值与上次值之差<=A, ...
- 10种常用的网络营销方法
网络营销产生于20世纪90年代,发展至今已演变出越来越多的营销方法,在国内随着互联网影响的进一步扩大,人们对网络营销认知的进一步加深,网络营销方法手段也是各种推陈出新,下面就介绍如今网络营销最常用的1 ...
- 第九十一期:架构设计常用到的10种设计模式,你都知道吗?
企业规模的软件系统该如何设计呢?在开始写代码之前,我们需要选择一个合适的架构,这个架构将决定软件实施过程中的功能属性和质量属性.因此,了解软件设计中的不同架构模式对我们的软件设计会有较大的帮助. 作者 ...
- 自动驾驶算法-滤波器系列(六)——10+种经典滤波算法
经典滤波器介绍 1.限幅滤波法(又称程序判断滤波法) 2.中位值滤波法 3.算术平均滤波法 4.递推平均滤波法(又称滑动平均滤波法) 5.中位值平均滤波法(又称防脉冲干扰平均滤波法) 6.限幅平均滤波 ...
- 查找算法-4种常用的查找算法
文章目录 一.查找算法是什么? 查找算法简介 二.查找算法介绍及实现 1.顺序查找 算法描述 代码实现: 2.二分查找/折半查找 算法描述 代码实现: 3.插值查找 算法描述 代码实现: 4.斐波那契 ...
- 算法 c语言_C语言中10个经典的算法,学会它,利用它
C语言中有有许多经典的算法,这些算法都是许多人的智慧结晶,也是编程中常用的算法,这里面包含了众多算法思想,掌握这些算法,对于学习更高级的.更难的算法都会有很大的帮助,会为自己的算法学习打下坚实的基础. ...
- c 语言从大到小排序算法,10 大经典排序算法(动图演示+ C 语言代码)
原标题:10 大经典排序算法(动图演示+ C 语言代码) 来源:C语言与CPP编程 以前也零零碎碎发过一些排序算法,但排版都不太好,又重新整理一次,排序算法是数据结构的重要部分,系统地学习很有必要. ...
最新文章
- FEMS:微生物群落生态学数据挖掘的R包microeco
- webstorm更改scss输出路径
- MATLAB系统命令
- WWW 2021|基于图神经网络的分级相关性匹配
- 也说 Jquery+ASP.NET 实现开心网上传头像剪裁功能
- 英特尔发布首款支持 5G NR试验平台 ,离2020年5G商用又进一步
- 代理模式 委派模式 策略模式_委派模式和策略模式
- CERC 2017 H:Hidden Hierarchy (模拟)
- python安装后怎样配解释器_各个系统下的Python解释器相关安装方法
- Echarts官方文档!
- Nordic fds 文件系统源码探究
- 测试网站速度简单方法
- vivado中实现VGA驱动学习笔记
- STM32F103_study46_The punctual atoms(STM32 The location of all interrupt service functions )
- 我是如何来进行项目管理-时间管理的
- linux把大文件分成小文件,linux文件分割(将大的日志文件分割成小的)
- Compression-Expansion Coding Improvements in MLC/TLC NVM论文解读
- 开关电源设计时如何减小地弹
- 5分钟成为车联网专家|智慧高速如何破局实现车联网最先商用落地
- STM8L 设置输入模式读取PIN脚高低电平就是个坑