C语言 二阶低通滤波器
时间: 2024-05-10 14:11:05 浏览: 272
C语言是一种通用的高级编程语言,广泛应用于系统软件开发、嵌入式系统、游戏开发等领域。它是一种面向过程的编程语言,具有简洁、高效、灵活等特点。
二阶低通滤波器是一种常见的信号处理器件,用于滤除高频信号,只保留低频信号。它可以通过C语言来实现。
在C语言中,可以使用数字信号处理(DSP)库或者自己编写代码来实现二阶低通滤波器。以下是一个简单的C语言代码示例:
```c
#include <stdio.h>
#define SAMPLE_RATE 44100 // 采样率
#define CUTOFF_FREQ 1000 // 截止频率
// 二阶低通滤波器结构体
typedef struct {
double x1; // 输入延迟1个样本
double x2; // 输入延迟2个样本
double y1; // 输出延迟1个样本
double y2; // 输出延迟2个样本
} SecondOrderLowPassFilter;
// 初始化二阶低通滤波器
void initFilter(SecondOrderLowPassFilter* filter) {
filter->x1 = 0.0;
filter->x2 = 0.0;
filter->y1 = 0.0;
filter->y2 = 0.0;
}
// 二阶低通滤波器处理函数
double processFilter(SecondOrderLowPassFilter* filter, double input) {
double output = (input + 2 * filter->x1 + filter->x2 - 2 * filter->y1 - filter->y2) / 4;
filter->x2 = filter->x1;
filter->x1 = input;
filter->y2 = filter->y1;
filter->y1 = output;
return output;
}
int main() {
SecondOrderLowPassFilter filter;
initFilter(&filter);
// 模拟输入信号
double inputSignal[] = {0.5, 0.8, 0.3, 0.6, 0.9};
int numSamples = sizeof(inputSignal) / sizeof(double);
// 处理输入信号
for (int i = 0; i < numSamples; i++) {
double input = inputSignal[i];
double output = processFilter(&filter, input);
printf("Input: %.2f, Output: %.2f\n", input, output);
}
return 0;
}
```
上述代码实现了一个简单的二阶低通滤波器,通过初始化滤波器结构体并调用`processFilter`函数来处理输入信号。在示例中,输入信号为`{0.5, 0.8, 0.3, 0.6, 0.9}`,输出结果会打印在控制台上。
阅读全文