文档介绍:MATLAB在自动控制理论中的应用
1 用MATLAB进行部分分式展开
考虑下列传递函数
式中的某些值可能为零,在MATLAB的行向量中,num和den分别表示传递函数的分子和分母的系数,即
命令[r,p,k]=residue(num,den)
将求出多项式B(s) 和A(s)之比的部分分式展开式中的留数\极点和余项.
例1: 对下述传递函数展开
解:对于该传递函数有如下程序(例16):
num=[2 5 3 6]
den=[1 6 11 6]
[r,p,k]=residue(num,den)
其中,r为留数列向量, p为极点列向量,k为余项列向量,
例2:(传递函数具有重根的情况)(例32)
num=[0 1 2 3]; %用分号只参与计算但不显示
den=[1 3 3 1];
[r p k]=residue(num,den)
r=
p=
-
-
-
2、求特征方程的根
利用求根命令roots,可以求得多项式的根.(poly([p1 p2…pi])命令可以在已知根的情况下求多项式)
例: 求的根
p=[1 2 3 4]; roots(p)
ans =
-
- +
- -
poly([1,2,3]) 或 p1=1;p2=2;p3=3;poly([p1,p2,p3])
ans =
1 -6 11 -6
2 将部分分式展开式返回到多项式之比
命令:
[num,den]=residue(r,p,k)
printsys(num,den,’s’)
将以s多项式之比的形式打印出传递函数
num=[0 1 2 3]
den=[1 3 3 1]
[r p k]=residue(num,den)
[num,den]=residue(r,p,k)
printsys(num,den,'s')
3 用MATLAB求函数的零点和极点
[z,p,k]=tf2zp (num,den)
例:求如下传递函数的零极点,
程序为:
num=[0 0 4 16 12]
den=[1 12 44 48 0]
[z,p,k]=tf2zp (num,den)
Printsys(num,den,’s’)
4 已知零点、极点求传递函数
z=[-1];
p=[-2;-4;-8];
K=12;
[num,den]=zp2tf(z,p,k);
printsys(num,den)
5 求串联、并联和反馈(闭环)传递函数
命令:
[num,den]=series(num1,den1,num2,den2)
[num,den]=parallel(num1,den1,num2,den2)
[num,den]=feedback(num1,den1,num2,den2)
例:
num1=[0 0 10]; den1=[1 2 10];
num2=[0 5]
den2=[1 5]
[num,den]=series(num1,den1,num2,den2);
Printsys(num,den)
6 瞬态响应分析
如果已知num和den,则命令
step(num,den),
step(num,den,t)
sys=tf(num,den);step(sys)
将会产生单位阶跃响应图(在阶跃命令中,t为用户指定时间)
当阶跃命令的左端含有变量时,如
[y,x,t]=step(num,den,t)
显示屏上不会含有响应曲线,必须利用plot命令去查看响应曲线。矩阵y和x分别包含系统在计算时间点t求出的输出响应和状态响应