假设有如下Z变换公式
Y
X
=
Z
2
+
a
1
Z
+
a
2
Z
2
+
b
1
Z
+
b
2
\frac{Y}{X} = \frac{Z^2 + a_1Z + a_2}{Z^2 + b_1Z + b_2}
XY=Z2+b1Z+b2Z2+a1Z+a2
化简得到:
Y
(
Z
2
+
b
1
Z
+
b
2
)
=
X
(
Z
2
+
a
1
Z
+
a
2
)
Y(Z^2 + b_1Z + b_2) = X(Z^2 + a_1Z + a_2)
Y(Z2+b1Z+b2)=X(Z2+a1Z+a2)
进行Z变换得到:
Y
n
+
b
1
Y
n
−
1
+
b
2
Y
n
−
2
=
X
n
+
a
1
X
n
−
1
+
a
2
X
n
−
2
Y_n + b_1Y_{n-1} + b_2Y_{n-2} = X_n + a_1X_{n-1} + a_2X_{n-2}
Yn+b1Yn−1+b2Yn−2=Xn+a1Xn−1+a2Xn−2
进一步化简得到:
Y
n
=
X
n
+
a
1
X
n
−
1
+
a
2
X
n
−
2
−
b
1
Y
n
−
1
−
b
2
Y
n
−
2
Y_n = X_n + a_1X_{n-1} + a_2X_{n-2} - b_1Y_{n-1} - b_2Y_{n-2}
Yn=Xn+a1Xn−1+a2Xn−2−b1Yn−1−b2Yn−2
其中 X n , Y n 代表当前输入输出值 X_n,Y_n 代表当前输入输出值 Xn,Yn代表当前输入输出值
X n − 1 , Y n − 1 代表上一次的状态值 X_{n-1},Y_{n-1} 代表上一次的状态值 Xn−1,Yn−1代表上一次的状态值
X n − 2 , Y n − 2 代表上上次的状态值 X_{n-2},Y_{n-2} 代表上上次的状态值 Xn−2,Yn−2代表上上次的状态值
有了这个差分方程,编制一个C语言程序,编写C语言数字滤波程序就是很简单的事情