第六节MATLAB控制系统工具箱

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。



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)
反馈:函数 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
tf zpk ss frd tfdata ssdata zpkdata frdata impulse step lsim
创建或转换系统的传递函数模型 创建或转换零极点-增益模型 创建或转换连续系统状态空间模型 创建FRD(频率响应)模型 获取传递函数中的数据 获取状态空间模型中的数据 获取零极点-增益模型中的数据 获取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对象, 存放传递函数的分子分母多项式数据

串联,并联,反馈 >> 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
获取模型参数

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模型外的 其他所有模型数据

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为采样时间参数
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
引用Laplace变量s的多项式


也可以按照通常习惯用s的多项式来直接表示SISO 系统的传递函数。 首先将s定义为Laplace算子: s = tf(‘s’); 然后输入s的多项表达式。 例如, 输入 H = s/(s^2 + 2*s +10); 将产生与h = tf([1 0],[1 2 10])相同的系统模型。
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
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) ,如
d x Ax Bu dt y Cx Du

频率响应数据模型 (FRD) j 2 P( j ) , [下限, 上限] 2 1 3 j
连续与离散系统的关系示意图
各种线性时不变(LTI)系统之间的转换关系。
6.2 连续系统主要函数




如果无法直接建立研究对象的传递函数或状态空间模型, 而只知道该系统在某些频率处的频率响应值, 仍然可以采 用frd命令创建该系统的频率响应模型。 frd命令的调用格式是 sys = frd(response, frequencies, units) 其中 frequencies是由不同频率值构成长为N的实数向量, response是与这些频率值对应复数形式频率响应值 nuits 是频率单位,缺省值rad/s,也可取Hz。
举例:

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
获取模型参数



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
获取模型参数


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的值

输入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
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

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


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

nyquist bode nichols freqs pole zero residue class
绘制nyquist图 绘制bode图 绘制nichols图 laplace变换频率响应 (s - 域) 得到极点 得到零点 留数运算 判断模型的类型
1. 创建系统的传递函数模型 tf
x y
即:
0 x u y 2 3 y 1
1 0 0 x x u 2 3 1 y [1 0]x
举例:

在MATLAB中创建下面系统的状态空间模型:
0 1 0 x d A B C [0 1] 5 2 3 dt
0.6
0.4
0.2
0
0
5 Time (sec)
10
15
调用方法:y = step(sys,t) 其中,y 为单位阶跃响应的值。 如: >> G=tf([1],[1 1 1]); >> t=0:0.01:15; >> y=step(G,t);

如果想看阶跃响应曲线可以plot( ) 函数画。 >> plot(t,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)
第六节 控制系统工具箱
6.1 控制系统工具箱概述 6.2 主要构成函数
6.1 控制系统工具箱概述


MATLAB 6.X中的控制系统工具箱(控制系统工具箱) 为线性时不变系统(LTI)的建模和分析提供了丰富的函数 和工具, 既支持连续和离散系统, 也能处理SISO和MIMO 系统。 并且, 用户可以将多个LTI模型放在同一个数组中 统一进行计算和分析。 控制系统工具箱查看方式: 1、在命令窗口中输入 :help control 2、选择help菜单项 MATLAB help 项 打开MATLAB 帮助 找到 Control System Toolbox (控制系统工具箱)
相关文档
最新文档