MATLAB判别控制系统的稳定性
需要用到的函数:
1.直接判定:eig函数
使用方法:
>> eig(A)
eig函数用于求取特征值和特征向量,此 MATLAB 函数 返回一个列向量,其中包含方阵 A 的特征值。
不论系统的模型A是传递函数、状态方程还是零极点模型,且不论系统是连续还是离散的,均可以使用eig函数。
2.图解判定:pzmap函数
使用方法:
>> pzmap(A)
用图形的方式绘制出系统所有特征根在S复平面上的位置,所以判定连续系统是否稳定只需看系统所有极点在S复平面上是否位于虚轴左侧即可。同样,对于离散系统,观察零极点的位置是否位于单位圆内即可判定其稳定性。
3.其他函数:控制系统模型建立,详见
MATLAB学习记录-传递函数的建模1(多项式形式的传递函数模型)-自动控制篇
MATLAB学习记录-传递函数的建模2(零-极点形式的传递函数模型)-自动控制篇
MATLAB学习记录-系统的数学模型-(状态空间表达式的建模)-自动控制篇
例:高阶连续系统稳定性的判断
G
(
s
)
=
10
s
4
+
50
s
3
+
100
s
2
+
100
s
+
40
s
7
+
21
s
6
+
184
s
5
+
870
s
4
+
2384
s
3
+
3664
s
2
+
2496
s
G\left(s\right)=\frac{{10s}^4+{50s}^3+100s^2+100s+40}{s^7+{21s}^6+{184s}^5+{870s}^4+{2384s}^3+{3664s}^2+2496s}
G(s)=s7+21s6+184s5+870s4+2384s3+3664s2+2496s10s4+50s3+100s2+100s+40
>> clear all
>> num=[10,50,100,100,40];
>> den=[1,21,184,870,2384,3664,2496,0];
>>%%输入系统的传递函数
>> G=tf(num,den) %建立系统的传递函数
G =
10 s^4 + 50 s^3 + 100 s^2 + 100 s + 40
---------------------------------------------------------------
s^7 + 21 s^6 + 184 s^5 + 870 s^4 + 2384 s^3 + 3664 s^2 + 2496 s
Continuous-time transfer function.
>> GG=feedback(G,1) %求系统单位反馈传递函数
GG =
10 s^4 + 50 s^3 + 100 s^2 + 100 s + 40
--------------------------------------------------------------------
s^7 + 21 s^6 + 184 s^5 + 880 s^4 + 2434 s^3 + 3764 s^2 + 2596 s + 40
Continuous-time transfer function.
>> pzmap(GG) %绘制零极点图
>> eig(GG) %求系统特征值
ans =
-6.9223 + 0.0000i
-3.6502 + 2.3020i
-3.6502 - 2.3020i
-2.0633 + 1.7923i
-2.0633 - 1.7923i
-2.6349 + 0.0000i
-0.0158 + 0.0000i
例:高阶离散系统稳定性的判断
H
(
z
)
=
6
z
2
−
0.6
z
−
0.12
z
4
−
z
3
+
0.25
z
2
+
0.25
z
−
0.125
H\left(z\right)=\frac{6z^2-0.6z-0.12}{z^4-z^3+{0.25z}^2+0.25z-0.125}
H(z)=z4−z3+0.25z2+0.25z−0.1256z2−0.6z−0.12
>> clear all
>> den=[1 -1 0.25 0.25 -0.125];
>> num=[6 -0.6 -0.12];
>> H=tf(num,den,'Ts',0.1)
H =
6 z^2 - 0.6 z - 0.12
-------------------------------------
z^4 - z^3 + 0.25 z^2 + 0.25 z - 0.125
Sample time: 0.1 seconds
Discrete-time transfer function.
>> z=tf('z','Ts',0.1)
z =
z
Sample time: 0.1 seconds
Discrete-time transfer function.
>> Gc=0.3*(z-0.6)/(z+0.8);
>> GG=feedback(H*Gc,1)
GG =
1.8 z^3 - 1.26 z^2 + 0.072 z + 0.0216
------------------------------------------------------
z^5 - 0.2 z^4 + 1.25 z^3 - 0.81 z^2 + 0.147 z - 0.0784
Sample time: 0.1 seconds
Discrete-time transfer function.
>> pzmap(GG),abs(eig(GG)')
ans =
1.1644 1.1644 0.5536 0.3232 0.3232
#修改了部分错误 12/25/2022