自动控制原理中的MATLAB函数以及用法总结

MATLAB与自动控制原理 简记

最近要进行自控实验考试,在这里记录一下分析自控问题需要用的到一些函数以及用法,以供自己查阅,之后可能会总结一下如何用MATLAB来解自控的题。

一、数学模型的表示

建立模型

数学模型的建立传递函数模型(tf)、状态空间模型(ss)、零极点增益模型(zpk) (三个指令)

tf(num,den)

传递函数用两个向量表示 num和den
如果是多项式怎么办?用conv比如说s^2(s+2)就是conv([1 0 0], [1 2]) (只能有两个变量,我人傻了)

ss(a,b,c,d)

x‘=Ax+Bu

y=Cx+D

ssdata()从状态空间模型提取状态矩阵

[a,b,c,d]=ssdata(sys)

zpk(z,p,k) (零点极点增益)

z:零点向量 p:极点向量 k:增益

模型直接转换

用’2’连接 比如zp2ss(sys)(zpk变成ss)

模型连接

1.输出反馈[numc,denc] = cloop(num,den,sign) sign=1为正反馈,-1为负反馈
2.反馈连接[numc,denc] = feedback(num1,den1,num2,den2,sign)
3.系统串联[numc,denc] = series(num1,den1,num2,den2)
4.系统并联[numc,denc] = (num1,den1,num2,den2)转换的话就是 tf2zp zp2tf类似这种

二、时域分析

单位阶跃响应函数step()

y=step(num,den,t) %时间向量t=[0:step:end]

[y,x,t]=step(num,den) %时间向量t由系统自动生成,x返回空矩阵

[y,x,t]=step(A,B,C,D,iu) %用于状态方程

#上述使用方法去掉等号及等号左边的变量,step()函数可以直接画出阶跃响应曲线

单位脉冲响应函数 impulse()

#和step()用法完全一致
任意输入的相应函数 lsim()

任意输入响应函数lsim()

lsim(sys1,u,t)
lsim(sys2,u,t,x0)
[Y,T,X]=lsim(sys1,u,t)
[Y,T,X]=lsim(sys2,u,t,x0)
其中,u 为输入信号,x0 为初始条件,t 为等间隔时间向量,sys1 为 tf 或者 zpk 模型,
sys2 为 ss 模型,Y 为响应输出,T 为仿真的时间,X 为系统状态变量。前两种方式可直
接绘制图形,后两种方式会得到响应数据。

阶跃响应相关参数计算

计算峰值

max(step(sys))
计算峰值时间

[y, x, t] = step(num, den);

tp = spline(y, t, max(y))

计算调节时间

while(y(k)>0.95*finalvalue)&&(y(k)<1.05*finalvalue)    
	k=k-1; 
end 

求根计算稳定性分析 roots
系统稳态误差分析

三、根轨迹

绘制零极点

pzmap(sys) %绘制系统的零极点图,零点用o表示,

根轨迹绘制

rlocus(num,den,k) %k为可选参数

[r,k] = rlocus(num,den,k) #不绘制根轨迹,r、k为返回的闭关极点向量和增益向量

根轨迹分析

可以直接点击画出的根轨迹图的某一点,会显示该点的增益(gain)、极点(pole)、阻尼比(damping)、超调量(overshoot)、频率(frequency)等参数值

或者用rlocfind或者rltool来分析

可以用sgrid命令将定常阻尼比与定常wn圆覆盖到根轨迹圆上

四、频域分析

绘制bode图并求取稳定裕度

bode(num,den) % 绘制bode图

[mag pha] = bode(num,den) %mag、pha是bode图的幅值和相位函数

margin(num,den) %计算连续系统的幅值裕度和相角裕度,并绘制bode图

[gm,pm,wcp,wcg] = margin(num,den) % 计算幅值裕度、相角裕度及对应的穿越频率

绘制奈斯特图

nyquist(num,den) %求连续系统的奈奎斯特曲线

[mag pha] = nyquist(num,den,w)

绘制尼克尔斯图

nichols(num,den) %和前面两个用法类似

如果还有其他有用的东西会持续更新…

你可能感兴趣的:(MATLAB与自动控制原理)