tf函数在大型系统中的应用

时间:2017-08-29 00:37:45

标签: matlab transfer-function

我正在研究多输入单输出(MISO)系统的传递函数(传递矩阵)。该系统具有32个动态,4个输入和1个输出。系统A,B,C和矩阵在Matlab代码中计算,状态空间模型创建为sys = ss(A,B,C,D)。

我的问题是,为什么通过应用" tf"来获得传递函数?函数on" sys" (1 * 4结构)不同于通过应用" tf"在各个系统模型上运行" sys(1)"," sys(2)"," sys(3)"," sys (4)",而系统矩阵由个人" sys(1)" to" sys(4)与相应的矩阵和矩阵完全匹配。 " sys"?的列

我为一个简单的四阶系统尝试了同样的事情,它们完全匹配。我也尝试过它的第32个状态系统(与原系统相同的尺寸),其中所有系统矩阵都是由randn函数生成的。然后,我试图通过使用cell2mat(T.den)和cell2mat(T.num)为sys和sys(1)到sys(4)来找到传递函数系数。所有分母系数都匹配。此外,除了一个传递函数之外,分子系数也匹配。

应该提到的是,在原始示例中,矩阵A是单数的,但是在合成示例2(维度32)中,系统矩阵的条件数是大约120。 你可以在下面找到代码。 非常感谢您的帮助。

clear all;
clc;
%% Building the system matrices
A=randn(32,32);
B=randn(32,4);
C=randn(1,32);
D=randn(1,4);
sys=ss(A,B,C,D); % creating the state space model
TFF=tf(sys); % calculating the tranfer matrix

%% extracting the numerator and denominator coefficients of 4 transfer 
 %functions
for i=1:4
Ti=TFF(i);
Tin(i,:)=cell2mat(Ti.num); % numerator coefficients
Tid(i,:)=cell2mat(Ti.den); % denominator coefficients
clear Ti
end

%% calculatingthe numerator and denominator coefficients based on individual 
 %transfer functions
TF1=tf(sys(1));
T1n=cell2mat(TF1.num);
T1d=cell2mat(TF1.den);

TF2=tf(sys(2));
T2n=cell2mat(TF2.num);
T2d=cell2mat(TF2.den);

TF3=tf(sys(3));
T3n=cell2mat(TF3.num);
T3d=cell2mat(TF3.den);

TF4=tf(sys(4));
T4n=cell2mat(TF4.num);
T4d=cell2mat(TF4.den);

num2str([T1n.'-Tin(1,:).']) % the error between the numerator coefficients 
 % of the TF1 by 2 aproaches
num2str([T2n.'-Tin(2,:).'])
num2str([T3n.'-Tin(3,:).'])
num2str([T4n.'-Tin(4,:).'])

num2str([T1d.'-Tid(1,:).'])
num2str([T2d.'-Tid(2,:).'])
num2str([T3d.'-Tid(3,:).'])
num2str([T4d.'-Tid(4,:).'])

1 个答案:

答案 0 :(得分:0)

这是几件事的混合物;因为在模型切换后得到的模型不能保证最小化你会得到一些差异,但是MIMO系统的子系统也不能保证与系统的SISO部分一致,这可以消除其他模式的一些极点如果输入没有对他们采取行动。

然而,超过5,6个传递矩阵在数值上很难执行操作。因此,尽量避免它们。检查子系统的其他属性,例如Bode图以进行比较