加权递推平均滤算法
- 应用场景
适用于有较大纯滞后时间常数的对象和采样周期较短的系统
- 原理分析
加权递推平均滤波法是对递推平均滤波法的改进,即不同时刻的数据加以不同的权。通常是,越接近现时刻的数据,权取得越大。给予新采样值的权系数越大,则灵敏度越高,但信号平滑度越低。
- 参考代码
define N 12
typedef unsigned int filter_type;
filter_type coe[N] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
filter_type sum_coe = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12;
extern filter_type Read[N]; /采样得到的数组/
filter_type filter( filter_type * read )
{
filter_type count;
filter_type value_buf[N];
unsigned long sum = 0;
for( count = 0; count < N; count++ )
{
value_buf[count] = Read[count];
}
for( count = 0; count < N; count++ )
{
sum += value_buf[count] * coe[count];
}
return ( filter_type )( sum / sum_coe );
}
coe:数组为加权系数表,存在程序存储区。 sum_coe:加权系数和
- 补充说明
优点: 适用于有较大纯滞后时间常数的对象和采样周期较短的系统
缺点: 对于纯滞后时间常数较小,采样周期较长,变化缓慢的信号不能迅速反应系统当前所受干扰的严重程度,滤波效果差