#define a 0.01 // 滤波系数a(0-1)
char value; //滤波后的值
char new_value; // 新的采样值
char filter()
{
char new_value;
new_value = get_ad();
return 0.01*value + (1-0.01)*new_value;
}
取a=0~1
本次滤波结果=(1-a)本次采样值+a上次滤波结果
B、优点:
对周期性干扰具有良好的抑制作用
适用于波动频率较高的场合
C、缺点:
相位滞后,灵敏度低
滞后程度取决于a值大小
不能消除滤波频率高于采样频率的1/2的干扰信号
滤波系数越小,滤波结果越平稳,但是灵敏度越低;
滤波系数越大,灵敏度越高,但是滤波结果越不稳定。
一阶滤波无法完美地兼顾灵敏度和平稳度。有时,我们只能寻找一个平衡,在可接受的灵敏度范围内取得尽可能好的平稳度。而在一些场合,我们希望拥有这样一种接近理想状态的滤波算法。即:
当数据快速变化时,滤波结果能及时跟进(灵敏度优先);
当数据趋于稳定,在一个固定的点上下振荡时,滤波结果能趋于平稳(平稳度优先)。