巴特沃斯滤波 C语言实现实例
时间: 2024-10-08 15:17:26 浏览: 74
巴特沃斯滤波器是一种非常常用的数字滤波器,它具有平坦的通带和良好的阻带衰减。在C语言中,可以使用直接形式(Direct Form I)或级联积分器形式(Cascaded Integrator-Comb,CIC)来实现巴特沃斯滤波器。这里提供一个基本的直接形式滤波器的简单实现示例,假设我们有一个一阶低通滤波器,需要过滤一个整型数组的数据。
```c
#include <stdio.h>
#include <math.h>
// 定义滤波器参数,例如截止频率和采样率
#define FREQ_CUTOFF 0.5
#define SAMPLING_RATE 1.0
// 计算巴特沃斯滤波器系数
double b[2] = {1 / (SAMPLING_RATE * TAU), -1};
double a[2] = {1, 0};
// 对一个数据点x进行滤波
void butterworth_filter(int x) {
double tau = 1.0 / (2 * M_PI * FREQ_CUTOFF);
double y = b[0] * x + b[1] * (x - x); // 这里假设滤波器只有一个输入通道
printf("Filtered value: %f\n", y);
}
int main() {
int input_data[] = {1, 2, 3, 4, 5, 6}; // 示例输入数据
int data_length = sizeof(input_data) / sizeof(input_data[0]);
for (int i = 0; i < data_length; i++) {
butterworth_filter(input_data[i]);
}
return 0;
}
```
这个例子是一个一阶滤波器,如果需要更复杂的滤波器,比如二阶或更高阶的,你需要增加更多的滤波系数,并相应地调整滤波过程中的计算。
阅读全文