我有4个传输功能,分别是G11,G12,G21和G22。如何将此4传递函数转换为状态空间模型?以下是我的代码,但状态空间模型的结果与使用SIMULINK的线性化不同。
g_num11=[4];
g_den11=[1 4];
g11=tf({g_num11},{g_den11});
g_num12=[5.338e-76];
g_den12=[1 8.674 18.7];
g12=tf({g_num12},{g_den12});
g_num21=[-1.5268e-79];
g_den21=[1 15.02 72.02 111.7];
g21=tf({g_num21},{g_den21});
g_num22=[2.539];
g_den22=[1 11.02 29.67];
g22=tf({g_num22},{g_den22});
g_plant=tf({g_num11 g_num12; g_num21 g_num22}, {g_den11 g_den12; g_den21 g_den22})
sys=ss(g_plant,'min')
%Convert transfer function model into state space model
[A,B,C,D]=ssdata(sys)
The results are shown below:
A =
-4.0000 -0.0000 -0.0000
-0.0000 -11.0200 -7.4175
0.0000 4.0000 -0.0000
B =
-2.0000 0.0000
0.0000 1.0000
0.0000 -0.0000
C =
-2.0000 0.0000 0.0000
0.0000 -0.0000 0.6348
D =
0 0
0 0
以下结果使用SIMULINK窗口中的线性分析进行线性化。
A =
-4.0000 -0.0000 -0.0000
-0.0000 -4.67400 -0.6744
0.0000 0.0000 -6.3480
B =
-4.0000 0.0000
0.0000 0.0000
0.0000 3.7650
C =
1.0000 0.0000 0.0000
0.0000 1.0000 0.0000
D =
0 0
0 0
感谢您的帮助=)
答案 0 :(得分:0)
转换为SS模型总是一个丑陋的过程,并且根据方法,您可以获得不同的表示。所以不要过分注意得到A B C和D的相等值。
此外,从TF转换的SS的状态通常与先前状态的存储信息无关。
要验证您是否有类似的SS系统,请输入一个脉冲响应:
impulse (sys, sysSimulink)
来自文档:
推荐的工作代表
您可以使用任何模型类型表示数字系统组件。 但是,数字LTI模型类型不太适合 数值计算。一般来说,建议您工作 使用状态空间(ss)或频率响应数据(frd)模型 原因如下:
使用高阶传递函数的计算精度(tf 或zpk模型)有时很差,特别是对于MIMO或高阶 系统。转移函数表示的转换可能会产生 失去准确性。
使用ss将tf或zpk模型转换为状态空间时, 软件自动执行平衡和缩放操作。 平衡和缩放提高了计算的数字精度 涉及模型。有关平衡和缩放的更多信息 状态空间模型,请参见缩放状态空间模型。