173
k =
1 0 0 % одна управляемая мода
>> syspo=ss(ap,bp,cp,0);
>> tf(syspo) % ПФ преобразованной системы не изменилась
Transfer function:
s^2 + 3 s + 2
----------------------
s^3 + 6 s^2 + 11 s + 6
Все формы модели в пространстве состояния, создаваемые
MATLAB, не совпадают с общепринятыми в СНГ каноническими
управляемым и наблюдаемым представлениями, основанными на ме-
тоде фазовых переменных. Этот пробел призваны компенсировать
специально разработанные и приводимые далее функции пользовате-
ля tf2cs() и tf2os(). Первая по числителю и знаменателю передаточной
функции выводит каноническую управляемую форму, причем предла-
гаются два варианта этой функции: с вычислением матриц делением
полинома числителя ПФ на полином знаменателя
function [a,b,c,d]=tf2cs(num,den)
a=flipud(fliplr(compan(den)));
b=flipud(eye(length(den)-1,1));
[d,c]=deconv(num/den(1),den/den(1));
c=fliplr(c); c=[c zeros(1,length(b))]; c=c(1:length(b));
и с вычислением элементов матрицы с по правилу c
i
= b
n+1-i
– a
n+1-i
∙d
function [a,b,c,d]=tf2cs(num,den)
a=flipud(fliplr(compan(den)));
b=fliplr(eye(1,length(den)-1))';
num=[zeros(1,length(den)-length(num)) num/den(1)];
d=num(1); c=num-den/den(1)*d; c=fliplr(c(2:end));
Результат работы обоих вариантов функции совпадает до нуле-
вого порядка числителя и знаменателя передаточной функции
>> num=[1 3 2]; den=[1 5 11 15];
>> [a, b, c, d]=tf2cs(num,den)
a =
0 1 0
0 0 1
-15 -11 -5
b =
0
0