matlab实现传递函数的Z变换,浅谈传递函数、Z变换与差分方程之间的转化
在我们进行PID控制器或现代控制理论设计时,经常遇到三者之间的转换,下面将阐述一下如何在MATLAB上哪册 *** 作。
注意!下面所有的“*”即半角单引号,都被替换成了星号*,所闹缓搜以务必注意!!
1、传递函数的形液历式
假设传递函数为:G(s)=exp^(-0.004s)*400/(s^2+50s);
其中^后表示指数,如:2^3=84^2=16;
在matlab里面建立这个传递函数的命令就是:sys=tf(400,[1,50,0],*inputdelay*,0.004);【inputdelay两边的*号改成半角单引号!!】
2、Z函数
把传递函数离散化就得到Z函数,在matlab里面离散化命令是:dsys=c2d(sys,0.001,*z*);【z两边的*号改成半角单引号!!】其中0.001为采样时间;
G(z) =z^(-4) *( 0.0001967 z + 0.0001935)/( z^2 - 1.951 z + 0.9512)
= z^(-4) *[0.0001967z ^(-1)+ 0.0001935z^(-2)]/[ 1 - 1.951 z^(-1) + 0.9512z^(-2)] =Y(z)/U(z)……(2)式
(2)式可写成:
z^(-4) *[0.0001967 z ^(-1)+ 0.0001935z^(-2)] U(z) = [ 1 - 1.951 z^(-1) + 0.9512z^(-2)] Y(z) ......(3)式
3、差分方程形式
由(3)式可得
[0.0001967 z ^(-5)+ 0.0001935z^(-6)]U(z) = [ 1 - 1.951 z^(-1) + 0.9512z^(-2)] Y(z).......(4)式把(4)式的z^(-n)中的(-n)写成(k-n),
如左边的z^(-5)*U(z)可写成u(k-5),右边的z^(-1)*Y(z)可写成y(k-1),
可得:
0.0001967 u(k-5)+ 0.0001935u(k-6)= y(k) - 1.951 y(k-1) + 0.9512y(k-2) .......(5)式
由(5)式得
y(k) = 1.951 y(k-1) - 0.9512y(k-2)+0.0001967 u(k-5)+ 0.0001935u(k-6)
即差分方程形式
h = tf([1 0] , [1 1 1])zh = c2d(h, 0.00005,'zoh')
[num den] = tfdata(zh, 'v')
[z, p, k] = tf2zpk(num, den)
其中第一行为s域表达式,前面括号内是分子系数,后面括号内是分母系数;
第二行为z闭环公式游改,戚拦可以选择zoh零阶保持器法,也可以选择其他,0.00005为一半的开关周期神仔判;
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)