用C语言实现一个FIR带通滤波器函数
时间: 2023-05-28 09:04:27 浏览: 972
FIR滤波器设计C语言程序
4星 · 用户满意度95%
以下是一个使用C语言实现的FIR带通滤波器函数:
```
void fir_bandpass_filter(float *input, float *output, int length, float Fs, float Fc1, float Fc2) {
int i, j;
float coeff[length];
float sum;
// Calculate filter coefficients
for (i = 0; i < length; i++) {
if (i == (length-1)/2) {
coeff[i] = 2*(Fc2-Fc1)/Fs;
} else {
coeff[i] = (sin(2*M_PI*Fc2*(i-(length-1)/2)/Fs) - sin(2*M_PI*Fc1*(i-(length-1)/2)/Fs)) / (M_PI*(i-(length-1)/2));
}
}
// Apply filter
for (i = 0; i < length; i++) {
sum = 0;
for (j = 0; j <= i; j++) {
sum += coeff[j] * input[i-j];
}
output[i] = sum;
}
}
```
这个函数的输入参数是输入信号`input`、输出信号`output`、信号长度`length`、采样率`Fs`和带通滤波器的截止频率`Fc1`和`Fc2`。函数首先计算出FIR滤波器的系数,然后应用这些系数来过滤输入信号。输出信号存储在`output`中。
阅读全文