该文档提供了用C语言编写的滑动平均滤波法(或称递推平均滤波法)代码及其详细注释,便于读者理解和实现信号处理中的平滑算法。
C语言滑动平均滤波器实现方法如下:
1. 方法:
将连续取N个采样值视为一个队列。
队列的长度固定为N。
每当采集到新数据,就将其放入队尾,并移除原来位于队首的数据。(遵循先进先出原则)
对这N个数据进行算术平均运算,以获得新的滤波结果。
选择N值的方法:流量情况下使用 N=12;压力情况使用 N=4;液面情况则为 N=4 ~ 12;温度测量时通常选用 N=1 ~ 4。
2. 优点:
滑动平均算法对周期性干扰有良好的抑制效果,同时具有较高的平滑度。
适用于高频振荡的系统环境。
3. 缺点:
灵敏度较低
对于偶尔出现的脉冲式干扰处理效果不佳
难以纠正由于突发脉冲干扰所引起的采样值偏差问题
不适合在存在大量脉冲干扰的情况下使用
相对而言,该算法较为消耗RAM资源
4. 算法示例:
```c
#define N 10
u16 value_buf[N];
u16 sum=0;
u16 curNum=0;
u16 moveAverageFilter()
{
if(curNum < N)
{
value_buf[curNum] = getValue();
sum += value_buf[curNum];
curNum++;
return (sum / curNum);
}
}
```