1.传递函数

(1)一般形式

此时传递函数为:

[公式]

其中,分子系数向量 [公式] 分母系数向量 [公式] 。在此,用 [公式]  [公式] 分别表示分子,分母参数向量。可简记为 [公式] 形式。

(2)零极点型

此时传递函数为:

[公式]

其中,系统零点向量 [公式] ,系统极点向量 [公式] 。可简记为 [公式] 形式。

(3)部分分式型

此时传递函数为:

[公式]

其中,极点留数向量 [公式] ,系统极点向量 [公式] 余式系数向量 [公式]  [公式] ,且 [公式] 时,原函数中分子阶次大于分母阶次,余式系统向量存在;当 [公式] 时,该向量不存在。可简记为 [公式] 形式。

2.状态空间表达式

表达式如下:

其中,A为系统系数矩阵,B为控制输入矩阵,C为系统输出矩阵,D为控制传输矩阵。可简记为 [公式] 形式。


Matlab代码部分

可能需要用到的命令

1、模型之间的互换

[num,den]=ss2tf(A,B,C,D)
[A,B,C,D]=tf2ss(num,den)

[公式] 一般型与状态空间表达式之间互化

[num,den]=zp2tf(z,p,k)
[z,p,k]=tf2ap(num,den)

[公式] 一般型与零极点型之间互化

[num.den]=residue(R,P,H)
[R,P,H]=residue(num,den)

[公式] 一般型型与部分分式型之间互化(在这里主要是利用residue函数求取极点的留数

[z,p,k]=ss2tf(A,B,C,D)
[A,B,C,D]=tf2ss(z,p,k)

[公式] 零极点型与状态空间表达式之间互化

2、关键参数提取

G=tf(num,den)
 //  G=tf(num,den,'inputdelay',tau) %增加参数为tao的延迟环节
G=zpk(Z,P,K)
G=ss(A,B,C,D)

以上几个命令可以通过关键参数,得到统一的系统模型,然后用于以下命令,快速得到其他参数向量

[num,den]=tfdata(G)
[A,B,C,D]=ssdata(G)
[Z,P,K]=zpkdata(G)

Example 1

已知有一系统传递函数 [公式] ,求该传递函数一般形式,部分分式型和状态空间表达式。

clear all
%% 建立系统模型

Z=[];
P=[-1 -2 0];
K=10;
G=zpk(Z,P,K); %获得传递函数G

%% 求一般形式关键参数num和den
[num,den]=tfdata(G);
num=cell2mat(num);
den=cell2mat(den);  %tfdata指令
得到的数据类型为cell,需要用
cell2mat转化为基础数据类型的普通数组

%% 求部分分式型关键参数R,P,H
[R,P,H]=residue(num,den);

%% 求状态空间表达式关键参数A,B,C,D
[A,B,C,D]=tf2ss(num,den);
%[A,B,C,D]=ssdata(G);

关于上述代码存在一个问题还没搞清楚,即tf2ss命令和ssdata命令所得到的状态空间模型四个矩阵不一致,水平有限,看不懂英文注释,在此选用tf2ss指令。