传递函数、零极点增益与状态空间转换的matlab算法实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

传递函数、零极点增益与状态空间三种模型转换的MATLAB算法实现
一、引言
微分方程是自控控制系统最原始的数学模型,它反映系统动态运行规律。

时域分析中要用拉普拉斯变换定义传递函数,再做其它转化。

为了方便我们对自动控制理论的理解和学习,本人总结了传递函数、零极点增益与状态空间三种模型转换的MATLAB算法,用处多多。

二、状态空间模型转换为传递函数、零极点增益模型
1、MATLAB算法
%将状态空间模型x(t)=Ax(t)+Bu(t),y(t)=Cx(t)+Du(t)转化成传递函数G(s)=num(s)/den(s)
%或零极点模型G(s)=k(s+z1)(s+z2)...(s+zm)/(s+p1)(s+p2)...(s+pn)的函数ssto2.m
%调用格式G=ssto2(key,A,B,C,D),其中输入参数A,B,C,D为状态空间四个矩阵,输出参数当key=1
%时为传递函数;当key=2时,为状态空间模型
function G=ssto2(key,A,B,C,D)
if key==1
sys=ss(A,B,C,D);
G=tf(sys),
elseif key==2
sys=ss(A,B,C,D);
G=zpk(sys),
end
2、例题分析
【例1】已知一加压液流箱系统,该系统的状态变量是液位h(t)与料浆总压H(t),输入变量是料浆流入量u1(t)与空气流入量u2(t),输出变量就是状态变量H(t)与h(t)本身,系统状态空间模型为
H(t)
ℎ(t)=−0.39120.01234
−0.0220
H(t)
ℎ(t)+
0.033440.01234
0.0008960
u1(t)
u2(t) y1(t)
y2(t)=11
H(t)
ℎ(t)+00
u1(t)
u2(t)
求多个输入到输出的传递函数模型与多个输入到输出的零极点增益模型。

>> clear;
A=[-0.3912,0.01234;-0.022,0];
B=[0.03344,0.01234;0.000896,0];
C=[1,1];D=[0,0];
key=1;G=ssto2(key,A,B,C,D);
key=2;G=ssto2(key,A,B,C,D);
G =
From input 1 to output:
0.03434 s - 0.0003741
--------------------------
s^2 + 0.3912 s + 0.0002715
From input 2 to output:
0.01234 s - 0.0002715
--------------------------
s^2 + 0.3912 s + 0.0002715
Continuous-time transfer function.
G =
From input 1 to output:
0.034336 (s-0.0109)
------------------------
(s+0.3905) (s+0.0006952)
From input 2 to output:
0.01234 (s-0.022)
------------------------
(s+0.3905) (s+0.0006952)
Continuous-time zero/pole/gain model.
三、传递函数模型转换为状态空间、零极点增益模型
1、MATLAB算法
%将传递函数模型G(s)=num(s)/den(s)转换成零极点模型
%G(s)=k(s+z1)(s+z2)...(s+zm)/(s+p1)(s+p2)...(s+pn)
%或状态空间模型x(t)=Ax(t)+Bu(t),y(t)=Cx(t)+Du(t)的函数
%tfto2.m,函数的调用格式为G=tfto2(key,n,d)
%其中输入参数n与d为传递函数分子、分母均按s的降幂排列的两个向量
%输出参数key=1时,为零极点模型;key=2时,为状态空间模型
%sys = tf(num,den)命令可以建立一个传递函数,其中分子和分母分别为num和den。

输出sys 是储存传递函数数据的传递函数目标。

function G=tfto2(key,n,d)
if key==1
sys=tf(n,d);
G=zpk(sys),
elseif key==2
sys=tf(n,d);
G=ss(sys),
end
2、例题分析
,将其转换为状态空间与零极点模型。

【例2】设一系统传递函数G s=6(s+4)
(s+1)(s+2)(s+3)
>> clear;n=[6 24];d=[1 6 11 6];
key=1;G=tfto2(key,n,d);
key=2;G=tfto2(key,n,d);
G =
6 (s+4)
-----------------
(s+3) (s+2) (s+1)
Continuous-time zero/pole/gain model.
G =
a =
x1 x2 x3
x1 -6 -2.75 -1.5
x2 4 0 0
x3 0 1 0
b =
u1
x1 2
x2 0
x3 0
c =
x1 x2 x3
y1 0 0.75 3
d =
u1
y1 0
Continuous-time state-space model.
四、零极点增益模型转换为状态空间、传递函数模型
1、MATLAB算法
%将零极点模型转化成传递函数模型G(s)=num(s)/den(s)或状态空间模型
%x(t)=Ax(t)+Bu(t),y(t)=Cx(t)+Du(t)的函数zpkto2.m,函数调用格式为
%G=zpkto2(key,z,p,k),其中输入参数z,p,k为系统零点、系统极点、系统增益%当输入参数key=1时,为传递函数模型,key=2时为状态空间模型function G=zpkto2(key,z,p,k)
if key==1
sys=zpk(z,p,k);
G=tf(sys),
elseif key==2
sys=zpk(z,p,k);
G=ss(sys),
end
2、例题分析
【例3】对【例2】的程序进行验证。

>> clear;k=6;z=-4;p=[-1,-2,-3];
key=1;G=zpkto2(key,z,p,k);
G =
6 s + 24
----------------------
s^3 + 6 s^2 + 11 s + 6
Continuous-time transfer function.
【例4】调用ssto2.m函数验证。

>> clear;A=[-6 -2.75 -1.5;4 0 0;0 1 0];B=[2;0;0];C=[0 0.75 3]; D=0;key=1;G=ssto2(key,A,B,C,D);
key=2;G=ssto2(key,A,B,C,D);
G =
6 s + 24
----------------------
s^3 + 6 s^2 + 11 s + 6
Continuous-time transfer function.
G =
6 (s+4)
-----------------
(s+3) (s+2) (s+1)
Continuous-time zero/pole/gain model.。

相关文档
最新文档