




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一 传函与状态空间响应math老大的号召,从今天起,除了每周写一篇教程,开始每天介绍几个与控制系统有关的常用工具箱函数,每天三个左右吧!其中包括函数的简单原理,用法,举例,材料就是MATLAB的帮助文件再加上我自己的理解。我的理想是经过长期的学习和积累把与控制系统有关的五个工具箱LTI、系统辨识、鲁棒控制、模型预测、模糊逻辑里常用函数用中文介绍清楚并且容易理解。也许不能全部完成,但我会尽力的,现在,先从LTI开始吧!LTI的意思就是线性时不变系统,这个工具箱里函数可以帮助我们方便的建立控制系统的模型,比如连续和离散的传递函数模型(或传递函数矩阵),状态空间空间模型,频率响应模型等等,并且可以帮助我们分析单入单出系统(SISO)或多入多出系统(MIMO)的特性,可通过时域,频域作图的方法使模型的分析更加的直观。设计方面,LTI可对系统进行极点匹配,状态观测器设计,以及一些优化控制等等。LTI工具箱包含了古典理论和线性控制理论应用的方方面面,个人觉得里面的函数是MATLAB控制器设计者必须要熟练掌握的最基本工具。因此,我把它放在第一个来介绍。叙述方面,我首先给出函数描述,然后直接举出具体的代码,说明函数的语法和应用,这样可以省去好多对语法形式无聊的叙述。NOW,LETS BINGN!1函数名:tf功能描述:生成传递函数模型或将其他系统模型转化为传递函数模型说明:这个函数比较常用,也比较简单。首先,让我们来生成一个传递函数模型G=(2s+1)/(s2+2s+2),(符号表示乘方)代码如下:第一种方法:1. num(2 1); %定义分子2. den(1 2 2);%定义分母3. G=tf(num,den); %定义传递函数复制代码本方法也可以合写成一句: 1. G=tf(2 1,1 2 2)复制代码第二种方法:1. s=tf(s) ;%定义s为传递函数拉普拉斯算子;2. G=(2s+1)/(s2+2s+2); %定义传递函数;复制代码定义传递函数矩阵的形式:G=(s+1)/(2s2+2s+1) ,1/(2s2+2s+1)代码如下:1. num=1 1 0 1;2. den=1 2 1;3. G=tf(num,den) 复制代码我们知道,算子s只是一个形式,也可以换成其他的字母,哪一天你看s不爽想换成字母p,该怎么做呢,很简单,只需要改变传递函数的一个属性就可以了:生成传递函数模型G=(2p+1)/(p2+2p+2);1. G=tf(2 1,1 2 2,variable,p) ;%注意,这里将属性variable改成了p,默认的时候是s复制代码再来,如果我们希望给刚才定义传递函数加一个0.25单位的输入延迟,让函数变成这样G=exp(-0.25s)(2s+1)/(s2+2s+2),该怎么做呢,简单,还是修改模型的属性,代码如下:1. G= tf(2 1,1 2 2,inputdelay,0.25);2. %注意,这里修改了属性inputdelay的值,该值默认时为0。复制代码现在考虑离散的情况定义传递函数:G=(z2+3z+2)/(z3+5z2+7z+3),采样周期为0.1代码入下:1. G=tf(1 3 2,1 5 7 3,0.1); 复制代码最后我要特别说明的一点是:函数tf不能用于定义中间变量带有延迟的传递函数(非纯延迟),比如这样的形式G=1/s+exp(-0.25s)/(2s+1);如果你按照如下编写代码会出现错误:1. s=tf(s);2. G=1/s+exp(-0.25*s)/(2*s+1); 复制代码如果想定义这样的函数必须使用与定义状态空间模型有关的一些函数,这个问题我在后面会讲到。2函数名 tfdata功能描述:获得tf模型传递函数的参数这个就不多解释了,可以自己去尝试一下下面的代码,看能产生什么结果,相信都能理解对于SISO系统:1. G=tf(2 1,1 2 2);2. num,den=tfdata(G,v); 复制代码若G是离散系统,可用下面的代码形式得到采样时间1. num,den,Ts=tfdata(G);复制代码3函数名zpk功能描述:生成零极点增益传递函数模型或转换成零极点模型运行如下代码可生成一个传递函数:G=10(s+1)(s+3)/(s(s+2)(s+5)1. G=zpk(-1,-3,0,-2,-5,10); 复制代码离散的情况的采样时间设定和tf函数类似,就不多说了。zpk函数可以将一般的传递函数转换为零极点模型可以运行下面一段代码察看看会有什么结果:1. G=tf(-10 20 0,1 7 20 28 19 5)2. sys=zpk(G); 复制代码4函数名:zpkdata功能描述:获取零极点增益模型的参数与tfdata类似的命令,也不多说了对于SISO系统G,运行下列代码可获得此系统的零点、极点和增益:1. z ,p ,k=zpkdata(G,v); 复制代码对离散系统,方式和tfdata相同。多谢阿三哥这个我也懂一点, 我也来参与提取传函分子分母多多项式也可以样1. G=tf(2 1,1 2 2);2. %num,den=tfdata(G,v)3. num=G.num1,den=G.den1%可直接提取分子很分母多项式4. %这里1实际上为1,1,表示第1输入和第1输出之间的传递函数,该方法直接适合于多变量系统的描述。复制代码tf的属性可以用set命令列出1. set(tf)复制代码函数名:filt()功能描述:生成DSP形式的离散传递函数:例子:生成采样时间为0.5的DSP形式传递函数:代码如下:1. H=filt(2 1,1 0.4 2,0.5)复制代码这里注意一下每项前面的系数与tf函数的小区别就可以了函数名:dss功能描述:生成系统的状态空间模型这个函数比较简单,现在来生成一个连续系统的状态空间模型代码:dss(a,b,c,d,e)离散的情况只需指定采样时间t代码:dss(a,b,c,d,e,t)函数名:ss功能:生成系统的状态空间模型或把其他模型转换为状态空间模型代码:ss(a,b,c,d)离散的情况与函数dss一样此函数还可以将其他模型转换为状态空间模型例如:随便指定一个传递函数模型G,将其转换为状态空间模型,代码如下:1. G=tf(1 1,1 3 3 1);2. ss(G);复制代码这个代码将返回与传递函数G的状态空间模型有关的a b c d四个矩阵关于这个函数,还有一个用法值得关注ss(sys,minmal ),这个命令的意思是求系统sys的状态空间最小实现.函数名ssdatadssdata功能描述:获取状态空间模型的数据两个函数用法类似,说一个,对连续系统代码a b c d=ssdata(sys)是得到系统sys的状态空间模型的的四个矩阵。离散的情况:a b c d t=ssdata(sys),本代码可以得到采样时间t。关于建立传递函数和状态空间模型就先说这么多吧,最后要说的是每一个传递函数或状态空间模型都有一堆属性值,这些值有很多,包含了这个模型的一切信息,比如名字是什么,怎么构成的,维数是多少,有没有纯延迟等等许多属性,比如你建立了一个模型叫sys,你可以通过命令get(sys)来得到这个模型的所有属性和对应的值,并且可以通过set命令来修改相应的属性值,格式是set(sys,要修改的属性名字,该属性的值),这里我就不举例子了,大家可以自己建立一个传递函数,然后修改一些属性的值看看能产生什么变化。tf命令在多输入多输出系统(MIMO)的用法定义:num代表分子,den代表分母,sys=tf(num, den)表示得到的系统MIMO中num与den应该是行数相同,列数相同的(SISO只是MIMO的一个特例,行列数都为1)设num与den为 i*j 阵,则 i 代表输出的个数,j 代表输入的个数num与den在用矩阵表示的时候应该用“”而不是“”例一1. num = -1 2 2 3; %num 为1*2的矩阵,即为2输入1输出2. den = 4 5 5 6; %den 与num相同3. sys = tf(num, den)复制代码1. 结果(2输入对1输出)2. Transfer function from input 1 to output:3. -s + 24. -5. 4 s + 56.7. Transfer function from input 2 to output:8. 2 s + 39. -10. 5 s + 6复制代码例二 1. num = -1 2; 2 3 %num 为2*1的矩阵,即为1输入2输出2. den = 4 5; 5 6 %den 与num相同3. sys = tf(num, den)复制代码1.2. 结果(1输入对2输出)3. Transfer function from input to output.4. -s + 25. #1-6. 4 s+ 57.8. 2 s+39. #2-10. 5 s+6复制代码友情提示:如果运算时间不是太长的话,尽量把程序分开成num和den,虽然多出了几个变量,但是便于阅读和修改。二 模型的检测与转换现在来介绍一系列的模型检测函数,这些函数起到对一个模型的检测和判断的作用,用法都是直接把你构造的模型放到括号里,函数会根据各自的功能返回相应的值,一般是0或1,这些函数的用法比较简单,所以这里只把函数名字列出来,在分别描述一下功能就可以了。大家可以自己去试一试!class:显示模型的类型(tf,zpk,ss)hasdelay:判断模型是否有任何类型的延时,是返回1否为0isct:判断LTI对象是否为连续时间系统。是为1否为0isdt: 判断LTI对象是否为离散时间系统。是为1否为0isempty: 判断LTI对象是否为空。是为1否为0isproper: 判断LTI对象是否为正则。是为1否为0issiso: 判断LTI对象是否为SISO系统。是为1否为0ndims:返回LTI模型或LTI数列的维数这里专门介绍一个size()函数:这个函数比较牛:可以计算返回LTI模型的输入和输入的维数,tf,ss和zpk模型的阶次,用法还是把你建立的模型塞进去就好了。下面说明他的几个用法。 size(sys,1):意思是返回系统sys的输出维数 size(sys.2) :意思是返回系统sys的输入维数 size(sys,k+2):意思是当系统为LTI模型数列时,返回第k个模型的维数。 size(sys,order):意思是返回tf ss zpk模型的阶次,当sys为模型数组时返回最大的模型阶次 关于模型检测函数就介绍到这里现在来介绍关于系统模型之间的转换以及相关的函数说明:一个LTI系统sys,它的TF SS ZPK三种模型是可以互相转换的,方法很简单,如下:tf转zpk:zpk(sys)ss转zpk:zpk(sys)tf转ss:ss(sys)zpk转ss:ss(sys)zpk转tf:tf(sys)ss转tf:tf(sys)哦,那个写错了,是tf2zp(),多了一个p,这个地方本来想提示一下,后来忘记了,呵呵,已经改了其实这个很好理解,外国人也搞谐音,2就是two,谐音to,就有转换啊,到达啊那么个意思!奇怪,老版本的时候明明可以那么用,新的昨天我尝试了一下,真的不行了,转换还是直接用zpk tf和ss吧,我改一下 我只是觉得这种函数比较简单,就没说得太认真,也没去试。没想到还真出了问题。惭愧呀还有,这个系列我只是想把一些函数常用的方法介绍一下,一些函数使用的注意事项,我是非常看重的因为当时走了好多弯路,所以,我想把这些需要注意的地方在教程里重点指出来。呵呵,多谢steppenwolf老大提醒。你给我留言让我心里有底多了,咔咔!三 关于时延的函数现在来介绍LTI工具箱里与系统延时有关的三个函数,其中函数pade()可能比较重要一些,这里的三个函数并不是告诉我们怎么加延时。给一个系统加纯延时其实很简单,你可以用set命令修改模型的inputdelay或outputdelay属性,或者直接输入命令比如sys.inputdelay=0.1这个命令就会给你的系统sys加一个0.1秒的纯延时,关于延时的我问题我体会很多。尤其是用代码表达中间环节有延迟的这个问题,搞了好久才在steppenwolf老大那里搞到一个唯一的,十分麻烦的方法,关于这个问题我会在教程里详细的写出来。废话不多说了,这次来介绍三个函数:分别是delay2z,pade,totaldelay,下一次将介绍几个非常重要的有关时域分析的函数。函数名:delay2z() (其实这个函数我也还没有完全理解,先按帮助翻译出来吧,相信会有人一看就懂的)功能描述:在z=0处将离散时间系统ss tf zpk的所有延时影射为极点,特别的,采样周期为k的系统的延时用(1/z)k代替。(这句是啥意思,一时没看懂,我很菜呀,知道的说一下哈)。这里也把文档里的例子直接拿出来让大家看看(有结果,不用运行),这个倒是举得蛮简单。1. z=tf(z,-1);2. sys=(-.4*z -.1)/(z2 + 1.05*z + .08)3. Transfer function:4. -0.4 z - 0.15. -6. z2 + 1.05 z + 0.087. Sampling time: unspecified8. sys.InputDelay = 1;9. sys = delay2z(sys)10. Transfer function:11. -0.4 z - 0.112. -13. z3 + 1.05 z2 + 0.08 z14. Sampling time: unspecified复制代码函数名pade功能描述:(一看就知道啦)计算延时的pade近似由于pade近似是我们处理控制系统延迟的一个非常常用的手段,所以,这个函数以及原理在这里详细介绍一下。一个纯延迟 2007-12-14 23:36:09 上传下载附件 (251 Bytes) ,可以用pade近似的方法来得到一个与它的时域响应近似的传递函数分子分母多项式的形式,pade近似的函数表可以去查一下,近似的阶次越高,就和越接近。这个函数的语法如下1num den=pade(T,N)(直接翻译,相信大家能理解)以转移函数形式返回连续时间I/O延时的第N次pade近似,向量num和den分别表示分子和分母的系数,按降幂排列。(罗嗦!其实就是求延时为T的N次pade近似的多项式系数啦)2pade(T,N),看完了前面的,这个就不罗嗦了,意思是求延时为T的N阶pade近似的时域冲击响应和相位图,并与未近似的时候进行比较。大家可以运行下面的代码看看有什么结果,一看便知道,并且可以从图像上很清晰的验证:阶次越高,接近的程度越好。1. pade(0.1,3)复制代码3.sysx=pade(sys,n)这个最好理解,直接把一个具有延迟的模型转成n阶pade近似的形式,这里,系统的所有的或者说每一个延时(输入,输出,I/O等)都用N阶pade近似4 sysx=pade(sys,ni,no,nio)这个主要是针对多输入多输出系统的,ni,no,nio分别表示一个整数数列,数列的值分别就是相应位置上的输入,输出,和I/O的近似阶次。你也可以把某些值设定为无穷大来禁用pade近似。这个么,帮助里没有给例子,我多费口舌也没用,如果这个形式将来有用到,马上就会明白它的意思。函数名:totaldelay功能描述:返回系统所有的延时这个比较简单,直接翻译:返回LTI模型sys的所有组合的I/O延时。对于连续时间系统单位为秒,对离散的为采样周期的整数倍。这里把还是它的例子和结果直接拿出来:1. sys = tf(1,1 0); % TF of 1/s2. sys.inputd = 2; % 2 sec input delay3. sys.outputd = 1.5; % 1.5 sec output delay4. td = totaldelay(sys)5.6. td =7. 3.5000复制代码我们看到最后的结果td是所有系统输入输出延时的总和四 关于状态空间现在来介绍几个与状态空间有关的函数,其中有关系统能控能观的几个函数比较重要,要能够很清晰的理解这几个函数的含义,需要具备一定的线性系统理论的基础知识,这里我不可能花太大的笔墨来介绍某一个函数的理论背景,这里只说函数功能,关于理论,只能几句话简单介绍一下,关于状态空间的理论和MATLAB的问题,我会在教程里尽量说清楚的,呵呵,不过估计写到那里还要很久,废话不多说了,函数名 canon功能描述:状态空间的正则实现(什么是正则这里就不解释了)语法:csys=canon(sys,type)csys,T=canon(sys,type)这里,sys是你要变换的系统,结果csys是得到的正则矩阵,第二个用法中得到的T是由sys到csys的相似变换矩阵。函数名:ctrb (这个函数比较重要,多说一下)功能描述:可控矩阵的计算理论:可控矩阵就是用秩判据来判断矩阵是否可控时需要求得的那个矩阵,一个状态空间模型,系统矩阵是A、B、C、D,用该函数求得的可控矩阵如下公式:2007-12-18 09:45:55 上传下载附件 (1.33 KB) 我们知道如果这个矩阵的秩为n,那么系统就是完全能控的 用法:co=ctrb(A,B)co=ctrb(sys)第一个用法中,A,B就是上面说的系统的两个矩阵,第二个用法中,sys为系统的状态空间模型,注意只能是状态空间模型,也就是说,该函数不能自动转换其他的模型。一般来讲,这个函数可以和rank(求矩阵的秩)函数一起使用,求得的上面的可控矩阵co后,可运行rank(co),看它的秩,如果为n(和A的阶数相等),则系统是完全可控的。这里把文档里的例子给大家看一下,这个例子最后求的是系统不可的控状态变量的个数,还是不错的:1. Check if the system with the following data2. A =3. 1 14. 4 -25.6. B =7. 1 -18. 1 -19. is controllable. TypeCo=ctrb(A,B);10.11. % Number of uncontrollable states12. unco=length(A)-rank(Co)13. and MATLAB returns14.15. unco =1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年灌溉工程技术高级考试预测题集
- 2025年销售总监竞聘笔试备考策略
- 2025年水利工程灌区管理工高级知识精讲与模拟试题集
- 2025年初中体育教师招聘面试要点及预测题解析
- 电击安全知识培训
- 2025年特岗教师招聘考试小学数学命题趋势分析
- 2025年物业管理技能进阶考试必-备知识点与模拟题
- 2025年财务会计实操手册中级考试模拟题集及案例分析
- 2025年火电运行值班员中级考试模拟题及解析
- 2025年游戏开发工程师游戏设计方向面试题集解析
- 航天禁(限)用工艺目录(2021版)-发文稿(公开)
- 医院行政办公室主任职责
- 文言合集(1):120个文言实词小故事(教师版+学生版)
- 争做“四有好老师”-当好“四个引路人”
- 外研版高中英语词汇表(全套)
- 共同风险投资协议书
- DB32-T 4752-2024 一体化污水处理设备通.用技术要求
- 排除妨碍民事起诉状
- 深度营养(传统饮食)
- 耳石症中医护理查房
- 电工与电子技术基础(第三版)技工院校计算机类专业全套教学课件
评论
0/150
提交评论