c语言二阶巴特沃斯滤波代码
时间: 2024-07-16 09:00:44 浏览: 89
在C语言中,实现二阶巴特沃斯滤波器通常涉及到数字信号处理(DSP)库,如`arm_math.h`(如果使用的是ARM Cortex-M处理器的CMSIS-DSP库),或者自定义计算数组操作。以下是一个简单的代码片段,展示了如何使用C语言和数组进行二阶巴特沃斯低通滤波,假设我们有一个一维输入数组`input[]`,输出数组为`output[]`,滤波器系数已知为`b0, b1, b2, a1, a0`。
```c
#include <stdio.h>
#include <math.h>
// 假设滤波器系数
const float b0 = ...;
const float b1 = ...;
const float b2 = ...;
const float a1 = ...;
const float a0 = 1.0f;
void butterworth_lowpass_filter(float input[], float output[], int size) {
float a = a1 / a0;
float b = (b0 + b1 * input[size - 1] + b2 * input[size - 2]) / a0;
for (int i = 0; i < size - 2; i++) {
output[i] = b * input[i] + a * output[i + 1];
}
// 处理边界条件
output[size - 2] = b * input[size - 2];
output[size - 1] = b * input[size - 1];
}
int main() {
float input[] = {/* your input array */};
float output[size]; // 根据输入数组大小初始化输出数组
butterworth_lowpass_filter(input, output, sizeof(input) / sizeof(input));
// 输出结果
for (int i = 0; i < size; i++) {
printf("output[%d]: %f\n", i, output[i]);
}
return 0;
}
```