自动控制原理MATLAB命令

1.动态系统数学模型

①传递函数: sys = tf(num,den)
②多项式展开:[r,p,k] = residue(num,den)
③采用s的多项式的比来显示num/den:printsys(num,den,‘s’)

  • 传递函数→状态空间:[A,B,C,D] = tf2ss(num,den)
  • 状态空间→传递函数:[num,den] = ss2tf(A,B,C,D) %默认为1个输入
  • 状态空间→零极点:[z,p,K] = ss2zp(A,B,C,D,iu) %iu为输入个数
  • 零极点→状态空间:[A,B,C,D] = zp2ss(z,p,K)
  • 传递函数→零极点:[z,p,K] = tf2zp(num,den)
  • 零极点→传递函数:[num,den] = zp2tf(z,p,K)
  • 连续时间→离散时间:[G,H] = c2d(A,B,Ts) %Ts是以秒为单位表示的采样周期

2.框图形式系统的表达方式

  • 串联 sys = series(sys1,sys2)
  • 并联 sys = parallel(sys1,sys2)
  • 反馈 sys = feedback(sys0,H) %默认为负反馈
  • 零极点对消 sys_min = minreal(sys)

3.瞬态响应

  • 单位阶跃响应:step(sys) %响应持续时间自动确定,或step(sys,t)
  • 单位脉冲响应:impulse(sys) %或impulse(sys,t)
  • 斜坡响应:在MATLAB中没有关于斜坡响应的命令,所以采用step命令或lsim命令
  • 任意输入的响应:lsim(sys,u,t) %给定t = 0:Δt:T,u是关于t的输入函数
  • 任意初始条件的响应:initial(sys,[initial condition],t)

4.根轨迹分析

  • 绘制根轨迹:rlocus(num,den,K)和rlocus(A,B,C,D,K)
    %在同一幅图上绘制两个或多个图形可以用命令hold进行
  • 求根轨迹上任意点的增益K:[K,r]=rlocfind(num,den)或[K,r]=rlocfind(A,B,C,D) %其中r是闭环极点

5.频域响应分析

  • 绘制Bode图:bode(num,den,w) %频率向量w=logspace(-2,3,100),0.01~1000rad/s范围内产生100个对数均匀分布的频率点
  • 绘制Nyquist图:nyquist(num,den)或nyquist(A,B,C,D) %[re,im,w]=nyquist(num,den)
  • 绘制Nichols图:nichols(num,den)或nichols(A,B,C,D) %[mag,phase,w]=nyquist(num,den)
  • 增益裕度和相角裕度:[Gm,Pm,wcp,wcg]=margin(sys) %Gm是增益裕度,Pm是相角裕度,wcp是相角穿越频率,wcg是增益穿越频率。

6.空间状态极点配置

  • 计算反馈增益矩阵K:
    ① K=acker(A,B,J) %单输入系统,基于艾克曼公式,期望的闭环极点可以包含多重极点(位于同一位置的几个极点)。
    ② K=place(A,B,J) %多输入系统,使系统稳定裕度最大化,鲁棒极点配置。
    %矩阵J由期望闭环极点组成

参考书籍:控制理论MATLAB教程/(美)Katsuhiko Ogata著;王诗宓,王峻译

你可能感兴趣的:(MATLAB)