常用的各种滤波算法
关注 | 7
...
加权递推平均滤波法
A、方法:
是对递推平均滤波法的改进,即不同时刻的数据加以不同的权
通常是,越接近现时刻的数据,权取得越大。
给予新采样值的权系数越大,则灵敏度越高,但信号平滑度越低
B、优点:
适用于有较大纯滞后时间常数的对象
和采样周期较短的系统
C、缺点:
对于纯滞后时间常数较小,采样周期较长,变化缓慢的信号
不能迅速反应系统当前所受干扰的严重程度,滤波效果差
代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
static
EleType _coe[BUF_LEN] = {1,2,3,4,5,6,7,8,9,10,11,12};
static
EleType sum_coe = 1+2+3+4+5+6+7+8+9+10+11+12;
EleType FILTER_Out(
void
)
{
int
count;
EleType _buf[BUF_LEN];
SumType sum = 0;
for
(count=0; count
{
_buf[count] = DATA_IBUF_LEN();
FILETER_DELAY();
}
for
(count=0; count
{
sum += _buf[count] * _coe[count];
}
return
(EleType)(sum/sum_coe);
}
|
头文件:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
#ifndef __FILTER_08_H__
#define __FILTER_08_H__
#ifdef __cplusplus
extern
"C"
{
#endif
#define DATA_IN() GetValue()
#define FILETER_DELAY() Delay()
#define BUF_LEN 12
typedef
unsigned
char
EleType;
typedef
unsigned
int
SumType;
extern
EleType FILTER_Out(
void
);
#ifdef __cplusplus
}
#endif
#endif //__FILTER_08_H__
|