示例:num=[73.22 39.26 165.7 ]
den=[1 1.116 0.709 1.419]
num =
0 -0.1933 0.5872 0.2336
den =
1.0000 -0.2472 0.1775 -0.4286
>>
sysd = tf(num,den,0.01) %建立离散系统的TF模型
Transfer function:
-0.1933 z^2 + 0.5872 z + 0.2336
------------------------------------
z^3 - 0.2472 z^2 + 0.1775 z - 0.4286
Sampling time: 0.01
>> sysc = d2c(sysd)
%将离散系统转换为连续系统
Transfer function:
-21.12 s^2 - 1.012e004 s +
1.3e006
----------------------------------------
s^3 + 84.72 s^2 + 3.917e004 s + 1.04e006
第八章控制系统的数学模型
8.1线性定常系统的数学模型
8.1.1 传递函数模型
1. SISO系统的TF数学模型
MATLAB中用tf函数来建立控制原理中的传递函数模型,称之为TF模型。
【调用格式】
sys = tf(num,den) %建立以num为分子多项式、den为分母多项式的TF模型
sys = tf(num,den,'Property1',V1,...,'PropertyN',VN)
%初始化TF模型的其他属性
sys = tf('s') %建立拉普拉斯变换的自变量s的TF模型
【说明】
1. num和den分别是传递函数的分子多项式系数和分母多项式系数,按s的降幂排列,是细胞数组。
2. tf函数的返回值是一个对象,称之为TF对象,num和den是TF对象的属性。
例8.1.1 设某SISO系统的传递函数为2()210sGsss=++
试建立系统的TF模型。
解:【方法1】直接用分子和分母多项式系数建立TF模型
>>num=[1,0]; den=[1,2,10];
>>sys=tf(num,den) %建立系统的TF模型
Transfer function:
s
--------------
s^2 + 2 s + 10
>>sys.den{1}
%对SISO系统,den{1}表示传递函数的分母多项式系数向量
ans =
1 2 10
【方法2】用s因子和数学运算符建立TF模型
>> s = tf('s'); %建立s的TF模型
>> H = s/(s^2 + 2*s +10);
%用数学运算符建立系统的TF模型
2. MIMO系统的TF模型
在MATLAB中,num{i,j}和den{i,j}分别表示传递函数矩阵的第i行第j列的传递函数的分子多项式系数和分母多项式系数。()Gs
例8.1.2 设某MIMO系统的传递函数矩阵211()245ssGssss−⎡⎤⎢⎥+=⎢⎥+⎢⎥⎢⎥++⎣⎦
试建立系统的TF模型。
解:【方法1】直接用分子和分母多项式系数建立TF模型
118
>>N= {[1 -1];[1 2]}; D= {[1 1];[1 4
5]};
>>sys=tf(N,D) %建立系统的TF模型
Transfer function from input to output...
s - 1
#1: -----
s + 1
s + 2
#2: -------------
s^2 + 4 s + 5
【说明】#1为第1输出对第1输入的传递函数,#2为第2输出对第1输入的传递函数。
【方法2】用s因子和数学运算符建立TF模型
>>s = tf('s')
>>h11 = (s-1)/(s+1);
>>h21 = (s+2)/(s^2+4*s+5);
>> H = [h11; h21]
8.1.2 零极点模型
控制系统的数学模型可以用零点、极点和增益来描述,MATLAB称这种数学模型为零极点增益模型,即ZPK模型,并用zpk函数来建立这种数学模型。
【调用格式】
sys =zpk(z,p,k) %建立以z为零点,p为极点,k为增益的ZPK模型
sys = zpk(z,p,k,'Property1',V1,...,'PropertyN',VN)
%初始化ZPK模型的其他属性
sys = zpk('s') %建立拉普拉斯变换的自变量s的ZPK模型
【说明】
1.
z、p、k分别为系统的零点、极点和增益。z、p、k是细胞数组,对MIMO系统来说z{i,j},p{i,j},k{i,j}分别表示传递函数矩阵的第i行第j列的传递函数的零点、极点、增益。
()Gs
2. zpk函数的返回值是一个对象,称之为ZPK对象,z、p和k是ZPK对象的属性。
3. 如果没有零点,则z为空数组。
例8.1.3 设某SISO系统的传递函数为25(2)()(22sGssss+= ++
试建立系统的ZPK模型。
解:【方法1】直接用零点、极点、增益向量来建立ZPK模型
>>k=5; z=[-2]; p=[0, -1+j,
-1-j];
>>sys = zpk(z,p,k) %建立系统的ZPK模型
Zero/pole/gain:
5 (s+2)
-----------------
s (s^2 + 2s + 2)
【方法2】用s因子和数学运算符建立TF模型
>> s = zpk('s'); %建立s的ZPK模型
>> H = 5*(s+2)/(s*(s^2 + 2*s +10));
%用数学运算符建立系统的ZPK模型
例8.1.4 设某MIMO系统的传递函数矩阵
119
2213(5)(1)()2(22)0(1)(2)(3)sssGssssss−+⎡⎤⎢⎥+⎢⎥=⎢⎥−+⎢⎥−−−⎣⎦
试建立系统的ZPK模型。
解: >> Z = {[], [-5]; [1-i 1+i] , []};
P = {0, [-1 -1]; [1 2 3], []}; K = [-1, 3; 2, 0];
>> H = zpk(Z,P,K) %建立系统的ZPK模型
Zero/pole/gain from input 1 to output...
-1
#1: --
s
2 (s^2 - 2s + 2)
#2: -----------------
(s-1) (s-2) (s-3)
Zero/pole/gain from input 2 to output...
3 (s+5)
#1: -------
(s+1)^2
#2: 0
8.1.3 状态空间模型
现代控制理论用状态空间模型来描述系统的运动规律,在MATLAB中用ss函数来建立控制系统的状态空间模型,称之为SS模型。
【调用格式】
sys = ss(a,b,c,d) %建立状态空间模型
sys = ss(a,b,c,d,'Property1',V1,...,'PropertyN',VN)
%初始化模型的其他属性
sys = ss(d) %建立静态增益矩阵d的状态空间模型
【说明】
1. a,b,c,d分别表示状态方程的系统矩阵、输入矩阵,输出矩阵和传输矩阵。
2. ss函数的返回值是一个对象,称之为ss对象,a,b,c和d是ss对象的属性。
3. 如果d=0,ss函数可以直接用标量0作为输入变量,忽略了对d的维数要求。
例8.1.5 已知系统的状态空间描述为
112233010001110031xxxxuxx⎡⎤⎡⎤⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥=−−+⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥−⎣⎦⎣⎦⎣⎦⎣⎦&&&
[]123100xyxx⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦
试建立系统的SS模型传递函数。
解:>> A=[0 1 0;0 -1 -1;0 0
-3];B=[0;1;1];C=[1 0 0];D=0;
>> ss(A,B,C,D)
a =
x1 x2 x3 120
x1 0 1 0
x2 0 -1 -1
x3 0 0 -3
b =
u1
x1 0
x2 1
x3 1
c =
x1 x2 x3
y1 1 0 0
d =
u1
y1 0
Continuous-time model.
8.1.4 频