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类似这种
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()函数可以直接画出阶跃响应曲线
#和step()用法完全一致
任意输入的相应函数 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(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) %和前面两个用法类似
如果还有其他有用的东西会持续更新…