MATLAB应用介绍
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2、zpk()
功能:建立零极点增益形式
格式:sys= zpk (z, p, k) 说明:可将零极点增益向量组z、p、k表示的系统 模型,以直接的零极点增益形式表示出来。
例:设系统的传递函数模型为
H (s) 6 s 18 s 8 s 17 s 10
3 2
求系统的零极点增益模型。 解 :MATLAB程序为: num= [6 18]; den = [1 8 17 10]; [z,p,k]=tf2zp(num,den); G=zpK(z,p,k) 6 ( s 3) 执行后得 H ( s )
格式:[num,den]=ord2(ωn,ξ)
说明:[num,den]=ord2(ωn,ξ)可得到二阶系统的传递 函数表示。
例3 :要产生ξ=0.4,ωn=2.4弧度/秒的二阶系统的传递函数, 可输入 [num,den]=ord2(2.4,0.4) H=tf(num,den)
则得
因此有
num=1
den =1 1.9200 5.7600
求该系统的传递函数。编写的M程序如下: num1=[1]; den1=[1 1]; num2=[1]; den2=[0.1 0]; [num,den]=series(num1,den1,num2,den2); [numb,denb]=cloop(num,den); G=tf(numb,denb)
5、ord2() 功能:产生二阶系统。
例l1:系统的传递函数为
H (s) 2s 5s 1
2
s 2s 3
2
求该系统的零极点图、根轨迹和某点对应的根轨迹增益, 并绘制阻尼系数和自然频率网格。 程序如下: num=[2 5 1]; den=[1 2 3]; figure(1) pzmap(num,den) rlocus(num,den) sgrid [k,p]=rlocfind(num,den)
例l2:开环系统的传递函数为:
G (s)H (s) K ( s 3) (s 6 s 5)
2 2 *
绘制系统的根轨迹,并分析系统的稳定性。
num=[1 3]; den=conv([1 6 5],[1 6 5]); figure(1) rlocus(num,den) [k,p]=rlocfind(num,den)
4、sgrid() 功能:在系统根轨迹图和零极点图中绘制出阻尼系 数和自然频率网格。 格式:sgrid sgrid(z,wn) 说明(1)绘制的网格阻尼系数范围是0~1,步长为 0.1,自然频率的范围为0~10rad/s,步长为 1rad/s。 (2) 可指定阻尼系数z和自然频率wn来绘制 网格。
( s 1)( s 2 )( s 5 )
3、tf2zp() 功能:变系统传递函数形式为零极点增益形式。 格式:[z,p,k]=tf2zp(num,den) 说明:tf2zp函数将多项式传递函数形式的系统转 换为零点、极点和增益形式。 4、zp2tf() 功能:变系统零极点增益形式为传递函数形式。 格式:[num,den]=zp2tf(z,p,k) 说明:zp2tf可将以z,p,k表示的零极点增益形 式变换成传递函数形式。
H (s) 6 s 18 s 8 s 17 s 10
3 2
(三)系统建模
1、parallel() 功能:系统的并联连接。 格式: [num,den]=parallel(num1,den1,num2, den2) 说明:parallel函数按并联方式连接两个系统。 2、series() 功能:系统的串联连接。 格式:[num,den]=series(num1,den1,num2,den2) 说明:series函数可将两个系统按串联方式进行连接。
在MATLAB中,直接用分子、分母的系数矩阵 [num,den]表示,即 num=[b1,b2,…,bm] den =[a1,a2,…, an]
例:将传递函数
H (s) 0 .2 s 0 .3 s 1
2
s 0 .9 s 1 .2 s 0 .5
3 2
以分子、分母系数矩阵num、den的形式表示 出来。 num=[0.2,0.3,1] den =[1,0.9,1.2,0.5]
3 2
例:已知
G (s)
6( s 5) ( s 3 s 1) ( s 6 )( s 6 s 5 s 3 )
2 2 3 2
将该传递函数输入MATLAB。
>> num = 6*[1,5]; den = conv(conv(conv([1,3,1],[1,3,1]),[1,6]),[1,6,5,3]); G=tf(num,den) Transfer function:
2、零极点增益模型
H (s) k ( s z 1 )( s z 2 ) ( s z m ) ( s p 1 )( s p 2 ) ( s p n )
在MATLAB中,用[z,p,k]矢量组表示,即
z=[z1,z2,…,zm];
p=[p1,p2,…,pn];
k=[k];
例:将系统的零极点增益模型
H (s) 6 ( s 3) ( s 1)( s 2 )( s 5 )
以z,p,k向量组表示。 k=6 z=[-3] p=[-1,-2,-5]
3、状态空间模型
x ax bu y cx du
在MATLAB中,系统可用(a,b,c,d)矩阵 组表示。
(二)模型建立及转换 1、tf()
功能:建立传递函数形式 格式:sys=tf(num,den) 说明:可将分子、分母系数为矩阵num、den表示 的传递函数模型,以直接的传递函数形式表示 出来。
例1:写出下面传递函数模型的标准形式。
H (s) 0 .2 s 0 .3 s 1
2
( s 0 . 4 s 1)( s 0 . 5 )
2、impulse()
求取脉冲响应的函数impulse()和step()函数的调 用格式完全一致。
三、根轨迹
1、pzmap() 功能:绘制系统的零极点。 格式:pzmap(num,den) pzmap(p,z) [ p,z]=pzmap(num,den) 说明(1)当不带输出变量引用函数时, pzmap函 数可在当前图形窗口中绘出系统的零极点图。 (2)当带有输出变量引用函数时,可得到系统 的零极点位置。
MATLAB应用介绍
一、控制系统模型的建立
(一)系统模型 系统的表示可用三种模型:传递函数、零 极点增益、状态空间。 1、传递函数模型
H (s) num ( s ) den ( s ) b1 s
m n
b2 s
m 1 n 1
b m 1 a n 1
a1 s a 2 s
例:已知G1(s)和G2(s),求两者串联后的传递 函数。
G1 ( s ) s 1 s2 G2 (s) 1 500 s
2
num1=[1 1]; den1=[1 2]; num2=[1]; den2=[500 0 0]; [num,den]=series(num1,den1,num2,den2); G=tf(num,den)
figure(2) k=160; num=k*[1 3]; den=conv([1 6 5],[1 6 5]); [num,den]=cloop(num,den,-1); step(num,den)
figure(3) k=161; num=k*[1 3]; den=conv([1 6 5],[1 6 5]); [num,den]=cloop(num,den,-1); step(num,den)
3、rlocfind() 功能:计算根轨迹上给定极点相对应的根轨迹增益。 格式:[k,p]=rlocfind(num,den) [k,p]= rlocfind (num,den,p) 说明(1)函数运行时, 在根轨迹窗口中显示十字 光标,当用户选择根轨迹上某点单击鼠标时, 获得相应的增益k和闭环极点p。 (2) [k,p]= rlocfind (num,den,p)可 根据指定的p来得到系统的增益k。
h(s) 1 s 1 . 92 s 5 . 76
2
二、wenku.baidu.com制系统的时域分析
1、step() 功能:求连续系统的单位阶跃响应。 格式:step(num,den) step(num,den,t) [ y,x,t ]=step(num,den) 说明(1)step函数可计算出线性系统的单位阶跃响应。 (2)当不带输出变量引用时,step函数可在当前图形 窗口中绘出系统的阶跃响应曲线。 (4)step(num,den,t)可利用用户指定的时间矢 量t来绘制阶跃响应。 (3)当带有输出变量引用函数时,可得到系统阶跃响 应的输出数据,而不直接绘制出曲线。
例2:设系统的零极点增益模型为
H (s) 6 ( s 3) ( s 1)( s 2 )( s 5 )
求系统的传递函数。 解 :在MATLAB中,可直接利用zp2tf函数求出, MATLAB程序为: k=6;z=[-3];p=[-1,-2,-5]; [num,den]=zp2tf(z,p,k) H=tf(num,den) 执行后得 num= 0 0 6 18 den = 1 8 17 10
2
解:在MATLAB中,可直接利用tf函数求出 num=[0.2,0.3,1]; p1=[1,0.4,1]; p2=[1,0.5]; den=conv(p1,p2); %p1(s)*p2(s) H=tf(num,den) 0 .2 s 0 .3 s 1 执行后 H (s)
2
s 0 .9 s 1 .2 s 0 .5
2、rlocus() 功能:求系统的根轨迹。 格式:rlocus(num,den) rlocus(num,den,k) [ r,k]= rlocus(num,den) 说明(1)当不带输出变量引用函数时, rlocus函数可在当 前图形窗口中绘出系统的根轨迹图。 (2) rlocus(num,den,k)可利用指定的k来绘制 系统的根轨迹。 (3)当带有输出变量引用函数时,可得到系统的复根 轨迹的位置矩阵r及相应的增益矢量k。利用plot(r,’x’) 可绘制出根轨迹。
例4:求二阶系统
h(s) 1 s 1 . 92 s 5 . 76
2
的 单位阶跃响应。 解:编写M程序如下: num=1; den=[1,1.92,5.76]; G=tf(num,den) step(G)
例5:求P.16页一阶惯 性环节的单位阶跃响 应。 解:编写M程序如下: R1=100;R=100; C=[0.1,0.33,1,10]; figure(1) for j=C num=R/R1; %K=R/R1 den=[R*j*10^-3,1]; %T=R*C hold on step(num,den,1) end hold off
3、feedback() 功能:两个系统的反馈连接。 格式:[num,den]=feedback(num1,den1,num2,den2) [num,den]=feedback(num1,den1,num2,den2,sign) 说明:feedback函数可将两个系统按反馈形式进行连接, sign缺省时,默认为负 4、cloop() 功能:系统的闭环形式。 格式:[numc,denc]=cloop(num,den,sign) 说明:cloop函数可通过将系统输出反馈到系统输入构成单 位闭环系统。 当sign=1时采用正反馈; 当sign=-1时采用负反馈; sign缺省时,默认为负反馈。
6 s + 30 -----------------------------------------------------------------------------------------------s^8 + 18 s^7 + 124 s^6 + 417 s^5 + 740 s^4 + 729 s^3 + 437 s^2 + 141 s + 18