基于c语言的FIR滤波器
时间: 2023-06-27 16:08:05 浏览: 104
FIR滤波器是数字信号处理中常用的一种滤波器,它的特点是稳定可靠、易于实现、延迟固定。下面是一个基于C语言实现的FIR滤波器代码示例:
```c
#define N 101 // FIR滤波器阶数
float h[N] = {0.0}; // FIR滤波器系数
float w[N] = {0.0}; // FIR滤波器延迟线
void fir_filter(float *x, float *y, int len)
{
int i, j;
float sum;
// 初始化FIR滤波器系数
for (i = 0; i < N; i++) {
h[i] = 2.0 / N;
}
// FIR滤波器处理
for (i = 0; i < len; i++) {
// 将新采样加入延迟线
for (j = N-1; j > 0; j--) {
w[j] = w[j-1];
}
w[0] = x[i];
// FIR滤波器卷积运算
sum = 0.0;
for (j = 0; j < N; j++) {
sum += h[j] * w[j];
}
y[i] = sum;
}
}
```
上述代码中,`N`表示FIR滤波器的阶数,`h`表示FIR滤波器的系数,`w`表示FIR滤波器的延迟线,`x`表示输入信号,`y`表示输出信号,`len`表示信号长度。在代码中,首先初始化FIR滤波器系数为2/N,然后对输入信号进行FIR滤波器处理,具体实现是将新采样加入延迟线中,然后进行卷积运算,最后得到输出信号。
阅读全文