算术平均滤波法适用于对一般的具有随机干扰的信号进行滤波。这种信号的特点是信号本身在某一数值范围附近上下波动 ,如测量流量、液位;
基本方法:按输入的N 个采样数据,寻找这样一个 Y ,使得 Y 与各个采样值之间的偏差的平方和最小。
编写算术平均滤波法程序时严格注意:
一、为了加快数据测量的速度,可采用先测量数据存放在存储器中 ,测完 N 点后 ,再对 N 个数据进行平均值计算;
二、选取适当的数据格式,也就是说采用定点数还是采用浮点数。
其程序如下所示:
#include <stdio.h> // 定义滤波数据类型 typedef int filter_type; // 函数声明 filter_type
filter(filter_type value_buf[], int num); // 算术平均滤波函数 filter_type
filter(filter_type value_buf[], int num) { int sum, i; sum = 0; for(i=0; i<num;
i++) sum += value_buf[i]; return (filter_type)(sum/num); } //打印测试 void main() {
filter_type ave; filter_type a[5]= {55, 44, 88, 99, 11}; ave = filter(a,
sizeof(a)/sizeof(filter_type)); printf("%d", ave); }
输出结果:(55+44+88+99+11)/5 = 59.4