当前位置:文档之家› 第六节MATLAB控制系统工具箱

第六节MATLAB控制系统工具箱



输入sys = ss([0 1;-5 -2], [0;3], [0 1], 0) 创建的系统状态空间模型为
x1 x2
x1 0 -5.00000 u1 0 3.00000 x2 1.00000 -2.00000 c= y1 d= y1 x1 0 u1 0 x2 1.00000
a=
b=
x1 x2
4. 创建FRD模型 frd
举例:

w = 0:0.1:3; y = sin(w)+i*cos(w); a = frd(y,w)
各模型之间的相互转换




s = tf(‘s’) a = (s+1)/(s^2-2*s+1); freq = logspace(1,2); %101~102 之间生成50个点 b = zpk(a) %tf -- zpk c = ss(a) %tf -- ss d = tf(b ) %zpk -- tf e = ss(b) %zpk -- ss f = zpk( c) %ss -- zpk g = tf( c) %ss -- tf h = frd(a,freq) %tf -- frd I = frd(b,freq) %zpk -- frd j = frd(c,freq) %ss -- frd
获取模型参数

frdata 应用:
获取FRD模型中的数据 [resp,freq] = frdata(sys)



举例: freq = logspace(1,2,2); resp = .05*(freq).*exp(i*2*freq); sys = frd(resp,freq); [resp,freq] = frdata(sys,'v') frdata 只能用于获取FRD模型中的数据 tfdata() zpkdata() ssdata() 可用于获取除FRD模型外的 其他所有模型数据
举例:使用tf命令



例如, 如果某个SISO系统的传递函数是 h(s)=s/(s2+2s+10) 则可以通过下面的命令来创建该系统的传递函数模型: >>h = tf([1 0],[1 2 10]) MATLAB的输出结果为 s ------------------s^2 + 2 s + 10 h是一个TF对象, 存放传递函数的分子分母多项式数据
0.6
0.4
0.
调用方法:y = step(sys,t) 其中,y 为单位阶跃响应的值。 如: >> G=tf([1],[1 1 1]); >> t=0:0.01:15; >> y=step(G,t);

如果想看阶跃响应曲线可以plot( ) 函数画。 >> plot(t,y)
主要函数

nyquist bode nichols freqs pole zero residue class
绘制nyquist图 绘制bode图 绘制nichols图 laplace变换频率响应 (s - 域) 得到极点 得到零点 留数运算 判断模型的类型
1. 创建系统的传递函数模型 tf
3.创建连续系统状态空间模型 ss

状态空间模型是采用线性微分或差分方程来描述系统的 动态行为。 连续时间系统具有如下的一般形式
d x Ax Bu dt y Cx Du
使用ss命令创建系统的状态空间模型的调用格式为 sys = ss(A,B,C,D)
y 3y 2 y u 例:系统微分方程: 其中y为输出,u为输入。 令: 则: y 1 0 y y

连续系统的ZPK模型 离散系统的ZPK模型
举例:



例如, 如果某个SISO系统的传递函数是 h(s)=4*(s+1) / (s2 +7s+10) 则可以通过下面的命令来创建该系统的零极点模型: 参数值获取: Z = [-1]; P = [-2 -5]; K = 4; 调用语句: sys = zpk(Z,P,K) 调用结果:Zero/pole/gain: 4 (s+1) ----------(s+2) (s+5)

连续SISO系统的传递函数为:
n( s ) h( s ) d ( s)


可以采用两种方法创建SISO传递函数模型。 一种使用tf命令, 一种直接引用Laplace变量s的多项式。 使用tf命令的方法是 h = tf(num, den) 其中, 行向量num和den分别是多项式n(s)和d(s)的系数。 注意这里的多项式是按照s的降幂排列的。
5、获取模型参数



tfdata 获取传递函数中的数据 应用:[num,den] = tfdata(sys) 结果用cell保存 [num,den] = tfdata(sys,’v’) 结果用向量保存 举例:s = tf(‘s’) a = (s+1)/(s^2-2*s+1); 1. [num,den] = tfdata(a) 结果为 num = [1*3 double] den = [1*3 double] 需要调用语句celldisp(num)查看num的值 2. [num,den] = tfdata(a,’v’) num = 0 1 1 den = 1 -2 1
获取模型参数


ssdata 获取状态空间模型中的数据 应用:[A,B,C,D] = ssdata(sys) 结果直接显示 [A,B,C,D] = ssdata(sys,’cell’) 结果用cell保存 举例:s = tf(‘s’) a = (s+1)/(s^2-2*s+1); 1. [A,B,C,D] = ssdata(a) 结果为 A= … B = … C=… D = … 2. [A,B,C,D] = ssdata(a,’cell’) 需要调用语句celldisp(A)查看A的值
反馈:函数 feedback(G,H,sign) sign=1为正反馈 sign=-1为负反馈

>> G=tf([1],[1 1]); >> H=tf([1],[1 0]); >> sys=feedback(G,H,-1)
1 G ( s) ; s 1 1 H ( s) ; s
获取模型参数



zpkdata 获取零极点-增益模型中的数据 应用:[Z,P,K] = zpkdata(sys) 结果用cell保存 [Z,P,K] = zpkdata(sys,’v’) 结果用向量保存 举例:s = tf(‘s’) a = (s+1)/(s^2-2*s+1); 1. [Z,P,K] = zpkdata(a) 结果为 Z = -1 P=[2*1 double] K =1 需要调用语句celldisp(P)查看P的值 2. [Z,P,K] = zpkdata(a,’v’) Z=-1 P=[1;1] K = 1
Step Response 1.4
1.2
1
Amplitude
0.8
0.6
0.4
0.2
0
0
2
4
6 Time (sec)
8
10
12


>> G=tf([1],[1 1 1]); >> t=0:0.01:15; >> step(G,t)
Step Response 1.4
1.2
1
Amplitude
0.8


Transfer function: s ----------s^2 + s + 1

G(s)
H(s)
6. 绘制典型信号下的响应曲线

时域响应 单位脉冲响应: impulse( ); 单位阶跃响应: step( ); 任意输入响应: lsim( ); 用法: 以 step( ) 为例: 1. step(sys), sys 为传递函数,执行结果为画单位阶跃响应曲线。 1 如:系统 G ( s ) 的单位阶跃响应 ; s2 s 1 >> G=tf([1],[1 1 1]); >> step(G)

串联,并联,反馈 >> G1=tf([1],[1 1]); >> G2=tf([1],[1 2]); 串联: > G3=G1*G2 Transfer function: 1 ------------s^2 + 3 s + 2 并联: >> G4=G1+G2 Transfer function: 2s+3 ------------s^2 + 3 s + 2
MATLAB 6.X支持的LTI模型

传递函数模型 (TF) ,如
P( s)
s2 s 2 s 10

零极点-增益模型 (ZPK) ,如
H ( z) [ 2( z 0.5) z ( z 0.1) ( z 1) ] ( z 0.2)( z 0.1)

状态空间模型 (SS) ,如

2.创建零极点-增益模型 zpk

连续SISO系统的零极点-增益模型的一般形式为:
h( s ) k ( s z1 ) ( s p1 ) ( s zm ) ( s pn )
调用语句: 1、sys = zpk(Z,P,K) 2、sys = zpk(Z,P,K,Ts) 其中:Z为零点向量 P为极点向量 K为增益 Ts为采样时间参数
d x Ax Bu dt y Cx Du
相关主题