如何用matlab实现Z变换

如何用matlab实现Z变换,第1张

在初始化状态下,sys是一个结构体,用它来设置模块的一些参数,各个参数详细说明如下

size

=

simsizes%用于设置模块参数的结构体用simsizes来生成

sizes.NumContStates

=

0%模块连续状态变量的个数

sizes.NumDiscStates

=

0%模块离散状态变量的个数

sizes.NumOutputs

=

0%模块输出变量的个数

sizes.NumInputs

=

0%模块输入变量的个数

sizes.DirFeedthrough

=

1%模块是否存在直接贯通!

用c2d函数

例如:

>>[tf1,tf2]=zp2tf([],[-0.1,-0.2,-0.5],0.01)

>>h=tf(tf1,tf2)

Transfer function:

0.01

-----------------------------

s^3 + 0.8 s^2 + 0.17 s + 0.01

>>hd=c2d(h,0.1,'tustin')

Transfer function:

1.201e-006 z^3 + 3.604e-006 z^2 + 3.604e-006 z + 1.201e-006

-----------------------------------------------------------

z^3 - 2.921 z^2 + 2.845 z - 0.9231

Sampling time: 0.1

也可直接用tf生成z域传递函数,在参数中加入采样世间即可

请参照帮助help c2dhelp tf

matlab实现传递函数的Z变换

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)

即差分方程形式


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12067995.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-20
下一篇2023-05-20

发表评论

登录后才能评论

评论列表(0条)

    保存