
(
1)用Matlab表示式(1):
>> Nrm=[800*800];
>> Den=[1 800 800*800];
>> G=tf(Nrm,Den)
Transfer frnction:
640000
--------------------
s^2 + 800 s + 640000
用Matlab將連續(xù)的傳遞函數(shù)用轉(zhuǎn)換成離散的傳遞函數(shù),即Z變換,采樣時間設(shè)為0.0001,離散化方法選用‘zof’:
>> D=c2d(G,0.0001,'zoh')
Transfer frnction:
0.003115 z + 0.003033
----------------------
z^2 - 1.917 z + 0.9231
Sampling time: 0.0001
從上面可知式(1)的Z變換為:

(
2)將式(2)交叉相乘得:

(
3)將式(3)中兩邊乘以,得:

(
4) 將式(
4)中的
用

替代,依次類推,即可得到差分方程:

(
5)用C語言編程表示為:
static s32 C0=0,C1=0,C2=0,R0=0,R1=0,R2=0; //bRtterworth低通濾波器用
.....
//截止頻率800Hz的二階BRtterworth低通濾波器,采樣頻率0.0001
R0=AbsolRtePosition-OffsetPosition;
//C0=(3115*(s64)R1+3033*(s64)R2+1917000*(s64)C1-923100*(s64)C2)/1000000;
C0=(3266*(s64)R1+3180*(s64)R2+2010200*(s64)C1-967960*(s64)C2)>>22;
C2=C1;
C1=C0;
R1=R0;
R2=R1;
RelativePosition=C0;
......