c++ fir滤波器代码
时间: 2023-07-29 15:01:57 浏览: 124
C语言中的FIR滤波器是一种数字滤波器,用于对信号进行滤波处理。下面是一个简单的FIR滤波器代码示例:
```c
#include <stdio.h>
#define N 20 // FIR滤波器阶数
void firFilter(float input[], float output[], float coefficient[], int length)
{
int i, j;
for(i = 0; i < length; i++)
{
output[i] = 0;
for(j = 0; j < N; j++)
{
if(i - j >= 0)
{
output[i] += coefficient[j] * input[i - j];
}
}
}
}
int main()
{
float input[N]; // 输入信号
float output[N]; // 输出信号
float coefficient[N] = {0.1, 0.2, 0.3, 0.4, 0.5, 0.4, 0.3, 0.2, 0.1}; // FIR滤波器系数
// 生成输入信号,示例中使用了简单的正弦波信号
for(int i = 0; i < N; i++)
{
input[i] = sin(2 * 3.14159 * 1000 * i / N);
}
// 调用FIR滤波器函数
firFilter(input, output, coefficient, N);
// 打印输出信号
for(int i = 0; i < N; i++)
{
printf("%f\n", output[i]);
}
return 0;
}
```
在代码中,我们首先定义了一个N阶的FIR滤波器。然后在主函数中生成了输入信号,这里使用了一个简单的正弦波信号作为示例。接下来调用`firFilter()`函数进行滤波处理,将输入信号的每个点分别与滤波器系数进行乘法和加法运算,最终得到输出信号。最后,我们通过循环打印输出信号的每个点。在实际使用中,我们可以根据需求自定义滤波器系数和输入信号。
阅读全文