一阶低通滤波器 c代码
时间: 2024-12-09 18:14:10 浏览: 68
以下是一阶低通滤波器的C语言实现代码:
```c
#include <stdio.h>
#define alpha 0.1 // 滤波系数
#define initial_value 0 // 初始值
float low_pass_filter(float input) {
static float output = initial_value; // 静态变量存储上一次的输出值
output = alpha * input + (1 - alpha) * output;
return output;
}
int main() {
float input_signal[] = {1.0, 2.0, 3.0, 2.0, 1.0, 0.0, -1.0, -2.0, -3.0, -2.0, -1.0};
int num_samples = sizeof(input_signal) / sizeof(input_signal[0]);
for (int i = 0; i < num_samples; i++) {
float filtered_value = low_pass_filter(input_signal[i]);
printf("Input: %.2f, Filtered: %.2f\n", input_signal[i], filtered_value);
}
return 0;
}
```
这段代码实现了简单的一阶低通滤波器:
1. `alpha` 是滤波系数,决定了滤波器的截止频率。`alpha` 值越小,滤波器越平滑。
2. `low_pass_filter` 函数是滤波器的主体。它使用一个静态变量 `output` 来存储上一次的输出值。
3. 滤波公式为:`output = alpha * input + (1 - alpha) * output`
4. 在 `main` 函数中,我们定义了一个输入信号数组,并对其应用滤波器。
5. 最后,打印出原始输入和滤波后的输出。
使用这段代码,你可以根据需要调整 `alpha` 值来改变滤波器的特性。较小的 `alpha` 值会产生更平滑的输出,但可能会引入更多的延迟。
阅读全文