我正在研究多输入单输出 (MISO) 系统的传递函数(传递矩阵)。该系统具有 32 个动态状态、4 个输入和 1 个输出。系统 A、B、C 和矩阵在 Matlab 代码中计算,状态空间模型创建为 sys=ss(A,B,C,D)。
我的问题是,为什么通过在“sys”(1 * 4结构)上应用“tf”函数获得的传递函数与通过在单个系统模型“sys(1)”上应用“tf”函数获得的传递函数不同, “sys(2)”、“sys(3)”和“sys(4)”,而个体“sys(1)”到“sys(4)”得到的系统矩阵与对应的矩阵和矩阵完全匹配“sys”的列?
我为一个简单的四阶系统尝试了同样的事情,它们完全匹配。我还尝试了一个 32 状态系统(与我的原始系统具有相同维度),其中所有系统矩阵都是由 randn 函数生成的。然后,我尝试通过对 sys 和 sys(1) 到 sys(4) 使用 cell2mat(T.den) 和 cell2mat(T.num) 来找到传递函数系数。所有分母系数都匹配。此外,除了传递函数之一,分子系数也匹配。
需要说明的是,在原例中,矩阵 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,:).'])