首页 > 其他分享 >10种超经典的软件滤波方法

10种超经典的软件滤波方法

时间:2023-05-20 19:56:24浏览次数:36  
标签:种超 10 干扰 滤波 count value char 采样

1、限幅滤波法(又称程序判断滤波法) A、方法:        根据经验判断,确定两次采样允许的最大偏差值(设为A);        每次检测到新值时判断:        如果本次值与上次值之差<=A,则本次值有效;        如果本次值与上次值之差>A,则本次值无效,放弃本次值,用上次值代替本次值。 B、优点:        能有效克服因偶然因素引起的脉冲干扰。 C、缺点        无法抑制那种周期性的干扰;        平滑度差。   2、中位值滤波法 A、方法:        连续采样N次(N取奇数);        把N次采样值按大小排列;        取中间值为本次有效值。 B、优点:        能有效克服因偶然因素引起的波动干扰;        对温度、液位的变化缓慢的被测参数有良好的滤波效果。 C、缺点:        对流量、速度等快速变化的参数不宜。   3、算术平均滤波法 A、方法:        连续取N个采样值进行算术平均运算;        N值较大时:信号平滑度较高,但灵敏度较低;        N值较小时:信号平滑度较低,但灵敏度较高;        N值的选取:一般流量,N=12;压力:N=4。 B、优点:        适用于对一般具有随机干扰的信号进行滤波;        这样信号的特点是有一个平均值,信号在某一数值范围附近上下波动。 C、缺点:        对于测量速度较慢或要求数据计算速度较快的实时控制不适用;        比较浪费RAM。

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

 

4、递推平均滤波法(又称滑动平均滤波法) A、方法:        把连续取N个采样值看成一个队列;        队列的长度固定为N;        每次采样到一个新数据放入队尾,并扔掉原来队首的一次数据.(先进先出原则);        把队列中的N个数据进行算术平均运算,就可获得新的滤波结果;        N值的选取:流量,N=12;压力:N=4;液面,N=4~12;温度,N=1~4。 B、优点:        对周期性干扰有良好的抑制作用,平滑度高;        适用于高频振荡的系统。 C、缺点:        灵敏度低;        对偶然出现的脉冲性干扰的抑制作用较差;        不易消除由于脉冲干扰所引起的采样值偏差;        不适用于脉冲干扰比较严重的场合;        比较浪费RAM。
#define N 12
 
char value_buf[N];
char i = 0;
 
char filter (void)
{
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、中位值平均滤波法(又称防脉冲干扰平均滤波法) A、方法:        相当于“中位值滤波法”+“算术平均滤波法”;        连续采样N个数据,去掉一个最大值和一个最小值;        然后计算N-2个数据的算术平均值;        N值的选取:3~14。 B、优点:        融合了两种滤波法的优点;        对于偶然出现的脉冲性干扰,可消除由于脉冲干扰所引起的采样值偏差。 C、缺点:        测量速度较慢,和算术平均滤波法一样;        比较浪费RAM。   6、限幅平均滤波法 A、方法:        相当于“限幅滤波法”+“递推平均滤波法”;        每次采样到的新数据先进行限幅处理,再送入队列进行递推平均滤波处理。 B、优点:        融合了两种滤波法的优点;        对于偶然出现的脉冲性干扰,可消除由于脉冲干扰所引起的采样值偏差。 C、缺点:        比较浪费RAM。   7、一阶滞后滤波法 A、方法:        取a=0~1;        本次滤波结果=(1-a)*本次采样值+a*上次滤波结果。 B、优点:        对周期性干扰具有良好的抑制作用;        适用于波动频率较高的场合。 C、缺点:        相位滞后,灵敏度低;        滞后程度取决于a值大小;        不能消除滤波频率高于采样频率的1/2的干扰信号。
/* 为加快程序处理速度假定基数为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、加权递推平均滤波法 A、方法:        是对递推平均滤波法的改进,即不同时刻的数据加以不同的权;        通常是,越接近现时刻的数据,权取得越大;        给予新采样值的权系数越大,则灵敏度越高,但信号平滑度越低。 B、优点:        适用于有较大纯滞后时间常数的对象;        和采样周期较短的系统。 C、缺点:        对于纯滞后时间常数较小,采样周期较长,变化缓慢的信号;        不能迅速反应系统当前所受干扰的严重程度,滤波效果差。
/* 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 (void)
{
char count;
char value_buf[N];
int sum = 0;
 
for (count = 0, count < N; count++) {
value_buf[count] = get_ad();
delay();
}
 
for (count = 0, count < N; count++) {
sum += value_buf[count] * coe[count];
}
 
return (char)(sum / sum_coe);
}

 

9、消抖滤波法 A、方法:        设置一个滤波计数器;        将每次采样值与当前有效值比较:        如果采样值=当前有效值,则计数器清零;        如果采样值<>当前有效值,则计数器+1,并判断计数器是否>=上限N(溢出);        如果计数器溢出,则将本次值替换当前有效值,并清计数器。 B、优点:        对于变化缓慢的被测参数有较好的滤波效果;        可避免在临界值附近控制器的反复开/关跳动或显示器上数值抖动。 C、缺点:        对于快速变化的参数不宜;        如果在计数器溢出的那一次采样到的值恰好是干扰值,则会将干扰值当作有效值导入系统。
#define N 12
 
char filter (void)
{
char count = 0;
 
char new_value = get_ad();
while (value != new_value) {
count++;
if (count >= N) {
return new_value;
}
delay();
new_value = get_ad();
}
 
return value;
}

 

10、限幅消抖滤波法 A、方法:        相当于“限幅滤波法”+“消抖滤波法”;        先限幅,后消抖。 B、优点:        继承了“限幅”和“消抖”的优点;        改进了“消抖滤波法”中的某些缺陷,避免将干扰值导入系统。 C、缺点:        对于快速变化的参数不宜。  

标签:种超,10,干扰,滤波,count,value,char,采样
From: https://www.cnblogs.com/haiqian-zhang/p/17417686.html

相关文章

  • 低压球泡灯 线性恒流方案 线路图AP5101B 线性恒流芯片
    1,方案来源:深圳市世微半导体有限公司汤巧2,产品描述AP5101B是一款高压线性LED恒流芯片,外围简单、内置功率管,适用于6-60V输入的高精度降压LED恒流驱动芯片。最大电流1.0A。AP5101B可实现内置MOS做1.0A,外置MOS可做2.0A的。AP5101B内置温度保护功能,温度保护点为130......
  • 10. CMDB前端开发-IDC管理
    10.CMDB前端开发-IDC管理CMDB前端开发-IDC管理IDC管理首先需要将布局做一下调整,目录结构如下删除原先的A~C.vue文件,修改router/index.js路由文件如下:...constroutes=[{path:'/login',name:'登录',component:()=>import('../views/Login.vu......
  • P1937 [USACO10MAR]Barn Allocation G
    BarnAllocationG题目描述农夫约翰最近开了一个新的牲口棚屋,并且现在接受来自奶牛的分配畜栏请求因为其中的一些畜栏有更好风景。畜栏包括N个畜栏(1≤N≤100,000),方便起见,我们把它们编号为1..N,畜栏i能容纳Ci只牛(1≤Ci≤100,000),第i只牛需要连续编号畜栏(从Ai到Bi)来漫......
  • Jmeter函数助手10-regexFunction
    regexFunction函数用于对上一个请求进行正则表达式提取处理,类似正则表达式。用于从前一个请求搜索结果的正则表达式:填入正则表达式Templateforthereplacementstring,usinggroupsfromtheregularexpression.Formatis$[group]$.Example$1$:填入匹配模板Whichmatch......
  • INFO3105 COBOL 设计
    INFO3105Week3Class1ReviewNumericEditedfieldsLab4IntroductiontoSummaryReportProgrammingwithCOBOLDefinitionofaControlBreak–“Achangeofcategoryusedtotriggerasubtotal.Forexample,ifdataaresubtotaledbyprovince,acontrolbreak......
  • day10-12 函数语法铺垫&函数的参数
    第八节函数【一】函数初识【一】函数的基本使用基于前一部分的学习,我们已经能开发一些功能简单的小程序了,但随着程序功能的增多,代码量随之增大,此时仍不加区分地把所有功能的实现代码放到一起,将会使得程序的组织结构不清晰,可读性变差,且程序中需要频繁使用同一功能时,只能重复......
  • 电脑微信占用100多GB空间 解决办法来了:重回清爽流畅
    这几天微信吃内存的话题又上热搜了,作为一款10亿+用户的国民级APP,微信的真是让人又爱又恨,不用几乎不可能,用起来槽点又多,光是磁盘占用就是个头疼的问题。不论是工作还是日常沟通,微信里面的文件及语音、视频都会很多,时间长了就会占用大量空间,手机上占用100多GB很常见,电脑版微信同样......
  • 红外滤光改性塑料(高通红外滤波片)
    一、基础概念    针对红外通讯,红外摄像,红外焊接以及红外热能调节等应用领域开发的红外透过塑料,是一种可基于pc、pmma、abs、ps、san、k树脂等广泛基材的黑色材料。这种材料的特性在于在可见光范围内给予黑色视觉(400-700nm可见光透过率小于2%),但能透过800-1600nm以上波长的近......
  • DAY10笔记及补充
    今日默写:1.创建数组的两种方式2.给数组赋值的两种方式3.for循环遍历数组4.描述下运算符的种类,并分别用代码展示下各自的使用方式5.if单分支,多分支各自的展示形式6.switch的使用方式得分:90补充:1.javascript变量可以由字母、数字、下划线以及美元符号组成,但是不能以数字开头2.j......
  • 1079. 活字印刷
    题目链接:1079.活字印刷方法:计数+回溯解题思路 先统计字符串中每种字符的个数cnt[26]{},对于每一层统计本层的节点,对应一种字符序列,再加上某节点的子节点的数量,返回最终结果代码classSolution{public:intnumTilePossibilities(stringtiles){intcnt[2......