在常用的滤波算法中,低通数字滤波法是一种简单有效的信号处理技术,用于去除高频噪声,保留低频信号成分。该方法通过加权平均当前采样值和上一次滤波结果来实现平滑滤波,特别适用于变化较慢的参数滤波。
1、低通数字滤波法的原理
低通滤波,也称一阶滞后滤波,其滤波公式为:
2、低通数字滤波法的示例代码
#include
// 低通滤波函数
float lowPassFilter(float newSample, float previousFiltered, float alpha) {
return (1 - alpha) * newSample + alpha * previousFiltered;
}
int main() {
// 示例参数
float samples[] = {10.0, 12.0, 11.0, 9.0, 10.5, 11.5, 13.0}; // 采样值
int numSamples = sizeof(samples) / sizeof(samples[0]);
float alpha = 0.1; // 滤波系数
float filteredValue = samples[0]; // 初始滤波值为第一个采样值
printf("Filtered values:\n");
for (int i = 0; i < numSamples; i++) {
filteredValue = lowPassFilter(samples[i], filteredValue, alpha);
printf("%.2f ", filteredValue);
}
printf("\n");
return 0;
}
3、代码说明
lowPassFilter 函数实现了低通滤波公式,接受新采样值、上一次滤波结果和滤波系数作为参数,返回当前滤波结果。
在 main 函数中,定义了一个采样值数组 samples 和滤波系数 alpha。
初始滤波值设为第一个采样值。
遍历采样值数组,调用 lowPassFilter 函数进行滤波,并打印滤波结果。
本文凡亿教育原创文章,转载请注明来源!
暂无评论