gpt4 book ai didi

c - FIR滤波器在C编程中的实现

转载 作者:行者123 更新时间:2023-12-02 05:33:40 27 4
gpt4 key购买 nike

谁能告诉我如何使用 c 编程语言实现 FIR 滤波器。

最佳答案

设计 FIR 滤波器不是一个简单的主题,但是实现一个已经设计好的滤波器(假设您已经有了 FIR 系数)也不是太糟糕。该算法称为 convolution .这是一个天真的实现...

void convolve (double *p_coeffs, int p_coeffs_n,
double *p_in, double *p_out, int n)
{
int i, j, k;
double tmp;

for (k = 0; k < n; k++) // position in output
{
tmp = 0;

for (i = 0; i < p_coeffs_n; i++) // position in coefficients array
{
j = k - i; // position in input

if (j >= 0) // bounds check for input buffer
{
tmp += p_coeffs [i] * p_in [j];
}
}

p_out [k] = tmp;
}
}

基本上,卷积对输入信号进行移动加权平均。权重是滤波器系数,假定总和为 1.0。如果权重之和不是 1.0,您会得到一些放大/衰减以及过滤。

顺便说一句 - 这个函数的系数数组可能是倒过来的 - 我没有仔细检查过,我已经有一段时间没有考虑这些事情了。

关于如何计算特定滤波器的 FIR 系数,背后有相当多的数学知识——您确实需要一本关于数字信号处理的好书。 This one可以免费获得 PDF,但我不确定它有多好。我有 RorabaughOrfandis ,都发表于九十年代中期,但这些东西并没有真正过时。

关于c - FIR滤波器在C编程中的实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14997850/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com