前言:我们在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)**

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐