求G(s)=K/s(s+1)(s+3)的根轨迹图形
若开环传递函数不是多项式乘积形式,则不需用conv函数,conv函数可用于多项式乘法以及卷积。
num=[1,];%分子上的各项系数
%K=[1:10];
den=conv([1,0],conv([1,1],[1,3]));%三个括号的函数
%den=conv([1,0,0],[1,2 ]);%两个括号的函数
sys=tf(num,den);
rlocus(sys);%画出根轨迹图
%rlocus(sys,K)%通过指定开环增益k的变化范围来绘制系统的根轨迹图。
sgrid%在现存的屏幕根轨迹或零极点图上绘制出自然振荡频率wn、阻尼比矢量z对应的格线。
% [z,p,k]=tf2zp(num,den)%转化为零极点形式
% G=zpk(z,p,k)
%[k,p]=rlocfind(num,den);%求系统开环增益
通过指定开环增益k的变化范围来绘制系统的根轨迹图
k=1:10
bode图
num=[18];
den=conv([1,0],[1 4 6])
sys=tf(num,den)
bode(sys)
zpk函数
附:
matlab中根轨迹分析函数
pzmap:绘制线性系统的零极点图
rlocus:求系统根轨迹。
rlocfind:计算给定一组根的根轨迹增益。
sgrid:在连续系统根轨迹图和零极点图中绘制出阻尼系数和自然频率栅格。
[p,z]=pzmap(a,b,c,d):返回状态空间描述系统的极点矢量和零点矢量,而不在屏幕上绘制出零极点图。
[p,z]=pzmap(num,den):返回传递函数描述系统的极点矢量和零点矢量,而不在屏幕上绘制出零极点图。
pzmap(a,b,c,d)或pzmap(num,den):不带输出参数项,则直接在s复平面上绘制出系统对应的零极点位置,极点用×表示,零点用o表示。
pzmap(p,z):根据系统已知的零极点列向量或行向量直接在s复平面上绘制出对应的零极点位置,极点用×表示,零点用o表示。
rlocus(a,b,c,d)或者rlocus(num,den):根据SISO开环系统的状态空间描述模型和传递函数模型,直接在屏幕上绘制出系统的根轨迹图。开环增益的值从零到无穷大变化。
rlocus(a,b,c,d,k)或rlocus(num,den,k):通过指定开环增益k的变化范围来绘制系统的根轨迹图。
r=rlocus(num,den,k) 或者[r,k]=rlocus(num,den) :不在屏幕上直接绘出系统的根轨迹图,而根据开环增益变化矢量k ,返回闭环系统特征方程1+k*num(s)/den(s)=0的根r,它有length(k)行,length(den)-1列,每行对应某个k值时的所有闭环极点。或者同时返回k与r。
若给出传递函数描述系统的分子项num为负,则利用rlocus函数绘制的是系统的零度根轨迹。(正反馈系统或非最小相位系统)
[k,p]=rlocfind(a,b,c,d)或者[k,p]=rlocfind(num,den)
它要求在屏幕上先已经绘制好有关的根轨迹图。然后,此命令将产生一个光标以用来选择希望的闭环极点。命令执行结果:k为对应选择点处根轨迹开环增益;p为此点处的系统闭环特征根。
不带输出参数项[k,p]时,同样可以执行,只是此时只将k的值返回到缺省变量ans中。
sgrid:在现存的屏幕根轨迹或零极点图上绘制出自然振荡频率wn、阻尼比矢量z对应的格线。
sgrid(‘new’):是先清屏,再画格线。
sgrid(z,wn):则绘制由用户指定的阻尼比矢量z、自然振荡频率wn的格线