iir低通滤波器 c语言
时间: 2023-08-24 21:08:18 浏览: 106
c语言实现iir滤波器
4星 · 用户满意度95%
您好!要实现一个 IIR 低通滤波器,可以使用 C 语言编程。以下是一个简单的示例代码:
```c
#define FILTER_ORDER 2 // 滤波器阶数
#define NUM_COEFFS (FILTER_ORDER + 1) // 系数个数
float input[NUM_SAMPLES]; // 输入信号
float output[NUM_SAMPLES]; // 输出信号
// 滤波器系数
float b[NUM_COEFFS] = {0.2, 0.3, 0.2}; // 分子系数
float a[NUM_COEFFS] = {1.0, -0.4, 0.1}; // 分母系数
void iir_lowpass_filter(float* input, float* output, int numSamples)
{
// 初始化输出为零
for (int i = 0; i < numSamples; i++) {
output[i] = 0.0;
}
// 应用滤波器
for (int i = NUM_COEFFS - 1; i < numSamples; i++) {
for (int j = 0; j < NUM_COEFFS; j++) {
output[i] += b[j] * input[i - j];
if (j > 0) {
output[i] -= a[j] * output[i - j];
}
}
}
}
int main()
{
// 假设有一个输入信号 input[]
iir_lowpass_filter(input, output, NUM_SAMPLES);
// 输出信号为 output[]
return 0;
}
```
上述代码中,`b` 数组为滤波器的分子系数,`a` 数组为滤波器的分母系数。`iir_lowpass_filter` 函数实现了 IIR 低通滤波器的运算,将输入信号 `input` 通过滤波器得到输出信号 `output`。您可以根据实际需求修改系数和输入信号。希望对您有所帮助!如果您有其他问题,请随时提问。
阅读全文