fir 滤波算法c语言实现
时间: 2023-08-13 13:04:57 浏览: 172
下面是一个简单的基于FIR滤波器的C语言实现:
```c
#define N 101 // FIR滤波器的长度
float h[N]; // FIR滤波器的系数
float x[N]; // 输入信号的缓冲区
float y; // 输出信号
void fir(float input, float *output)
{
int i;
//将当前输入值存储到缓冲区的第一个位置
x[0] = input;
y = 0.0;
//计算输出值
for (i = 0; i < N; i++)
{
y += h[i] * x[i];
}
//将缓冲区中的值向后移动
for (i = N - 1; i > 0; i--)
{
x[i] = x[i - 1];
}
//将输出值保存到输出指针所指向的位置
*output = y;
}
```
这个代码中,我们假设FIR滤波器的长度为101,存储在h数组里面。输入信号存储在x数组中,每次新的输入值存储在x[0]中。输出信号保存在y变量中,并且向后移动缓冲区中的值,以便下一次的运算。
我们可以在程序中调用fir函数,传递输入值和输出指针作为参数。下面是一个示例:
```c
int main()
{
float input = 1.0;
float output;
fir(input, &output);
return 0;
}
```
这个示例中,我们假设输入信号为1.0。我们调用fir函数,并将输出指针传递给它。当函数返回时,输出指针所指向的位置将保存输出信号的值。
阅读全文