标题: 借助Matlab将连续的传递函数转换为差分方程 [打印本页]

作者: daming    时间: 2014-12-29 23:10
标题: 借助Matlab将连续的传递函数转换为差分方程
设一截止频率为800Hz的二阶Brtterworth低通滤波器的传递函数为:
                  (1
Matlab表示式(1):
>> Nrm=[800*800];
>> Den=[1 800 800*800];
>> G=tf(Nrm,Den)

Transfer frnction:
       640000
--------------------
s^2 + 800 s + 640000
Matlab将连续的传递函数用转换成离散的传递函数,即Z变换,采样时间设为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;
......







欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1