十大滤波算法

2023-05-16

一、限幅滤波

1)方法
   根据经验判断两次采样允许的最大偏差值A
   每次采新值时判断:若本次值与上次值之差<=A,则本次有效;若本次值与上次值之差>A,本次无效,用上次值代替本次。
2)优缺点
   克服脉冲干扰,无法抑制周期性干扰,平滑度差。
3)代码

    /* A值根据实际调,Value有效值,new_Value当前采样值,程序返回有效的实际值 */
    #define A 10
    char Value;
    char filter()
    {
      char new_Value;
      new_Value = get_ad();                                        //获取采样值
      if( abs(new_Value - Value) > A)   return Value;             //abs()取绝对值函数
      return new_Value;
    }

二、中位值滤波

1 )方法
   连续采样N次,按大小排列
   取中间值为本次有效值
2)优缺点
   克服波动干扰,对温度等变化缓慢的被测参数有良好的滤波效果,对速度等快速变化的参数不宜。
3)代码

#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];
}

三、算数平均滤波

1)方法
   连续采样N次,取平均
   N较大时平滑度高,灵敏度低
   N较小时平滑度低,灵敏度高
   一般N=12
2)优缺点
   适用于存在随机干扰的系统,占用RAM多,速度慢。
3)代码

#define N 12
char filter()
{
	int sum = 0;
	for(count = 0;count<N;count++)
		sum += get_ad();
	return (char)(sum/N);
}

四、递推平均滤波

1)方法
   取N个采样值形成队列,先进先出
   取均值
   一般N=4~12
2)优缺点
   对周期性干扰抑制性好,平滑度高
   适用于高频振动系统
   灵敏度低,RAM占用较大,脉冲干扰严重
3)代码

    /* A值根据实际调,Value有效值,new_Value当前采样值,程序返回有效的实际值 */
    #define A 10
    char Value;
    char filter()
    {
      char new_Value;
      new_Value = get_ad();                                        //获取采样值
      if( abs(new_Value - Value) > A)   return Value;             //abs()取绝对值函数
      return new_Value;
    }

五、中位值平均滤波(防脉冲干扰平均滤波)

1)方法
   采样N个值,去掉最大最小
   计算N-2的平均值
   N= 3~14
2)优缺点
   融合了中位值,平均值的有点
   消除脉冲干扰
   计算速度慢,RAM占用大
3)代码

#define N 12
char filter()
{
	char count,i,j;
	char Vlaue_buf[N];
	int sum=0;
	for(count=0;count<N;count++)
		Value_buf[count]= get_ad();
	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_buf[count];
			return (char)(sum/(N-2));
}

六、限幅平均滤波

1)方法
   每次采样数据先限幅后送入队列
   取平均值
2)优缺点
   融合限幅、均值、队列的优点
   消除脉冲干扰,占RAM较多
3)代码

#define A 10
#define N 12
char value,i=0;
char value_buf[N];
char filter()
{
	char new_value,sum=0;
	new_value=get_ad();
	if(Abs(new_value-value)<A)
		value_buf[i++]=new_value;
	if(i==N)i=0;
	for(count =0 ;count<N;count++)
		sum+=value_buf[count];
	return (char)(sum/N);
]

七、一阶滞后滤波

1)方法
   取a=0~1
   本次滤波结果=(1-a)* 本次采样 + a * 上次结果
2)优缺点
   良好一直周期性干扰,适用波动频率较高场合
   灵敏度低,相位滞后
3)代码

/*为加快程序处理速度,取a=0~100*/
#define a 30
char value;
char filter()
{
	char new_value;
	new_value=get_ad();
	return ((100-a)*value + a*new_value);
}

八、加权递推平均滤波

1)方法
   对递推平均滤波的改进,不同时刻的数据加以不同权重,通常越新的数据权重越大,这样灵敏度高,但平滑度低。
2)优缺点
   适用有较大滞后时间常数和采样周期短的系统,对滞后时间常数小,采样周期长、变化慢的信号不能迅速反应其所受干扰。
3)代码

/* 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<N;count++)
	{
		value_buf[count]=get_ad();
	}
	for(count=0;count<N;count++)
		sum+=value_buf[count]*coe[count];
	return (char)(sum/sum_coe);
}

九、消抖滤波

1)方法
   设置一个滤波计数器
   将采样值与当前有效值比较
   若采样值=当前有效值,则计数器清0
   若采样值不等于当前有效值,则计数器+1
   若计数器溢出,则采样值替换当前有效值,计数器清0
2)优缺点
   对变化慢的信号滤波效果好,变化快的不好
   避免临界值附近的跳动,计数器溢出时若采到干扰值则无法滤波
3)代码

#define N 12
char filter()
{
	char count=0,new_value;
	new_value=get_ad();
	while(value!=new_value)
	{
		count++;
		if(count>=N) return new_value;
		new_value=get_ad();
	}
	return value;
}

十、限幅消抖滤波

1)方法
   先限幅 后消抖
2)优缺点
   融合了限幅、消抖的优点
   避免引入干扰值,对快速变化的信号不宜
3)代码

#define A 10
#define N 12
char value;
char filter()
{
	char new_value,count=0;
	new_value=get_ad();
	while(value!=new_value)
	{
		if(Abs(value-new_value)<A)
		{
		count++;
		if(count>=N) return new_value;
		new_value=get_ad();
		}
	return value;
	}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

十大滤波算法 的相关文章

随机推荐

  • 异地备份距离要求_华为云等级保护之数据备份恢复篇

    01 等保合规要求 等保2 0的技术要求中对数据的备份与恢复提出了明确的要求 xff0c 从二级到四级的要求如下 xff1a 同时在安全管理制度中也列出了备份与恢复管理相关的运维管理要求 xff0c 在此不做累述 从华为云用户的角度 xff
  • 计算机专业对未来职业的理想追求,IT行业个人职业生涯规划

    导语 一个完整的职业规划由职业定位 目标设定和通道设计三个要素构成 以下是无忧考网整理的IT行业个人职业生涯规划 xff0c 欢迎阅读 xff01 IT行业个人职业生涯规划篇一 距雅典不远有一座古希腊的圣城叫德尔斐 xff0c 这里是传说中
  • 翻译:In this thesis, we use latent semantic indexing (LSI, an information retrieval technique) [7] to...

    我们在这篇论文中使用潜在语义索引 LSI xff0c 一种信息检索技术 7 从蛋白质互作网络中检索蛋白质之间的关系 LSI可以解决信息检索 IR 中的同义词 表达给定概念的许多方式 和多义词 单词有多种含义 问题 这个属性对于解决我们的问题
  • ONOS的安装调试

    环境需求 Ubuntu15 04 64 datacenter 镜像 Java8 JDK ApacheMaven 3 0 and later bash for packaging amp testing ApacheKaraf 3 0 2 a
  • kmeans算法的matlab代码

    答 xff1a Kmeans算法的matlab代码可以在网上找到 xff0c 这里是一个示例 xff1a clc clear K 61 3 X 61 8 5 1 7 2 1 3 6 2 6 3 2 7 3 3 3 6 5 4 7 7 7 2
  • 用PHP实现九九乘法表

    九九乘法表可以用循环语句来实现 下面是一个简单的例子 xff1a span class hljs keyword for span span class hljs variable i span 61 1 span class hljs v
  • 如何使用OpenAI的ChatGPT

    您可以使用OpenAI的ChatGPT通过以下几种方式 xff1a API xff1a 您可以通过调用OpenAI API来使用ChatGPT 您可以在OpenAI的官方网站上注册账号 xff0c 然后获取API密钥 xff0c 最后在您的
  • qt利用opengl加载显示obj格式的3D模型

    Qt是一个跨平台的C 43 43 图形用户界面库 xff0c 可以用来开发桌面应用程序 如果想要在Qt中加载并显示OBJ格式的3D模型 xff0c 可以使用Qt的OpenGL模块 首先 xff0c 需要在Qt工程中包含OpenGL模块 xf
  • 中国用户如何免费用chatgpt

    ChatGPT是一种自然语言生成模型 xff0c 它可以根据输入的文本自动生成文本 如果你是中国用户 xff0c 想要免费使用ChatGPT xff0c 你可以通过以下方式获得 xff1a 在GitHub上找到ChatGPT的开源代码 xf
  • SDN控制平台开源代码

    开源代码是指源代码在开放的许可下公开发布 xff0c 任何人都可以从源代码免费获得 复制 修改和分发 在SDN控制平台领域 xff0c 有许多开源代码可供选择 xff0c 如 xff1a OpenDaylight ONOS Ryu等 这些项
  • 两两比较统计学方法Tukey的优点、缺点,以及适用和不适用的情况

    Tukey的优点是它可以使用不同的统计检验来检测抽样数据中的异常值 xff0c 并能够计算出一个可以比较不同数据组之间的平均数的统计量 它的缺点是它只能处理少量的数据 xff0c 而且不能用于比较非正态分布的数据 Tukey适用于有限的数据
  • 浅谈现代无人机技术

    摘要 xff1a 在物联网技术 电池能源技术 传感器技术不断发展的今天 xff0c 无人机技术也变得日趋成熟起来 xff0c 成为一大热门技术 笔者主要对当下的无人机技术做出简单的分析 xff0c 并且简单实践复现该项技术 囊括 xff1a
  • c++数组初始化

    静态数组 span class token keyword int span dp span class token punctuation span span class token number 1 span span class to
  • PID控制器主要针对线性系统还是非线性系统

    PID控制器可以用于线性系统和部分非线性系统 PID控制器最初是为线性系统设计的 xff0c 可以有效控制具有稳定线性动态特性的系统 xff0c 如电机控制 温度控制等 但是 xff0c PID控制器也可以应用于一些非线性系统中 xff0c
  • VNC远程登录服务器(Ubuntu14.04)

    使用服务器多用户登录 xff0c 使用命令行没有图像化界面 xff0c 难免有所不便 xff0c 就来搞下VNC远程登录Ubuntu14 04 1 使用命令行登录进行vnc安装 sudo apt get install vnc4server
  • 树莓派4b使用记录(一):在树莓派4b使用python-opencv打开海康工业相机及遇到的问题与解决方法

    树莓派4b使用记录 一 xff1a 在树莓派4b使用python opencv打开海康工业相机及遇到的问题与解决方法 一 在树莓派上安装海康工业机器人的MVS软件 xff08 Linux版本 xff09 海康工业机器人软件下载地址 xff1
  • react 的性能优化

    一 性能永远是第一需求 xff0c 时刻考虑性能问题 如何避免应用出现性能问题 xff0c 如下所示 xff1a 了解常见的性能问题场景时刻注意代码的潜在性能问题注重可重构的代码了解如何使用工具定位性能问题 二 网络性能优化 xff0c 自
  • STM32应用之485通信

    我们先看看普通的收发电路 普通的485电路 xff0c 除了 用RXD连接485芯片的RO引脚 用TXD连接485芯片的DI引脚 xff0c 还会用一个单片机的普通IO引脚连接到RE DE引脚上 当单片机要发送数据的时候 xff0c 控制P
  • AD铺铜技巧总结

    原文链接 xff1a https blog csdn net snaking616 article details 78643046 目录 1 铜皮操作分类 2 铺铜技巧 2 1 过孔处理 2 1 1 过孔与绿油 2 1 2 过孔的十字连接
  • 十大滤波算法

    一 限幅滤波 1 xff09 方法 根据经验判断两次采样允许的最大偏差值A 每次采新值时判断 xff1a 若本次值与上次值之差 lt 61 A xff0c 则本次有效 xff1b 若本次值与上次值之差 gt A xff0c 本次无效 xff