fir滤波器的最简单C语言实现

本文介绍了如何使用C语言实现fir滤波器,通过给出的C代码示例,详细解析了滤波器的编程过程。同时,还提到了与MATLAB代码的对比,帮助理解滤波器设计的基本思路。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C代码:

/*
C语言实现FIR滤波器-时域暴力卷积方法
y(n) = E(m=0->N-1) x(m)*h(n-m);
p_input : 待滤波数据
p_output : 滤波输出数据
data_len : 数据长度
p_fir_para : h(t)参数
fir_para_len : h(t)长度
*/
void c_fir(float* p_input, float* p_output, uint16_t data_len, float* p_fir_para,uint16_t fir_para_len)
{
    memset(p_output, 0, sizeof(float) * data_len);  //输出清零

    for (uint16_t i = 0; i < data_len; i++)
    {
        if (i < fir_para_len)
        {
            for (uint16_t j = 0; j <= i; j++)
            {
                p_output[i] += p_fir_para[j] * p_input[i - j];
            }
        }
        else if(i >= fir_para_len)
        {
            for (uint16_t j = 0; j < fir_para_len; j++)
            {
                p_output[i] += p_fir_para[j] * p_input[i - j];  //卷积和
            }

        }
    }
}

matlab代码:

%滤波参数,这里只用简单的平均滤波器,具体的系统函数设计非一日之
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值