前言:我们在maylab中最常用的是一个对象的传递函数,当我们在离散系统里时,我们需要将这个传递函数离散化,也就是将拉普拉斯变化为z,所以这一篇博客介绍如何获得一个对象的离散模型。
方法1:如果已经知道了,我们只需要在simulink库中选取discrete transfer function并修改参数就行。
如图:
方法2:如果我们只知道这个对象的传递函数,那么我们可以在命令行中用命令来获取它的离散化模型:
ts = 0.001 //设置采样周期
sys=tf(523500,[1,87.35,10470]) //书写传递函数
dsys=c2d(sys,ts,'z') //将传递函数sys变为离散化dsys,注意里面传入的参数,通常都用z
[num,den]=tfdata(dsys,'v') //获取离散化dsys模型的分子分母系数,num为分子系数,den为分母系数
//注意:当分子阶数小于分母时,num的第一个数的值为0
提示:当我们书写完上面第二第三这两个命令后,命令框就会显示出传递函数sys和离散化dsys的形式:
既然已经知道了这个形式了,我们可以直接在discrete transfer function模块中修改参数了,将分子分母系数填进去,也可以将num和den这两个变量填进去也可以。上面之所以要用到[num,den]=tfdata(dsys,'v')
来获取离散化dsys模型的分子分母系数,是为了当不在simulink中仿真时,而是写m程序仿真时,我们可以自己手动写出对象的差分方程,比如:y(k)=-den(2)y(k-1)+num(2)u(k-5)
,通过差分方程来计算对象输出,当然在simulink用不到,因为对象输出不用你去手动计算了。
另外补充一个:简单的传递函数可以用sys=tf(523500,[1,87.35,10470])
这种来表示,当传递函数形式为这种带有延迟项的时候,比如: G(s) = e^(-80s)/60s+1
,这种形式,
方法是将其看作一个普通的1/60s+1
* e^(-80s)
,此时书写格式为: sys=tf([1],[60,1],'inputdelay',80)
**