[嵌入式C编程与固件开发] 软件FIR低通滤波器设计

[复制链接]
发表于 2025-8-9 23:20 | 显示全部楼层 |阅读模式
本帖最后由 jerry尧 于 2025-8-9 23:23 编辑

FIR(有限脉冲响应)低通滤波器是一种数字滤波器,具有线性相位特性和稳定性。
以下是关于FIR低通滤波器的关键信息:
有限脉冲响应:FIR滤波器的脉冲响应在有限时间内衰减为零
线性相位:可以设计成具有精确的线性相位特性
稳定性:由于没有反馈回路,FIR滤波器总是稳定的
非递归结构:输出仅取决于当前和过去的输入值
设计方法
1. 窗函数法包括:
矩形窗(简单但旁瓣高)汉宁窗(Hanning)汉明窗(Hamming)布莱克曼窗(Blackman)凯泽窗(Kaiser,可调节参数)
设计步骤:
确定理想低通滤波器的频率响应对理想响应进行逆傅里叶变换得到脉冲响应应用窗函数截断无限长的脉冲响应
2. 频率采样法  在频域直接指定滤波器响应,然后通过逆DFT得到时域系数3. 最优等波纹设计(如Parks-McClellan算法)使用Remez交换算法在频域实现最优逼近
代码实现
#define N 51  // 滤波器阶数(抽头数),通常为奇数
// FIR低通滤波器函数
float fir_filter(float input, float *coeff, float *buffer, int *index)
{
    float output = 0.0f;
   int i;
        // 更新缓冲区
    buffer[*index] = input;
       // 计算卷积
   for (i = 0; i < N; i++)
{
       int buffer_index = (*index - i + N) % N;
       output += coeff * buffer[buffer_index];
   }
       // 更新索引  
  *index = (*index + 1) % N;  
      return output;
}
  • N 是滤波器的阶数(抽头数),通常选择奇数以获得对称的滤波器响应
  • cutoff_freq 是截止频率,应小于采样率的一半(奈奎斯特频率)

FIR滤波器特别适用于需要线性相位和稳定性的应用场景,如音频处理、生物医学信号处理等。


您需要登录后才可以回帖 登录 | 注册

本版积分规则

38

主题

61

帖子

0

粉丝
快速回复 返回顶部 返回列表