软件滤波算术平均滤波代码
时间: 2024-08-24 15:00:37 浏览: 21
算术平均滤波是一种最简单的软件滤波器,它通过连续地对输入序列取均值来平滑数据。以下是基于STM32的一个基本算术平均滤波器的代码示例:
```c
#define FILTER_SIZE 3 // 指定滤波器大小,比如3表示最近三个数据点的平均
void arithmetic_average_filter(float *input_data, float *filtered_data, int sample_count)
{
float sum = 0;
float average;
if (sample_count >= FILTER_SIZE) {
for (int i = 0; i < FILTER_SIZE; ++i) {
sum += input_data[i];
}
average = sum / FILTER_SIZE; // 计算前FILTER_SIZE个数据的平均值
} else {
average = input_data[0]; // 如果数据量不够,直接返回第一个数据作为结果
}
filtered_data[0] = average; // 将平均值存入过滤后的数组
for (int i = 1; i < sample_count; ++i) {
sum -= input_data[i-FILTER_SIZE];
sum += input_data[i];
filtered_data[i] = sum / FILTER_SIZE;
}
}