书籍:Matlab实用教程
工具:Matlab2021a
在线工具:https://www.cainiaojc.com/tool/octave/
缺少一些包
在线工具:https://octave-online.net/
比较健全。
电脑信息:Intel® Xeon® CPU E5-2603 v3 @ 1.60GHz
系统类型:64位操作系统,基于X64的处理器 windows10 专业版
第6章 线性控制系统分析与设计
6.1. 线性系统的描述
6.1.1 状态空间描述法
wn=1;
A=[0 1;-wn^2 -2*zeta*wn];
B=[0;wn^2];
C=[1 0];
D=0;
G=ss(A,B,C,D)

6.1.2 传递函数描述法
num=1;
den=[1 1.414 1];
G=tf(num,den)

6.1.3 零-极点描述法
num=1;
den=[1 1.414 1];
z=roots(num)
p=roots(den)
zpk(z,p,1)

num=1;
den=[1 1.414 1];
z=roots(num)
p=roots(den)
[r,p,k]=residue(num,den)

6.1.4 离散系统的数学描述
1、状态空间描述法
a=[-1.5 -0.5;1 0];
b=[1;0];
c=[0 0.5];
d=0;
G=ss(a,b,c,d,0.1)

2、脉冲传递函数描述法
num1=[0.5 0];
den=[1 -1.5 0.5];
G1=tf(num1,den,-1)

num2=[0 0.5];
den=[1 -1.5 0.5];
G2=filt(num2,den)

3、零-极点增益描述法
G3=zpk([0],[0.5 1],0.5,-1)

6.2 线性系统模型之间的转换
6.2.1 连续系统模型之间的转换
1、系统模型的转换
A、状态空间模型的获得
num=[0 3 2;1 2 3];
den=[3 5 2 1];
G11=tf(num(1,:),den)
G12=tf(num(2,:),den)
G=ss([G11;G12])

B、传递函数的获得:
num=[0 3 2;1 2 3];
den=[3 5 2 1];
G11=tf(num(1,:),den)
G12=tf(num(2,:),den)
G=ss([G11;G12])
G1=tf(G)


C、零-极点模型的获得
num=[0 3 2;1 2 3];
den=[3 5 2 1];
G11=tf(num(1,:),den)
G12=tf(num(2,:),den)
G=ss([G11;G12])
G1=tf(G)
G2=zpk(G)
G3=zpk(G1)


2、模型参数的获取
num=[0 3 2;1 2 3];
den=[3 5 2 1];
G11=tf(num(1,:),den)
G12=tf(num(2,:),den)
G=ss([G11;G12])
G1=tf(G)
G2=zpk(G)
G3=zpk(G1)
[a,b,c,d]=ssdata(G1)
[num,den]=tfdata(G2)
[z,p,k]=zpkdata(G)






3、模型类型的检验
继续上面的实例:
class(G)
ans = ss
isa(G,'tf')
ans = 0
6.2.2 连续系统与离散系统之间的转换
1、c2d命令
a=[0 1;-1 -1.414];
b=[0;1];
c=[1 0];
d=0;
G=ss(a,b,c,d);
Gd=c2d(G,0.1)

2、d2c命令
G=d2c(Gd)

3、d2d命令
Gd2=d2d(Gd,0.3)

6.2.3 模型对象的属性
1、模型对象的属性
2、get命令和set命令
num=1;
den=[1 1.414 1];
G=tf(num,den);
get(G)
num: p-by-m cell array of row vectors (m = number of inputs)
den: p-by-m cell array of row vectors (p = number of outputs)
tfvar: string (usually s or z)
inv: logical (true for negative powers of TF variable)
tsam: scalar (sample time in seconds)
inname: m-by-1 cell vector of strings
outname: p-by-1 cell vector of strings
ingroup: struct with indices as fields
outgroup: struct with indices as fields
name: string
notes: string or cell of strings
userdata: any data type
set(G,'den',[1 2 1])
G

3、直接获取和修改属性
G.den=[1 1.414 1];
G

6.3 结构框图的模型表示
1、串联结构
2、并联结构
3、反馈结构
G1=tf(1,[1 2 1])
G2=tf(1,[1 1]);
G3=tf(1,[2 1]);
G4=tf(1,[1 0]);
G12=G1+G2
G34=G3-G4
G=feedback(G12,G34,-1)
Transfer function 'G1' from input 'u1' to output ...
1
y1: -------------
s^2 + 2 s + 1
Continuous-time model.
Transfer function 'G12' from input 'u1' to output ...
s^2 + 3 s + 2
y1: ---------------------
s^3 + 3 s^2 + 3 s + 1
Continuous-time model.
Transfer function 'G34' from input 'u1' to output ...
-s - 1
y1: ---------
2 s^2 + s
Continuous-time model.
Transfer function 'G' from input 'u1' to output ...
2 s^4 + 7 s^3 + 7 s^2 + 2 s
y1: -------------------------------------
2 s^5 + 7 s^4 + 8 s^3 + s^2 - 4 s - 2
Continuous-time model.
G1=ss(tf(1,[1 2 1]));
G2=tf(1,[1 1]);
G12=G1+G2
G12.a =
x1 x2 x3
x1 0 -1 0
x2 1 -2 0
x3 0 0 -1
G12.b =
u1
x1 -1
x2 0
x3 1
G12.c =
x1 x2 x3
y1 0 -1 1
G12.d =
u1
y1 0
Continuous-time model.
4、复杂的结构框图
G1=tf(1,[1 0]);
G2=tf(1,[1 1 0]);
G3=tf(1,[1 1 0]);
G4=tf(-2,1);
G5=tf(-1,1);
G6=tf(1,[1 0]);
G7=tf(-1,[1 1]);
Sys=append(G1,G2,G3,G4,G5,G6,G7)
Transfer function 'Sys' from input 'u1' to output ...
1
y1: -
s
y2: 0
y3: 0
y4: 0
y5: 0
y6: 0
y7: 0
Transfer function 'Sys' from input 'u2' to output ...
y1: 0
1
y2: -------
s^2 + s
y3: 0
y4: 0
y5: 0
y6: 0
y7: 0
Transfer function 'Sys' from input 'u3' to output ...
y1: 0
y2: 0
1
y3: -------
s^2 + s
y4: 0
y5: 0
y6: 0
y7: 0
Transfer function 'Sys' from input 'u4' to output ...
y1: 0
y2: 0
y3: 0
y4: -2
y5: 0
y6: 0
y7: 0
Transfer function 'Sys' from input 'u5' to output ...
y1: 0
y2: 0
y3: 0
y4: 0
y5: -1
y6: 0
y7: 0
Transfer function 'Sys' from input 'u6' to output ...
y1: 0
y2: 0
y3: 0
y4: 0
y5: 0
1
y6: -
s
y7: 0
Transfer function 'Sys' from input 'u7' to output ...
y1: 0
y2: 0
y3: 0
y4: 0
y5: 0
y6: 0
-1
y7: -----
s + 1
Continuous-time model.
Q=[1 6 5;
2 1 7;
3 2 0;
4 3 0;
5 4 0;
6 2 0;
7 3 0;];
INPUTS=1;
OUTPUTS=4;
G=connect(Sys,Q,INPUTS,OUTPUTS)
warning: tf: converting to minimal state-space for MIMO TF interconnections
Transfer function 'G' from input 'u1' to output ...
-2 s - 2
y1: ---------------------------------------------
s^6 + 3 s^5 + 3 s^4 + 1 s^3 - 1 s^2 - 3 s - 3
Continuous-time model.
nblocks=7;
n1=1;d1=[1 0];
n2=1;d2=[1 1 0];
n3=1;d3=[1 1 0];
n4=-2;d4=1;
n5=-1;d5=1;
n6=1;d6=[1 0];
n7=-1;d7=[1 1];
blkbuild
Q=[1 6 5;
2 1 7;
3 2 0;
4 3 0;
5 4 0;
6 2 0;
7 3 0;];
INPUTS=1;
OUTPUTS=4;
[A,B,C,D]=connect(a,b,c,d,Q,INPUTS,OUTPUTS)
error: 'blkbuild' undefined near line 1, column 1
6.4 线性系统的时域分析
6.4.1 零输入响应分析
1、连续系统的零输入响应
G1=tf(12,[1 4]);
H=tf(1,[1 3]);
GG=feedback(G1,H)
G=ss(GG)
initial(G,[1 2])
Transfer function 'GG' from input 'u1' to output ...
12 s + 36
y1: --------------
s^2 + 7 s + 24
Continuous-time model.
G.a =
x1 x2
x1 8.882e-16 2.4
x2 -10 -7
G.b =
u1
x1 -3.6
x2 12
G.c =
x1 x2
y1 0 1
G.d =
u1
y1 0
Continuous-time model.

2、离散系统的脉冲响应
6.4.2 脉冲响应分析
1、连续系统的脉冲响应
impulse(G)

t=0:0.1:10;
y=impulse(G,t)
y =
1.2000e+01
7.5497e+00
4.0623e+00
1.6432e+00
1.6386e-01
-5.9848e-01
-8.7579e-01
-8.6531e-01
-7.1369e-01
-5.1764e-01
-3.3270e-01
-1.8457e-01
-7.9778e-02
-1.4242e-02
2.0712e-02
3.4565e-02
3.5596e-02
3.0085e-02
2.2258e-02
1.4605e-02
8.3333e-03
3.8090e-03
9.1778e-04
-6.7324e-04
-1.3494e-03
-1.4569e-03
-1.2637e-03
-9.5397e-04
-6.3875e-04
-3.7414e-04
-1.7943e-04
-5.2379e-05
1.9574e-05
5.1993e-05
5.9295e-05
5.2887e-05
4.0757e-05
2.7837e-05
1.6711e-05
8.3587e-06
2.7966e-06
-4.3865e-07
-1.9710e-06
-2.3984e-06
-2.2049e-06
-1.7357e-06
-1.2090e-06
-7.4291e-07
-3.8574e-07
-1.4311e-07
1.5897e-09
7.3178e-08
9.6345e-08
9.1548e-08
7.3676e-08
5.2335e-08
3.2882e-08
1.7658e-08
7.1104e-09
6.6947e-10
-2.6423e-09
-3.8397e-09
-3.7847e-09
-3.1170e-09
-2.2580e-09
-1.4494e-09
-8.0260e-10
-3.4562e-10
-6.0204e-11
9.1714e-11
1.5164e-10
1.5574e-10
1.3142e-10
9.7109e-11
6.3639e-11
3.6251e-11
1.6517e-11
3.9221e-12
-2.9957e-12
-5.9242e-12
-6.3760e-12
-5.5215e-12
-4.1630e-12
-2.7839e-12
-1.6281e-12
-7.7863e-13
-2.2505e-13
8.7922e-14
2.2846e-13
2.5960e-13
2.3114e-13
1.7789e-13
1.2135e-13
7.2742e-14
3.6295e-14
1.2055e-14
-2.0222e-15
-8.6705e-15
-1.0505e-14
-9.6384e-15
-7.5773e-15
2、离散系统的脉冲响应
a=[-2 0;0 -3];
b=[1;1];
c=[1 -4];
d=1;
dimpulse(a,b,c,d,1,10)
error: 'dimpulse' undefined near line 1, column 1
6.4.3 阶跃响应分析
1、连续阶跃响应
G1=tf(12,[1 4]);
H=tf(1,[1 3]);
G=feedback(G1,H)
step(G)
Transfer function 'G' from input 'u1' to output ...
12 s + 36
y1: --------------
s^2 + 7 s + 24
Continuous-time model.

t1=0:0.1:5;
y1=step(G,t1);
plot(t1,y1)

t2=0:0.5:5;
y2=step(G,t2);
plot(t2,y2)

2、离散系统的阶跃响应
6.4.4 任意输入的响应
1、连续系统的任意输入响应
t1=0:0.1:5;
u=sin(t);
G1=tf(1,[1 1.414 1])
G2=tf(1,[1 0.6 1])
lsim(G1,'r',G2,'bo',u,t)
Transfer function 'G1' from input 'u1' to output ...
1
y1: -----------------
s^2 + 1.414 s + 1
Continuous-time model.
Transfer function 'G2' from input 'u1' to output ...
1
y1: ---------------
s^2 + 0.6 s + 1
Continuous-time model.

2、离散系统的任意输入响应
num=[2 5 1];
den=[1 2 3];
t=0:0.1:5;
u=sin(t);
y=dlsim(num,den,u)
error: 'dlsim' undefined near line 1, column 3
6.4.5 系统的结构参数
1、极点和零点
num=[5 100];
den=[1 8 32 80 100];
G=tf(num,den);
p=pole(G)
[z,gain]=tzero(G)
[p,z]=pzmap(G)
p =
-1 + 3i
-1 - 3i
-3 + 1i
-3 - 1i
error: 'tzero' undefined near line 1, column 10
The 'tzero' function belongs to the control package from Octave Forge
but has not yet been implemented.
p =
-1 + 3i
-1 - 3i
-3 + 1i
-3 - 1i
z = -20
2、闭环系统的阻尼系数和固有频率
[wn,zeta]=damp(G)
wn =
3.1623
3.1623
3.1623
3.1623
zeta =
0.9487
0.9487
0.3162
0.3162
3、时域响应的稳态增益
[wn,zeta]=damp(G)
wn =
3.1623
3.1623
3.1623
3.1623
zeta =
0.9487
0.9487
0.3162
0.3162