+v hezkz17进数字音频系统研究开发交流答疑
以下是一个基于C语言的FIR低通滤波器算法的实现:
#include <stdio.h>
#include <stdlib.h>
#define N 5 // 滤波器长度
#define M 100 // 输入数据长度
double h[N] = {0.2, 0.3, 0.4, 0.1, 0.0}; // 滤波器系数
int main()
{
double x[M], y[M];
// 生成输入信号
for (int n = 0; n < M; n++)
{
x[n] = sin(2 * 3.1415926 * n / 20); // 正弦波信号
}
// 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]);
}