канон

Пространство состояний каноническая реализация

Синтаксис

csys = canon(sys,type)
[csys,T]= canon(sys,type)
csys = canon(sys,'modal',condt)

Описание

csys = canon(sys,type) преобразовывает линейную модель sys в каноническую модель в пространстве состояний csys. Аргумент type задает, является ли csys в сопутствующей форме или модальном.

[csys,T]= canon(sys,type) также возвращает преобразование состояния координатное T, который связывает состояния модели в пространстве состояний sys к состояниям csys.

csys = canon(sys,'modal',condt) задает верхнюю границу condt на количестве условия преобразования блока-diagonalizing.

Входные параметры

sys

Любая линейная модель динамической системы, за исключением моделей frd.

type

Каноническая форма csys, заданного как одно из следующих значений:

condt

Значение положительной скалярной величины, задающее верхнюю границу на количестве условия преобразования блока-diagonalizing, которое преобразовывает sys в csys. Этот аргумент доступен только, когда type является 'modal'.

Увеличьте condt, чтобы уменьшать размер кластеров собственного значения в матрице A csys. Установка condt = Inf diagonalizes A.

Значение по умолчанию: 1e8

Выходные аргументы

csys

Модель (ss) пространства состояний. csys является реализацией пространства состояний sys в канонической форме, заданной type.

T

Матрица, задающая преобразование между вектором состояния x модели в пространстве состояний sys и вектором состояния xc csys:

xc = Tx

.

Этот аргумент доступен только, когда sys является моделью в пространстве состояний.

Примеры

свернуть все

Рассмотрите систему с удвоенными полюсами и кластерами близких полюсов:

G(s)=100(s-1)(s+1)s(s+10)(s+10.0001)(s-(1+i))2(s-(1-i))2

Создайте линейную модель этой системы и преобразуйте ее в модальную каноническую форму.

G = zpk([1 -1],[0 -10 -10.0001 1+1i 1-1i 1+1i 1-1i],100);
Gc = canon(G,'modal');

Система, G, имеет пару соседних полюсов в s=-10 и s=-10.0001. G также имеет два комплексных полюса кратности 2 в s=1+i и s=1-i. В результате модальная форма имеет блок размера 2 для двух полюсов рядом s=-10, и блок размера 4 для комплексных собственных значений.

Gc.A
ans = 7×7

         0         0         0         0         0         0         0
         0    1.0000    1.0000         0         0         0         0
         0   -1.0000    1.0000    2.0548         0         0         0
         0         0         0    1.0000    1.0000         0         0
         0         0         0   -1.0000    1.0000         0         0
         0         0         0         0         0  -10.0000    8.0573
         0         0         0         0         0         0  -10.0001

Разделите два полюса рядом s=-10 путем увеличения значения количества условия преобразования блока-diagonalizing. Значение по умолчанию номера условия 1e8.

Gc2 = canon(G,'modal',1e10);
Gc2.A
ans = 7×7

         0         0         0         0         0         0         0
         0    1.0000    1.0000         0         0         0         0
         0   -1.0000    1.0000    2.0548         0         0         0
         0         0         0    1.0000    1.0000         0         0
         0         0         0   -1.0000    1.0000         0         0
         0         0         0         0         0  -10.0000         0
         0         0         0         0         0         0  -10.0001

Матрица A Gc2 включает отдельные диагональные элементы для полюсов рядом s=-10. Стоимость увеличения числа условия A - то, что матрица B включает некоторые большие значения.

format shortE
Gc2.B
ans = 7×1

   3.2000e-01
  -6.5691e-03
   5.4046e-02
  -1.9502e-01
   1.0637e+00
   3.2533e+05
   3.2533e+05

Оцените модель в пространстве состояний, которая свободно параметризована.

load icEngine.mat
z = iddata(y,u,0.04);
FreeModel = n4sid(z,4,'InputDelay',2);

Преобразуйте предполагаемую модель в сопутствующую каноническую форму.

CanonicalModel = canon(FreeModel,'companion');

Получите ковариацию получившейся формы путем выполнения обновления нулевой итерации параметров модели.

opt = ssestOptions;
opt.SearchOptions.MaxIterations = 0;
CanonicalModel = ssest(z,CanonicalModel,opt);

Сравните доверительные границы частотной характеристики FreeModel к CanonicalModel.

h = bodeplot(FreeModel,CanonicalModel,'r.');
showConfidence(h)

Доверительные границы частотной характеристики идентичны.

Больше о

свернуть все

Модальная форма

В модальной форме A является блочно диагональной матрицей. Размер блока обычно 1 на 1 для действительных собственных значений и 2 на 2 для комплексных собственных значений. Однако, если существуют повторенные собственные значения или кластеры соседних собственных значений, размер блока может быть больше.

Например, для системы с собственными значениями (λ1,σ±jω,λ2), модальная матрица A имеет форму

[λ10000σω00ωσ0000λ2]

Сопутствующая форма

В сопутствующей реализации характеристический полином системы появляется явным образом в крайнем правом столбце матрицы A. Для системы с характеристическим полиномом

p(s)=sn+α1sn1++αn1s+αn

соответствующий компаньон матрица A

A=[00....0αn100..0αn1010.:::0..::0..10α20....01α1]

Сопутствующее преобразование требует, чтобы система была управляема от первого входа. Сопутствующая форма плохо обусловливается для большинства вычислений пространства состояний; избегайте использования его, если это возможно.

Алгоритмы

Команда canon использует команду bdschur, чтобы преобразовать sys в модальную форму и вычислить преобразование T. Если sys не является моделью в пространстве состояний, алгоритм сначала преобразовывает его в пространство состояний с помощью ss.

Сокращение к сопутствующей форме использует преобразование подобия состояния на основе матрицы [1] управляемости.

Ссылки

[1] Kailath, T. Линейные системы, Prentice Hall, 1980.

Смотрите также

| |

Представлено до R2006a