首先普及一下LTI各类对象之间可以进行相互转换,下面列出这些转换函数的调用格式。
1) sys=tf(sys) %将sys对象转换为TF模型
2) sys=zpk(sys) %转换为ZPK模型
3)sys=ss(sys) %转换为SS模型
4)sys=frd(sys,frequency) %转换为FRD模型
步入正题。
第一种方法
设系统的矩阵分别为A=[2,0,0;0,4,1;0,0,4];B=[1,0,1]';C=[1,1,0];D=0求取该系统的TF模型,如下图

例1
实现程序如下:
A=[2,0,0;0,4,1;0,0,4];B=[1,0,1]';C=[1,1,0];D=0;
[num,den]=ss2tf(A,B,C,D);
G=tf(num,den)
结果如下图:

结果
第二种方法
依旧借用例1,实现的程序如下:
A=[2,0,0;0,4,1;0,0,4];B=[1,0,1]';C=[1,1,0];D=0;
gss=ss(A,B,C,D);
gtf=tf(gss);
结果同方法一结果一样。
第三种方法
最后一种方法利用自控原理线性系统的传递函数公式求取,公式为:C*inv(SI-A)*B
此方法可以用来验证上述两种方法求取的传递函数正确性,对比此方法与上述两种方法有什么区别。
实现程序如下:
syms s GG gg;
A=[2,0,0;0,4,1;0,0,4];B=[1,0,1]';C=[1,1,0];D=0;
G=C*inv(s*eye(3)-A)*B
gg=simplify(GG);
结果如下图;

结果
经过通分之后,可以发现此结果与前两种方法一样。
经过上面的分析,上面三种方法根据各自喜好选择,各有各的优点。
另外再补充几个LTI各对象之间的转换调用格式
[z,p,k]=tf2zp(num,den) %将TF对象的属性转换为ZPK对象的属性
[A,B,C,D]=tf2ss(num,den) %将TF对象的属性转换为SS对象属性
[num,den]=zp2tf(z,p,k) %将ZPK对象的属性转换为TF对象的属性
[A,B,C,D]=zp2ss(z,p,k) %将ZPK对象的属性转换为SS对象的属性
[z,p,k]=ss2zp(A,B,C,D,iu) %将SS对象的属性转换为ZPK对象的属性