2.5 MATLAB在控制系统建模中的应用
控制系统常用的数学模型有四种:传递函数模型(tf对象)、零极点模型(zpk对象)、框图模型和状态空间模型(ss对象)。经典控制理论中数学模型一般使用前三种模型,状态空间模型属于现代控制理论范畴。在本节中重点讨论传递函数模型和零极点增益模型在MATLAB中的表示方法、两者之间的相互转换,以及用MATLAB求解系统框图的传递函数模型。
2.5.1 传递函数模型
由前述可知,线性连续系统的传递函数模型一般可表示为

将系统的分子和分母多项式的系数,按依次降幂的方式以向量的形式输入给两个变量num和den,即可将传递函数模型输入MATLAB环境中。其指令格式为

用函数tf()来建立控制系统的传递函数模型,其调用格式为

【例2-26】 已知某控制系统的传递函数模型G(s)=,可用下面的指令输入MATLAB的工作空间中。
解:MATLAB程序如下。

【例2-27】 已知某控制系统的传递函数模型,可用下面的指令输入MATLAB的工作空间中。

解:MATLAB程序如下。

程序运行结果为

其中,conv()函数(标准的MATLAB函数)用来计算两个向量的卷积,多项式乘法也可以用这个函数来计算。该函数允许任意多层嵌套,从而完成多个多项式的乘积计算。
2.5.2 零极点模型
线性系统的传递函数还可以写成零极点的形式:

将系统增益K、零点-zi和极点-pj以向量的形式输入MATLAB工作空间,其指令格式为


用函数zpk()来建立系统的零极点模型,其指令格式为

【例2-28】 已知某系统的零极点模型,可用下面的指令输入MATLAB的工作空间中。

解:MATLAB程序如下。

程序运行结果为

需要提醒的是,对于单变量系统,其零极点均是用列向量来表示,故z、p向量中各项均用分号“;”隔开。
2.5.3 控制系统模型间的相互转换
1)零极点模型转换为传递函数模型:[num,den]=zp2tf(z,p,k)
2)传递函数模型转换为零极点模型:[z,p,k]=tf2zp(num,den)
【例2-29】 将已知的传递函数模型转换为零极点模型。
解:MATLAB程序如下。

程序运行结果为


2.5.4 控制系统连接框图的模型表示
1. 串联
在MATLAB中可将两个传递函数直接相乘,或者用series()函数实现。MATLAB的指令格式为

2. 并联
在MATLAB中可将两个传递函数直接相加,或者用parallel()函数实现。MATLAB的指令格式为

【例2-30】 两个子系统为

将两个系统分别按串联、并联方式连接。
解:MATLAB程序如下。

程序运行结果为


3. 反馈连接
将系统通过正、负反馈连接成闭环系统,在MATLAB中可用cloop()函数实现。MATLAB的指令格式为

该指令表示由传递函数表示的开环传递函数构成闭环系统。当sign=1时为正反馈;当sign=-1时为负反馈;sign缺省时,默认为负反馈。
在MATLAB中也可用cloop()函数实现。MATLAB的指令格式为

【例2-31】 已知两个子系统的传递函数为

将两个系统按反馈方式连接。
解:MATLAB程序如下。

程序运行结果为


【例2-32】 已知三个子系统的传递函数如下,其中G1(s)、G2(s)串级在前向通道,H(s)在反馈通道上,从而构成一个负反馈控制系统。

解:MATLAB程序如下。

程序运行结果为
