我用c语言写一个平滑低通滤波
时间: 2023-07-13 11:24:05 浏览: 89
好的,下面是一个简单的平滑低通滤波器的C语言代码示例:
```
#include <stdio.h>
#define N 10 // 滤波器长度
int main()
{
float input[N] = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0}; // 输入信号
float output[N] = {0}; // 输出信号
float alpha = 0.5; // 平滑系数
for (int i = 0; i < N; i++) {
if (i == 0) {
output[0] = input[0];
} else {
output[i] = alpha * input[i] + (1 - alpha) * output[i - 1];
}
}
printf("Input:\n");
for (int i = 0; i < N; i++) {
printf("%.2f ", input[i]);
}
printf("\nOutput:\n");
for (int i = 0; i < N; i++) {
printf("%.2f ", output[i]);
}
printf("\n");
return 0;
}
```
在上面的示例代码中,我们定义了一个长度为 N 的输入信号 `input`,一个长度为 N 的输出信号 `output`,以及一个平滑系数 `alpha`。在循环中,我们使用了一个简单的递推公式,根据当前输入和上一次的输出计算当前输出,从而实现了平滑低通滤波的效果。
需要注意的是,在实际应用中,我们可能需要根据具体的信号和滤波要求调整滤波器的参数,以达到更好的滤波效果。
阅读全文