用c语言实现FIR低通滤波器
时间: 2023-12-09 16:35:42 浏览: 156
以下是用C语言实现FIR低通滤波器的代码和解释:
```c
#include <stdio.h>
#define M 10 // 信号长度
#define N 5 // 滤波器长度
int main()
{
double x[M] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; // 输入信号
double h[N] = {0.2, 0.2, 0.2, 0.2, 0.2}; // 滤波器系数
double y[M]; // 输出信号
// FIR滤波器处理过程
for (int n = 0; n < M; n++)
{
y[n] = 0;
for (int k = 0; k < N; k++)
{
if (n - k >= 0)
y[n] += h[k] * x[n - k];
}
}
// 输出滤波结果
for (int n = 0; n < M; n++)
{
printf("%lf\n", y[n]);
}
return 0;
}
```
代码解释:
1. 定义了输入信号x、滤波器系数h和输出信号y的数组,以及信号长度M和滤波器长度N的宏定义。
2. 在主函数中,先给输入信号x和滤波器系数h赋值,然后定义输出信号y的数组。
3. 用两个for循环实现FIR滤波器的处理过程,其中外层循环遍历输入信号x,内层循环遍历滤波器系数h,计算输出信号y的每个采样点。
4. 最后用一个for循环输出滤波结果。
阅读全文