Применение функции tf для больших систем

Я смотрю на передаточные функции (передаточная матрица) системы с несколькими входами и одним выходом (MISO). Система имеет 32 динамических состояния, четыре входа и один выход. Система A, B, C и матрицы вычисляются в коде Matlab, а модель пространства состояний создается как sys=ss(A,B,C,D).

Мой вопрос заключается в том, почему передаточные функции, полученные путем применения функции «tf» к «sys» (структура 1 * 4), отличаются от тех, которые получены путем применения функции «tf» к отдельным системным моделям «sys (1)», "sys(2)", "sys(3)" и "sys(4)", тогда как системные матрицы, полученные индивидуумами от "sys(1)" до "sys(4), полностью совпадают с соответствующими матрицами и матрицами" столбцы "sys"?

Я попробовал то же самое для простой системы 4-го порядка, и они полностью совпадают. Я также попробовал это для системы с 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,:).'])

person Mhatami    schedule 29.08.2017    source источник
comment
Предоставьте минимальный воспроизводимый пример, для которого функции передачи отличаются.   -  person Sardar Usama    schedule 29.08.2017
comment
@SardarUsama Я включил код в тело.   -  person Mhatami    schedule 30.08.2017
comment
передаточные функции могут обрабатывать только системы с одним входом и одним выходом (SISO). Рассмотрите возможность использования представления в пространстве состояний.   -  person CroCo    schedule 24.10.2017


Ответы (1)


Это смесь нескольких вещей; поскольку результирующая модель не обязательно будет минимальной сама по себе после переключения модели, вы получите некоторые несоответствия, но также не гарантируется, что подсистема системы MIMO согласуется с частью системы SISO, которая может удалить некоторые из полюсов других режимов. если вход не действует на них.

Однако с передаточными матрицами более 5,6 численно ужасно выполнять операции. Поэтому старайтесь избегать их. Проверьте другие свойства подсистем, такие как графики Боде для сравнения

person percusse    schedule 18.10.2017
comment
Конечно могут. Что невозможно? Откройте Matlab и введите G = tf(rss(5,3,2)); - person percusse; 24.10.2017
comment
@CroCo Да, и передаточная матрица - это одна из записей, которая является передаточной функцией. Поскольку они являются линейными операторами, выполняется принцип суперпозиции. - person percusse; 25.10.2017
comment
@CroCo rss(n) дает (r) случайную (s) таблицу (s) систему. rss(n,m,p) дает случайную стабильную систему MIMO p-by-m - person percusse; 25.10.2017
comment
Давайте продолжим обсуждение в чате. - person CroCo; 25.10.2017