0 前言
本文参考
- 《控制系统仿真与计算机辅助设计 · 第2版》薛定宇 机械工业出版社
- 《MATLAB for Control Engineers》Katsuhiko Ogata
- 现代控制理论线性系统入门(一)状态方程描述下的动态系统
- 《现代控制理论基础》— 2 什么是状态与状态空间
本文已假设读者具有自动控制原理的理论基础
本教程笔记基于 MATLAB R2020a
1 线性系统的传递函数模型
在经典控制之中,连续线性系统一般可以用传递函数表示。还可以使用零极点来表示
我们知道传递函数的定义式为:
G ( s ) = C ( s ) R ( s ) = b 0 s m + b 1 s m − 1 + ⋅ ⋅ ⋅ + b m − 1 s + b m a 0 s n + a 1 s n − 1 + ⋅ ⋅ ⋅ + a n − 1 s + a n = M ( s ) N ( s ) G(s)={\frac{C(s)}{R(s)}}={\frac{b_0s^m+b_1s^{m-1}+···+b_{m-1}s+b_m}{a_0s^n+a_1s^{n-1}+···+a_{n-1}s+a_n}}={\frac{M(s)}{N(s)}} G(s)=R(s)C(s)=a0sn+a1sn−1+⋅⋅⋅+an−1s+anb0sm+b1sm−1+⋅⋅⋅+bm−1s+bm=N(s)M(s)
对分母包含高次多项式的传递函数,进行部分分式展开的计算是很费时间的。在这种情况下, 建议采用 MATLAB 来完成。 MATLAB 有一条命令能够获得 C ( s ) / R ( s ) C(s)/R(s) C(s)/R(s) 的部分分式展开式。它还有一条命令能够获得 C ( s ) / R ( s ) C(s)/R(s) C(s)/R(s) 的零点和极点。
G ( s ) = C ( s ) R ( s ) = n u m d e n = b 0 s m + b 1 s m − 1 + ⋅ ⋅ ⋅ + b m s + b m + 1 s n + a 1 s n − 1 + ⋅ ⋅ ⋅ + a n − 1 s + a n G(s)={\frac{C(s)}{R(s)}}={\frac{num}{den}}={\frac{b_0s^m+b_1s^{m-1}+···+b_{m}s+b_{m+1}}{s^n+a_1s^{n-1}+···+a_{n-1}s+a_n}} G(s)=R(s)C(s)=dennum=sn+a1sn−1+⋅⋅⋅+an−1s+anb0sm+b1sm−1+⋅⋅⋅+bms+bm+1
其中某些 a i a_i ai 和 b i b_i bi 可以是零。对于物理可实现系统来说,一定要满足 m ≤ n m ≤ n m≤n ,这种情况下又称为系统为正则(proper),若 m < n m < n m<n ,则称系统为严格正则。 n − m n-m n−m 又称为系统的相对阶次。
在 MATLAB中,行向量 num 和 den 具体指明了传递函数的分子和分母的系数。也就是说:
n u m = [ b 0 b 1 . . . b n ] d e n = [ 1 a 1 . . . a n ] num=[b_0 \quad b_1 \quad ... \quad b_n]\\den=[1 \quad a_1 \quad ... \quad a_n] num=[b0b1...bn]den=[1a1...an]
1.1 用一个对象表示传递函数模型 tf()
:
e g . G ( s ) = s 3 + 7 s 2 + 24 s + 24 s 4 + 10 s 3 + 35 s 2 + 50 s + 24 eg.\quad G(s)={\frac{s^3+7s^2+24s+24}{s^4+10s^3+35s^2+50s+24}} eg.G(s)=s4+10s3+35s2+50s+24s3+7s2+24s+24
则代码如下: