
特别说明:完整45期数字信号处理教程,原创高性能示波器代码全开源地址:链接 " _, J+ L# w# l$ l# a' K 第40章 IIR滤波器的实现 * ~% _- j* S- D3 v5 W 本章节讲解IIR滤波器直接I型的低通,高通,带通和带阻滤波器的实现。 40.1 IIR滤波器介绍 40.2 Matlab工具箱fdatool生成IIR滤波器系数 40.3 IIR低通滤波器设计 40.4 IIR高通滤波器设计 40.5 IIR带通滤波器设计 40.6 IIR带阻滤波器设计 40.7 总结 40.1 IIR滤波器介绍 ARM官方提供的直接I型IIR库支持Q7,Q15,Q31和浮点四种数据类型。其中Q15和Q31提供了基于Cortex-M3和Cortex-M4的快速版本。 直接I型IIR滤波器是基于二阶Biquad级联的方式来实现的。每个Biquad由一个二阶的滤波器组成: y[n] = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] 直接I型算法每个阶段需要5个系数和4个状态变量。 ![]() 这里有一点要特别的注意,有些滤波器系数生成工具是采用的下面公式实现: y[n] = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] - a1 * y[n-1] - a2 * y[n-2] 比如matlab就是使用上面的公式实现的,所以在使用fdatool工具箱生成的a系数需要取反才能用于直接I型IIR滤波器的函数中。 高阶IIR滤波器的实现是采用二阶Biquad级联的方式来实现的。其中参数numStages就是用来做指定二阶Biquad的个数。比如8阶IIR滤波器就可以采用numStages=4个二阶Biquad来实现。 ![]() 如果要实现9阶IIR滤波器就需要将numStages=5,这时就需要其中一个Biquad配置成一阶滤波器(也就是b2=0,a2=0)。 |
40.3.2 fdatool获取低通滤波器系数
40.3.3 低通滤波器实现
40.4.1 fdatool获取高通滤波器系数
40.4.2 高通滤波器实现
40.5.1 fdatool获取低通滤波器系数
40.5.2 带通滤波器实现
40.6.1 fdatool获取带阻滤波器系数
40.6.2 带阻滤波器实现