控制系统仿真(MATLAB版)(四)

s = tf('s');
G = (s^3+4*s^2+3*s+2)/(s^2*(s+1)*((s+4)^2+4))
G =
s^3 + 4 s^2 + 3 s + 2
-----------------------------
s^5 + 9 s^4 + 28 s^3 + 20 s^2
Continuous-time transfer function.
A = [-0.3,0.1,-0.05;1,0.1,0;-1.5,-8.9,-0.05];
B = [2;0;4];
C = [1,2,3];
D = 0;
G1 = ss(A,B,C,D)
G1 =
A =
x1 x2 x3
x1 -0.3 0.1 -0.05
x2 1 0.1 0
x3 -1.5 -8.9 -0.05
B =
u1
x1 2
x2 0
x3 4
C =
x1 x2 x3
y1 1 2 3
D =
u1
y1 0
Continuous-time state-space model.
求其闭环的零极点
G2 = feedback(G,1,-1);
get(G2)
Numerator: {[0 0 1 4 3 2]}
Denominator: {[1 9 29 24 3 2]}
Variable: 's'
IODelay: 0
InputDelay: 0
OutputDelay: 0
Ts: 0
TimeUnit: 'seconds'
InputName: {''}
InputUnit: {''}
InputGroup: [1×1 struct]
OutputName: {''}
OutputUnit: {''}
OutputGroup: [1×1 struct]
Notes: [0×1 string]
UserData: []
Name: ''
SamplingGrid: [1×1 struct]
num = G2.num{1,1}
num =
0 0 1 4 3 2
den = G2.den{1,1}
den =
1 9 29 24 3 2
[z,p,k] = tf2zp(num,den)
z =
-3.2695 + 0.0000i
-0.3652 + 0.6916i
-0.3652 - 0.6916i
p =
-3.9174 + 2.1007i
-3.9174 - 2.1007i
-1.1449 + 0.0000i
-0.0102 + 0.2972i
-0.0102 - 0.2972i
k =
1
G3 = feedback(G1,1,-1);
get(G3)
A: [3×3 double]
B: [3×1 double]
C: [1 2 3]
D: 0
E: []
Scaled: 0
StateName: {3×1 cell}
StateUnit: {3×1 cell}
InternalDelay: [0×1 double]
InputDelay: 0
OutputDelay: 0
Ts: 0
TimeUnit: 'seconds'
InputName: {''}
InputUnit: {''}
InputGroup: [1×1 struct]
OutputName: {''}
OutputUnit: {''}
OutputGroup: [1×1 struct]
Notes: [0×1 string]
UserData: []
Name: ''
SamplingGrid: [1×1 struct]
[z,p,k] = ss2zp(A,B,C,D)
z =
2.0748
-1.8677
p =
0.7646 + 0.0000i
-0.5073 + 0.5687i
-0.5073 - 0.5687i
k =
14

A = [1,2,3;4,5,6;7,8,0];
>> B = [4;3;2];
>> C = [1,2,3];
>> D = 0;
>> G = ss(A,B,C,D)
G =
A =
x1 x2 x3
x1 1 2 3
x2 4 5 6
x3 7 8 0
B =
u1
x1 4
x2 3
x3 2
C =
x1 x2 x3
y1 1 2 3
D =
u1
y1 0
Continuous-time state-space model.
zpk(G)
ans =
16 (s+0.7175) (s+9.407)
------------------------------
(s-12.12) (s+5.735) (s+0.3884)
Continuous-time zero/pole/gain model.
tf(G)
ans =
16 s^2 + 162 s + 108
-----------------------
s^3 - 6 s^2 - 72 s - 27
Continuous-time transfer function.
[z,p,k] = ss2zp(A,B,C,D)
z =
-0.7175
-9.4075
p =
12.1229
-0.3884
-5.7345
k =
16.0000
[num,den] = ss2tf(A,B,C,D)
num =
0 16.0000 162.0000 108.0000
den =
1.0000 -6.0000 -72.0000 -27.0000

>> num = [2 18 40];
>> den = [1 6 11 6];
>> G = tf(num,den)
G =
2 s^2 + 18 s + 40
----------------------
s^3 + 6 s^2 + 11 s + 6
Continuous-time transfer function.
>> zpk(G)
ans =
2 (s+5) (s+4)
-----------------
(s+3) (s+2) (s+1)
Continuous-time zero/pole/gain model.
>> ss(G)
ans =
A =
x1 x2 x3
x1 -6 -2.75 -1.5
x2 4 0 0
x3 0 1 0
B =
u1
x1 4
x2 0
x3 0
C =
x1 x2 x3
y1 0.5 1.125 2.5
D =
u1
y1 0
Continuous-time state-space model.

>> A = [0 1 0 0;0 0 1 0;0 0 0 1;-50,-48,-28.5,-9];
>> B = [0;0;0;1];
>> C = [10,2,0,0];
>> D = 0;
>> G = ss(A,B,C,D);
>> tf(G)
ans =
2 s + 10
----------------------------------
s^4 + 9 s^3 + 28.5 s^2 + 48 s + 50
Continuous-time transfer function.
>> zpk(G)
ans =
2 (s+5)
----------------------------------------
(s+4.458) (s+3.042) (s^2 + 1.5s + 3.687)
Continuous-time zero/pole/gain model.
>> [z,p,k] = ss2zp(A,B,C,D)
z =
-5
p =
-4.4576 + 0.0000i
-3.0419 + 0.0000i
-0.7502 + 1.7676i
-0.7502 - 1.7676i
k =
2
>> pzmap(G)


>> G1 = tf([2 6 5],[1 4 5 2]);
>> G2 = tf([1 4 1],[1 9 8]);
>> G3 = zpk([-3;-7],[-1;-4;-6],5);
>> G = series(G1,series(G2,G3))
G =
10 (s+3) (s+3.732) (s+7) (s+0.2679) (s^2 + 3s + 2.5)
----------------------------------------------------
(s+1)^4 (s+2) (s+4) (s+6) (s+8)
Continuous-time zero/pole/gain model.
>> minreal(G)
ans =
10 (s+3) (s+3.732) (s+7) (s+0.2679) (s^2 + 3s + 2.5)
----------------------------------------------------
(s+1)^4 (s+2) (s+4) (s+6) (s+8)
Continuous-time zero/pole/gain model.

>> G1 = zpk([-3],[-1;-1;-2],1);
>> G2 = tf([3,4,1],[5,12,3]);
>> parallel(G1,G2)
ans =
0.6 (s+0.287) (s^2 + 4.195s + 4.427) (s^2 + 0.8515s + 2.886)
------------------------------------------------------------
(s+1)^2 (s+2) (s+2.117) (s+0.2835)
Continuous-time zero/pole/gain model.

方法一
>> G1 = tf([1,1],[1,3,4]);
>> G2 = tf([1,3,5],[1,4,3,2,1]);
>> G = series(G1,G2);
>> ss(G)
ans =
A =
x1 x2 x3 x4 x5 x6
x1 -7 -4.75 -3.375 -1.188 -0.6875 -0.5
x2 4 0 0 0 0 0
x3 0 2 0 0 0 0
x4 0 0 2 0 0 0
x5 0 0 0 1 0 0
x6 0 0 0 0 0.5 0
B =
u1
x1 1
x2 0
x3 0
x4 0
x5 0
x6 0
C =
x1 x2 x3 x4 x5 x6
y1 0 0 0.125 0.25 0.5 0.625
D =
u1
y1 0
Continuous-time state-space model.

方法二
>> G11 = ss(G1);
>> G22 = ss(G2);
>> G12 = series(G11,G22)
G12 =
A =
x1 x2 x3 x4 x5 x6
x1 -4 -1.5 -1 -1 2 1
x2 2 0 0 0 0 0
x3 0 1 0 0 0 0
x4 0 0 0.5 0 0 0
x5 0 0 0 0 -3 -2
x6 0 0 0 0 2 0
B =
u1
x1 0
x2 0
x3 0
x4 0
x5 1
x6 0
C =
x1 x2 x3 x4 x5 x6
y1 0 0.25 0.75 2.5 0 0
D =
u1
y1 0
Continuous-time state-space model.

可见,系统的状态方程可能不唯一

>> G1 = [tf([1 2],[1 2 1]),tf(1,[1 3 2]);tf([1,1],[1,2]),tf([1,2],[1 5 6])];
>> G2 = [zpk([],[-1;-3],1.2),zpk([-1],[-2;-3],1);zpk(-1,[-2;-4],1),zpk(-2,[-3;-4],1)];
>> series(G1,G2)
ans =
From input 1 to output...
(s+1.599) (s+3) (s^2 + 3.219s + 2.857) (s^2 + 0.1815s + 2.32)
1: -------------------------------------------------------------
(s+1)^3 (s+2)^2 (s+3)^2
(s+2)^2 (s+4) (s+1) (s^2 + 3s + 4)
2: ----------------------------------
(s+2)^2 (s+3) (s+4)^2 (s+1)^2
From input 2 to output...
(s+2)^2 (s+2.046) (s+3) (s^2 + 0.9539s + 2.248)
1: -----------------------------------------------
(s+1)^2 (s+2)^3 (s+3)^3
(s+1) (s+2) (s+2.57) (s+4) (s^2 + 4.43s + 6.615)
2: ------------------------------------------------
(s+2)^3 (s+3)^2 (s+4)^2 (s+1)
Continuous-time zero/pole/gain model.
>> parallel(G1,G2)
ans =
From input 1 to output...
(s+4.652) (s+1.548) (s+1)
1: -------------------------
(s+1)^3 (s+3)
(s+5) (s+2) (s+1)
2: -----------------
(s+2)^2 (s+4)
From input 2 to output...
(s+2) (s^2 + 3s + 4)
1: --------------------
(s+2)^2 (s+3) (s+1)
2 (s+2) (s+3)^2
2: -------------------
(s+3)^2 (s+4) (s+2)
Continuous-time zero/pole/gain model.