1,010
社区成员
1.熟练掌握线性系统的各种模型描述。
2.熟练掌握模型之间的转换。
3.熟练掌握结构图传递函数的化简。
线性系统的传递函数模型可以更一般地表示成复数变量的有理函数形式如下:
由下列的命令格式就可以轻易地将函数模型输入到MATLAB环境中:
,
亦即,将系统的分子和分母多项式的系数按降幂的方式以向量的形式输入给两个变量和。值得注意的是,用户可以用任意的变量名来输入系统的系数向量。
在控制系统工具箱中,函数由传递函数分子分母给出的变量构造出单个的传递函数对象。该函数的调用格式为:
其中,分别为系统的分子和分母多项式系数向量。返回的变量为系统的传递函数对象。
已知一个简单的传递函数模型:,试用MATLAB建立系统模型。
>> num=[1 5];
>> den=[1 2 3 4 5];
>> G=tf(num,den)
Transfer function:
s + 5
----------------------------------
s^4 + 2 s^3 + 3 s^2 + 4 s + 5
零极点模型是线性时不变系统的另外一种数学模型,是将传递函数的分子分母多项式进行因式分解。传递函数的零极点形式为:
其中,是系统增益,是系统零点,是系统极点。
MATLAB使用命令可以实现由零极点得到传递函数模型。
语法:
说明:为零点列向量;为极点列向量;为增益。
得出系统的零极点,并由零极点获得传递函数。
>> num=[1 5];
>> z=roots(num)
z =
-5
>> den=[1 2 3 4 5];
>> p=roots(den)
p =
0.2878 + 1.4161i
0.2878 - 1.4161i
-1.2878 + 0.8579i
-1.2878 - 0.8579i
>> zpk(z,p,1)
Zero/pole/gain:
(s+5)
--------------------------------------------------------
(s^2 + 2.576s + 2.394) (s^2 - 0.5756s + 2.088)
控制系统的传递函数也可以用部分分式法表示,部分分式法可以归类于零极点增益描述法,部分分式法是将传递函数表示成部分分式或留数形式:
MATLAB中可以使用命令来实现由传递函数得出部分分式的极点和系数。
将传递函数转换成部分分式法,得出各系数。
>> num=[1 5];
>> den=[1 2 3 4 5];
>> [r p k]=residue(num,den)
r =
0.3612 - 0.3164i
0.3612 + 0.3164i
-0.3612 - 0.2103i
-0.3612 + 0.2103i
p =
-1.2878 + 0.8579i
-1.2878 - 0.8579i
0.2878 + 1.4161i
0.2878 - 1.4161i
k =
[]
线性系统模型的不同描述方法之间存在内在的等效关系,因此可以相互转换。MATLAB提供的相互转换命令如下:
函数:
调用格式:
功能:传递函数转换为零极点描述。
函数:
调用格式:
功能:零极点描述转换为传递函数。
试找出系统模型为:的零极点和增益。
>> num=[1 5];
>> den=[1 2 3 4 5];
>> G=tf(num,den)
Transfer function:
s + 5
----------------------------------
s^4 + 2 s^3 + 3 s^2 + 4 s + 5
>> num=[1 -0.5 2];
>> den=[1 0.4 1];
>> [z,p,k]=tf2zp(num,den)
z =
0.2500 + 1.3919i
0.2500 - 1.3919i
p =
-0.2000 + 0.9798i
-0.2000 - 0.9798i
k =
1
传递函数G(s)输入后,分别对分子和分母多项式做因式分解,则可以求出系统的零、极点,Matlab提供了多项式求根函数roots(),其调用格式为:
roots(p)
式中,p为多项式。(多项式的写法请参见Matlab教材)
例如:求多项式的根,可由下列语句完成:
>> p=[1,3,0,4];
>>r=roots(p)
r=-3.3533
0.177+1.0773i
0.177-1.0773i
反过来,若已知特征多项式的特征根,可调用Matlab中的poly()函数来求得多项式降幂排列时候各项的系数,如上例
>>poly(r)
p=1.0000 3.0000 0.0000 4.0000
控制系统的模型通常是由相互连接的模块构成的,模块通过串联、并联和反馈构成结构框图。MATLAB提供了由复杂结构框图得出传递函数的方法。
(1)串联结构,SISO的串联结构是两个模块串联在一起,如图1.1所示。
图 1.1 串联结构 图 1.2 并联结构
图 1.3 反馈结构图 图 1.4 结构框图
实现串联结构传递函数的命令:
(2)并联结构,SISO的并联结构是两个模块并联在一起,如图1.2所示。
实现并联结构传递函数的命令:
(3)反馈结构是前向通道和反馈通道构成正反馈和负反馈,如图1.3所示。
实现反馈结构传递函数的命令:
说明:或省略,则表示为负反馈,否则为正反馈。
根据系统结构框图求出整个系统的传递函数,结构框图如图1.4所示,其中
,,,
>> G1=tf(1,[1 2 1])
Transfer function:
1
----------------
s^2 + 2 s + 1
>> G2=tf(1,[1 1]);
>> G3=tf(1,[2 1]);
>> G4=tf(1,[1 0]);
>> G12=G1+G2
Transfer function:
s^2 + 3 s + 2
------------------------
s^3 + 3 s^2 + 3 s + 1
>> G34=G3-G4
Transfer function:
-s - 1
------------
2 s^2 + s
>> G=feedback(G12,G34,-1)
Transfer function:
2 s^4 + 7 s^3 + 7 s^2 + 2 s
------------------------------------------
2 s^5 + 7 s^4 + 8 s^3 + s^2 - 4 s - 2
1.熟练掌握线性系统的各种模型描述。
2.熟练掌握模型之间的转换。
3.熟练掌握结构图传递函数的化简。
线性系统的传递函数模型可以更一般地表示成复数变量的有理函数形式如下:
由下列的命令格式就可以轻易地将函数模型输入到MATLAB环境中:
,
亦即,将系统的分子和分母多项式的系数按降幂的方式以向量的形式输入给两个变量和。值得注意的是,用户可以用任意的变量名来输入系统的系数向量。
在控制系统工具箱中,函数由传递函数分子分母给出的变量构造出单个的传递函数对象。该函数的调用格式为:
其中,分别为系统的分子和分母多项式系数向量。返回的变量为系统的传递函数对象。
已知一个简单的传递函数模型:,试用MATLAB建立系统模型。
>> num=[1 5];
>> den=[1 2 3 4 5];
>> G=tf(num,den)
Transfer function:
s + 5
----------------------------------
s^4 + 2 s^3 + 3 s^2 + 4 s + 5
零极点模型是线性时不变系统的另外一种数学模型,是将传递函数的分子分母多项式进行因式分解。传递函数的零极点形式为:
其中,是系统增益,是系统零点,是系统极点。
MATLAB使用命令可以实现由零极点得到传递函数模型。
语法:
说明:为零点列向量;为极点列向量;为增益。
得出系统的零极点,并由零极点获得传递函数。
>> num=[1 5];
>> z=roots(num)
z =
-5
>> den=[1 2 3 4 5];
>> p=roots(den)
p =
0.2878 + 1.4161i
0.2878 - 1.4161i
-1.2878 + 0.8579i
-1.2878 - 0.8579i
>> zpk(z,p,1)
Zero/pole/gain:
(s+5)
--------------------------------------------------------
(s^2 + 2.576s + 2.394) (s^2 - 0.5756s + 2.088)
控制系统的传递函数也可以用部分分式法表示,部分分式法可以归类于零极点增益描述法,部分分式法是将传递函数表示成部分分式或留数形式:
MATLAB中可以使用命令来实现由传递函数得出部分分式的极点和系数。
将传递函数转换成部分分式法,得出各系数。
>> num=[1 5];
>> den=[1 2 3 4 5];
>> [r p k]=residue(num,den)
r =
0.3612 - 0.3164i
0.3612 + 0.3164i
-0.3612 - 0.2103i
-0.3612 + 0.2103i
p =
-1.2878 + 0.8579i
-1.2878 - 0.8579i
0.2878 + 1.4161i
0.2878 - 1.4161i
k =
[]
线性系统模型的不同描述方法之间存在内在的等效关系,因此可以相互转换。MATLAB提供的相互转换命令如下:
函数:
调用格式:
功能:传递函数转换为零极点描述。
函数:
调用格式:
功能:零极点描述转换为传递函数。
试找出系统模型为:的零极点和增益。
>> num=[1 5];
>> den=[1 2 3 4 5];
>> G=tf(num,den)
Transfer function:
s + 5
----------------------------------
s^4 + 2 s^3 + 3 s^2 + 4 s + 5
>> num=[1 -0.5 2];
>> den=[1 0.4 1];
>> [z,p,k]=tf2zp(num,den)
z =
0.2500 + 1.3919i
0.2500 - 1.3919i
p =
-0.2000 + 0.9798i
-0.2000 - 0.9798i
k =
1
传递函数G(s)输入后,分别对分子和分母多项式做因式分解,则可以求出系统的零、极点,Matlab提供了多项式求根函数roots(),其调用格式为:
roots(p)
式中,p为多项式。(多项式的写法请参见Matlab教材)
例如:求多项式的根,可由下列语句完成:
>> p=[1,3,0,4];
>>r=roots(p)
r=-3.3533
0.177+1.0773i
0.177-1.0773i
反过来,若已知特征多项式的特征根,可调用Matlab中的poly()函数来求得多项式降幂排列时候各项的系数,如上例
>>poly(r)
p=1.0000 3.0000 0.0000 4.0000
控制系统的模型通常是由相互连接的模块构成的,模块通过串联、并联和反馈构成结构框图。MATLAB提供了由复杂结构框图得出传递函数的方法。
(1)串联结构,SISO的串联结构是两个模块串联在一起,如图1.1所示。
图 1.1 串联结构 图 1.2 并联结构
图 1.3 反馈结构图 图 1.4 结构框图
实现串联结构传递函数的命令:
(2)并联结构,SISO的并联结构是两个模块并联在一起,如图1.2所示。
实现并联结构传递函数的命令:
(3)反馈结构是前向通道和反馈通道构成正反馈和负反馈,如图1.3所示。
实现反馈结构传递函数的命令:
说明:或省略,则表示为负反馈,否则为正反馈。
根据系统结构框图求出整个系统的传递函数,结构框图如图1.4所示,其中
,,,
>> G1=tf(1,[1 2 1])
Transfer function:
1
----------------
s^2 + 2 s + 1
>> G2=tf(1,[1 1]);
>> G3=tf(1,[2 1]);
>> G4=tf(1,[1 0]);
>> G12=G1+G2
Transfer function:
s^2 + 3 s + 2
------------------------
s^3 + 3 s^2 + 3 s + 1
>> G34=G3-G4
Transfer function:
-s - 1
------------
2 s^2 + s
>> G=feedback(G12,G34,-1)
Transfer function:
2 s^4 + 7 s^3 + 7 s^2 + 2 s
------------------------------------------
2 s^5 + 7 s^4 + 8 s^3 + s^2 - 4 s - 2