本文主要是介绍双二阶滤波器之MATLAB设计及C语言实现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
参考:
双二阶滤波器
本文中的例子和代码放在Github
First,什么是双二阶滤波器?wiki上是这么说的:二阶、递归、线性,含有两个极点和两个零点,“双二阶”的名字来源于它的传递函数是两个二次多项式的比值。
In signal processing, a digital biquad filter is a second order recursive linear filter, containing two poles and two zeros. “Biquad” is an abbreviation of “biquadratic”, which refers to the fact that in the Z domain, its transfer function is the ratio of two quadratic functions: H(z)=(b₀+b₁z⁻¹+b₂z⁻²)/(a₀+a₁z⁻¹+a₂z⁻²) The coefficients are often normalized such that a₀ = 1: H(z)=(b₀+b₁z⁻¹+b₂z⁻²)/(1+a₁z⁻¹+a₂z⁻²) High-order IIR filters can be highly sensitive to quantization of their coefficients, and can easily become unstable.
归一化传递函数写成这样:
H ( z ) = b ₀ + b ₁ z ⁻ ¹ + b ₂ z ⁻ ² 1 + a ₁ z ⁻ ¹ + a ₂ z ⁻ ² H(z)= \frac{b₀+b₁z⁻¹+b₂z⁻²}{1+a₁z⁻¹+a₂z⁻²} H(z)=1+a₁z⁻¹+a₂z⁻²b₀+b₁z⁻¹+b₂z⁻²
用MATLAB的Filter Designer来设计一个:400Hz带通IIR,需要用4个Sections来实现,默认给出的滤波器结构是Direct-Form II。
在菜单栏的Analysis中选择Filter Coeffients就能看到滤波器系数了:
Numerator,分子,也就是传递函数中的b项们,从上到下依次为 b 0 b_0 b0, b 1 b_1 b
这篇关于双二阶滤波器之MATLAB设计及C语言实现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!