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

传递函数、零极点增益与状态空间三种模型转换的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

你可能感兴趣的:(matlab,状态空间极点)