![自动控制原理](https://wfqqreader-1252317822.image.myqcloud.com/cover/789/41309789/b_41309789.jpg)
2.5 MATLAB在控制系统建模中的应用
控制系统常用的数学模型有四种:传递函数模型(tf对象)、零极点模型(zpk对象)、框图模型和状态空间模型(ss对象)。经典控制理论中数学模型一般使用前三种模型,状态空间模型属于现代控制理论范畴。在本节中重点讨论传递函数模型和零极点增益模型在MATLAB中的表示方法、两者之间的相互转换,以及用MATLAB求解系统框图的传递函数模型。
2.5.1 传递函数模型
由前述可知,线性连续系统的传递函数模型一般可表示为
![](https://epubservercos.yuewen.com/9864D0/21511156008175906/epubprivate/OEBPS/Images/54_06.jpg?sign=1739285287-pG5fvX7k9QtAE75Np69k72SSKGMIpyaD-0-2a36a80bc45b99ca8b5a18587523c8ac)
将系统的分子和分母多项式的系数,按依次降幂的方式以向量的形式输入给两个变量num和den,即可将传递函数模型输入MATLAB环境中。其指令格式为
![](https://epubservercos.yuewen.com/9864D0/21511156008175906/epubprivate/OEBPS/Images/55_01.jpg?sign=1739285287-xLDM8QeSfbBX233UB0rZACe86Sz3F4xG-0-0aea5de8408fda59b43764a6af592977)
用函数tf()来建立控制系统的传递函数模型,其调用格式为
![](https://epubservercos.yuewen.com/9864D0/21511156008175906/epubprivate/OEBPS/Images/55_02.jpg?sign=1739285287-sark3FGyy7NAHulnGWZuXHzMYHDhDuZy-0-427cc2fc9e3990fed25bcb0b6ed97661)
【例2-26】 已知某控制系统的传递函数模型G(s)=,可用下面的指令输入MATLAB的工作空间中。
解:MATLAB程序如下。
![](https://epubservercos.yuewen.com/9864D0/21511156008175906/epubprivate/OEBPS/Images/55_04.jpg?sign=1739285287-lZDXwQAJPLV9w2qfXwHjjQWvvj1IWQtR-0-1b4c14af1c5de24ff7ad0aeb9a47af1d)
【例2-27】 已知某控制系统的传递函数模型,可用下面的指令输入MATLAB的工作空间中。
![](https://epubservercos.yuewen.com/9864D0/21511156008175906/epubprivate/OEBPS/Images/55_05.jpg?sign=1739285287-qjKZgRY9khNEae3yYqofSNmvjdxp3cwe-0-e9e31413f59cd4c446ffda91212845b7)
解:MATLAB程序如下。
![](https://epubservercos.yuewen.com/9864D0/21511156008175906/epubprivate/OEBPS/Images/55_06.jpg?sign=1739285287-ZJ6AC1uEqZkVkbWFoBI3qfbxwFBWNfBS-0-e1410aa0487670ba72449d73e552f69e)
程序运行结果为
![](https://epubservercos.yuewen.com/9864D0/21511156008175906/epubprivate/OEBPS/Images/55_07.jpg?sign=1739285287-yyM3Aug7GqtEmmI0sl2ugIcZlMq28wY6-0-580d74a57897a4f4fa7dc2cdb67c033f)
其中,conv()函数(标准的MATLAB函数)用来计算两个向量的卷积,多项式乘法也可以用这个函数来计算。该函数允许任意多层嵌套,从而完成多个多项式的乘积计算。
2.5.2 零极点模型
线性系统的传递函数还可以写成零极点的形式:
![](https://epubservercos.yuewen.com/9864D0/21511156008175906/epubprivate/OEBPS/Images/55_08.jpg?sign=1739285287-JLmW65LZtisIBDfizrUTlbQ55p3yFPwv-0-aa1d7001d218b327890b4f426ef3ab7f)
将系统增益K、零点-zi和极点-pj以向量的形式输入MATLAB工作空间,其指令格式为
![](https://epubservercos.yuewen.com/9864D0/21511156008175906/epubprivate/OEBPS/Images/55_09.jpg?sign=1739285287-GPLRVMHWV7AiBkUimQJ1lw6oM3lJkeMl-0-8206e55f5c81fe36ceecedfc42635225)
![](https://epubservercos.yuewen.com/9864D0/21511156008175906/epubprivate/OEBPS/Images/56_01.jpg?sign=1739285287-i42MFMPwL13NY9kcUFPZIdd3NJ6bFcKH-0-4fccda10421074ec320fda14e9607084)
用函数zpk()来建立系统的零极点模型,其指令格式为
![](https://epubservercos.yuewen.com/9864D0/21511156008175906/epubprivate/OEBPS/Images/56_02.jpg?sign=1739285287-tzHoyc04jNeG1ok8p00Yeh2MukY0JIiE-0-3de51150e8874d657af5aa3b4cb2adba)
【例2-28】 已知某系统的零极点模型,可用下面的指令输入MATLAB的工作空间中。
![](https://epubservercos.yuewen.com/9864D0/21511156008175906/epubprivate/OEBPS/Images/56_03.jpg?sign=1739285287-xIq3NBMAk4EMr84xRCsRPJXvKQeQaUJQ-0-03e926f2867785f960b830ba4c3b5d27)
解:MATLAB程序如下。
![](https://epubservercos.yuewen.com/9864D0/21511156008175906/epubprivate/OEBPS/Images/56_04.jpg?sign=1739285287-GXC58SHY3TpDPLNf5ml9FS04hRb88pHp-0-d9a2d08fd6499ae8425904a727193188)
程序运行结果为
![](https://epubservercos.yuewen.com/9864D0/21511156008175906/epubprivate/OEBPS/Images/56_05.jpg?sign=1739285287-D9gooeGto0whXU9bDBV9SOnmPTnz2DHb-0-5ed001baf510a8d8e2dd94ab539334ef)
需要提醒的是,对于单变量系统,其零极点均是用列向量来表示,故z、p向量中各项均用分号“;”隔开。
2.5.3 控制系统模型间的相互转换
1)零极点模型转换为传递函数模型:[num,den]=zp2tf(z,p,k)
2)传递函数模型转换为零极点模型:[z,p,k]=tf2zp(num,den)
【例2-29】 将已知的传递函数模型转换为零极点模型。
解:MATLAB程序如下。
![](https://epubservercos.yuewen.com/9864D0/21511156008175906/epubprivate/OEBPS/Images/56_07.jpg?sign=1739285287-7WMPe2eGBpTmgsv95XVaARyGdqhMsiVj-0-d6df2fc08e2e0c89c77469794cf4d071)
程序运行结果为
![](https://epubservercos.yuewen.com/9864D0/21511156008175906/epubprivate/OEBPS/Images/56_08.jpg?sign=1739285287-5UGlbkY3sjXEvkQsY4X6Rh9gvy9wccV5-0-717f05b3266012c85091c72411bacd01)
![](https://epubservercos.yuewen.com/9864D0/21511156008175906/epubprivate/OEBPS/Images/57_01.jpg?sign=1739285287-GoaIRaJmSfWcToO7oL56bMkpOOVa0jjN-0-a5eee6ea5ab45190f9275990bfee1e43)
2.5.4 控制系统连接框图的模型表示
1. 串联
在MATLAB中可将两个传递函数直接相乘,或者用series()函数实现。MATLAB的指令格式为
![](https://epubservercos.yuewen.com/9864D0/21511156008175906/epubprivate/OEBPS/Images/57_02.jpg?sign=1739285287-24SGosGRDQ2msllGNct7hlpRtVmMIBge-0-cc97518a9cd7f673ec710fca984e9af0)
2. 并联
在MATLAB中可将两个传递函数直接相加,或者用parallel()函数实现。MATLAB的指令格式为
![](https://epubservercos.yuewen.com/9864D0/21511156008175906/epubprivate/OEBPS/Images/57_03.jpg?sign=1739285287-7e5qfbD3062w2Au1BI03oZ6zxIWW6alE-0-bf20e1de38656db979040ac5e1c12558)
【例2-30】 两个子系统为
![](https://epubservercos.yuewen.com/9864D0/21511156008175906/epubprivate/OEBPS/Images/57_04.jpg?sign=1739285287-ZU6xm2fAIOaNi0sYKmJF0X9mLfHkhUVd-0-dcc04f9cbf3946eb3bd26fdac45ec173)
将两个系统分别按串联、并联方式连接。
解:MATLAB程序如下。
![](https://epubservercos.yuewen.com/9864D0/21511156008175906/epubprivate/OEBPS/Images/57_05.jpg?sign=1739285287-UWMxCbUNVu4TtZQYW0L9fGHMBw9v4OMF-0-f0625cf9c81413c85a43dffbf13d94bc)
程序运行结果为
![](https://epubservercos.yuewen.com/9864D0/21511156008175906/epubprivate/OEBPS/Images/57_06.jpg?sign=1739285287-5sFKjb9VvQwXozf3SRvJQoLRQA7Y6wN6-0-28070e30c4b8f82971ff9c855fa6f3fb)
![](https://epubservercos.yuewen.com/9864D0/21511156008175906/epubprivate/OEBPS/Images/58_01.jpg?sign=1739285287-qH27wxrVSBBsMmrspeBQk3E65fl0MGbV-0-5b4bdd7c42f9e104407113613b42f43b)
3. 反馈连接
将系统通过正、负反馈连接成闭环系统,在MATLAB中可用cloop()函数实现。MATLAB的指令格式为
![](https://epubservercos.yuewen.com/9864D0/21511156008175906/epubprivate/OEBPS/Images/58_02.jpg?sign=1739285287-GTUPyldKabGpLp0PvjAt6PrqFm4FMTvX-0-55f0ef6606f8359ff4702fa79ea1ab6b)
该指令表示由传递函数表示的开环传递函数构成闭环系统。当sign=1时为正反馈;当sign=-1时为负反馈;sign缺省时,默认为负反馈。
在MATLAB中也可用cloop()函数实现。MATLAB的指令格式为
![](https://epubservercos.yuewen.com/9864D0/21511156008175906/epubprivate/OEBPS/Images/58_03.jpg?sign=1739285287-r7DrfzWBWhceAzO0gtB2XRBUxc6De9yr-0-75b33f16f8f28647068d0fbb4e2de183)
【例2-31】 已知两个子系统的传递函数为
![](https://epubservercos.yuewen.com/9864D0/21511156008175906/epubprivate/OEBPS/Images/58_04.jpg?sign=1739285287-00xvjSncUQ7RZQklHQF2IytZKK6RhKCS-0-55375d51373adab7879e25417292bae7)
将两个系统按反馈方式连接。
解:MATLAB程序如下。
![](https://epubservercos.yuewen.com/9864D0/21511156008175906/epubprivate/OEBPS/Images/58_05.jpg?sign=1739285287-FzVe4ryyDlP1iB4V0HJ5pG4rJNipVAw9-0-7af1bb9ffdf1bc7379682fab05374073)
程序运行结果为
![](https://epubservercos.yuewen.com/9864D0/21511156008175906/epubprivate/OEBPS/Images/58_06.jpg?sign=1739285287-L9W2gpVPLQhqApfiyi58ZUxJa5pHRw87-0-9aa3176a1ef4142fb5baa294a189bbf8)
![](https://epubservercos.yuewen.com/9864D0/21511156008175906/epubprivate/OEBPS/Images/59_01.jpg?sign=1739285287-wzyUZ7DId0IMHdyjp12QeNgukO2MRi3a-0-d4dad4255d38aa81e60b4b3bff2cb6ac)
【例2-32】 已知三个子系统的传递函数如下,其中G1(s)、G2(s)串级在前向通道,H(s)在反馈通道上,从而构成一个负反馈控制系统。
![](https://epubservercos.yuewen.com/9864D0/21511156008175906/epubprivate/OEBPS/Images/59_02.jpg?sign=1739285287-iak2ZX1nbto7HDd6ZUnmbbROzywc4n68-0-430cac1c8d194614d2cf09ad94a5b434)
解:MATLAB程序如下。
![](https://epubservercos.yuewen.com/9864D0/21511156008175906/epubprivate/OEBPS/Images/59_03.jpg?sign=1739285287-MFQNZEVVJFEpMbBMGVa1c1UBCRWjb8na-0-30dee84b20d221b639bdd197dba2f0f0)
程序运行结果为
![](https://epubservercos.yuewen.com/9864D0/21511156008175906/epubprivate/OEBPS/Images/59_04.jpg?sign=1739285287-pgVxzu7A85FEjD4tVJaYcW3GakiiX1KI-0-5ae422f5941e26569d8fe273751cdc99)